初始化
git init // 初始化
git status // 查看当前状态
git log // 日志文件
git log --patch // 日志文件详细信息
git config --global user.name "" // 配置用户名
git config --global user.email "" // 配置邮箱
ssh-keygen -t rsa -C ‘你的邮箱’ // 生成公钥
cat ~/.ssh/id_rsa.pub // 查看公钥
- 文件夹中无被git跟踪的文件时,不会被git 跟踪
touch temp/.gitkeep // 给temp文件夹创建跟踪
提交
git add [file1] [file2] // 添加一个或多个文件到暂存区
git add // 把当前目录下得所有文件改动都添加到暂存区
git add -A // 把当前仓库内所有文件改动都添加到暂存区
git commit -m "提交信息" // 暂存区到本地分支
git reset HEAD readme.md // 撤销上一次关于readme.md的git add
git reset HEAD^ readme.md // 撤销上一次关于readme.md的git commit
git reset --hard commitId // 直接回滚到commitId版本
git push --set-upstream origin branch1 // 推送分支并建立关联关系
git remote add "远程库名" // 添加一个远程版本库关联
git remote rm "库名" // 删除某个远程版本库关联
// 比如我们本地有个初始化好的仓库,同时还有一个创建好的远程空仓库,那么我们就可以执行一下操作让他们关联起来
git remote add origin xxx.git // 先添加到本地仓库
git push -u origin master // 表示把当前仓库的 master 分支和远端仓库的 master 分支关联起来,后面我们执行 push 或者 pull 都可以非常方便的进行操作了。
分支操作
git checkout -b "分支名" // 创建并切换到该分支
git checkout "分支名" // 切换到该分支
git branch -d "分支名" // 删除该分支,未集成时会报错
git branch -D "分支名" // 强制删除该分支
// 解决分支冲突
// 当主分支无新提交 可以进行快进合并时,提交到本地仓库后直接切换到主分支进行合并
git checkout master
git merge "需合并分支"
git merge --abort // 当发生冲突 git 无法进行工作时,停止合并,git回到可工作状态
// 当主分支也有新提交 无法进行快进合并时,提交到本地仓库后先切换到主分支
git checkout master
git rebase "需合并分支"
git add .
拉取
git pull // 和远程分支已建立关联
git pull origin branch1 // 未建立关联
git fetch //拉取到本地 但不合并
git merge origin/[当前分支名] // 将本地变更提交到本地仓库后 和远程拉下来的代码进行合并
删除
如果不需要某个文件直接右键删除,那么这个文件的记录还是会被保存到远端仓库,别人还是能看得到你这个信息,所以我们需要先从 git 仓库中删掉这个文件。
git rm .env // 执行完这个命令就表示 .env 文件从 git 仓库中删除了,配合 .gitignore 就能保证以后所有的 .env 文件变更都不用担心被提交到远程仓库。
git rm -r dist // 如果我们要删除的是一个目录,那么加上 -r 参数就好了。
- Commit Message
- feat: 新特性
- fix: 修改问题
- refactor: 代码重构
- docs: 文档修改
- style: 代码格式修改, 注意不是 css 修改
- test: 测试用例修改
- chore: 其他修改, 比如构建流程, 依赖管理.
- scope: commit 影响的范围, 比如: route, component, utils, build...
- subject: commit 的概述, 建议符合 [50/72 formatting](https://link.juejin.cn?target=https%3A%2F%2Flink.zhihu.com%2F%3Ftarget%3Dhttps%253A%2F%2Fstackoverflow.com%2Fquestions%2F2290016%2Fgit-commit-messages-50-72-formatting "https://link.zhihu.com/?target=https%3A//stackoverflow.com/questions/2290016/git-commit-messages-50-72-formatting")
- body: commit 具体修改内容, 可以分为多行, 建议符合 [50/72 formatting](https://link.juejin.cn?target=https%3A%2F%2Flink.zhihu.com%2F%3Ftarget%3Dhttps%253A%2F%2Fstackoverflow.com%2Fquestions%2F2290016%2Fgit-commit-messages-50-72-formatting "https://link.zhihu.com/?target=https%3A//stackoverflow.com/questions/2290016/git-commit-messages-50-72-formatting")
- footer: 一些备注, 通常是 BREAKING CHANGE 或修复的 bug 的链接.
git stash(储存区)
- `git stash save 'xxx'`: 储存变更
- `git stash list`: 查看储存区所有提交列表
- `git stash pop`: 弹出并应用最近的一次储存区的代码提交
- `git stash drop stash@{n}`: 删除某次储存记录
- `git stash clear`: 清楚所有 stash 信息
它的数据将被存在你仓库 .git 文件下的 refs/stash 里。
题外话
vim 基础使用
vim "文件名" // 创建该文件 并进入vim模式
// [正常模式]切[插入模式]
- 输入a、i、o
// [插入模式]切[正常模式]
- 点击esc
// [正常模式]切[底行模式]
- 「shift + ;」, 其实就是输入「:」
// 退出
- w //(保存当前文件)
- wq //(输入「wq」,存盘并退出vim)
- q! //(输入q!,不存盘强制退出vim)
vim mkdir touch
mkdir 创建文件夹(目录)
touch 创建文件
vim/vi 打开一个文本编辑器