安装
Windows
Linux
1 | sudo apt install git |
MacOS
1 | brew install git |
说明
工作区:未添加暂存的文件存放的地方
暂存区:git add 后的文件存放的地方


文件状态分为:
- untrack:新建的文件,未添加到暂存区
- modified:原有的文件被修改,且未添加到暂存区
- staged:已添加到暂存区
- deleted:已删除
- committed:已提交
配置
1 | --global 表示本机所有仓库都使用这个配置 |
初始化仓库
在项目根目录执行,初始化Git仓库。
1 | git init |
初始化后出现一个隐藏文件夹.git。
添加与提交
未添加到暂存区的修改不会被提交。
1 | 添加文件 / 跟踪 / 暂存 |
查看修改
1 | 查看当前仓库文件状态 |
删除
1 | 删除指定文件并将该删除操作直接添加到暂存区 |
撤销
1 | 撤销已有文件的未暂存修改,其中 -- 表示后面无参数了,避免与切换分支指令混淆 |

分支管理
分支说明




这种情况下把dev合并到master,可以直接让master指向dev,即Fast-Forward。
创建、查看分支
1 | git branch dev # 创建 dev 分支 |
git checkout容易与前面的撤销指令混淆,推荐使用git switch:
1 | git switch -c dev # 创建并切换到 dev 分支 |
合并分支
在dev分支上的提交master分支上不可见,除非将二者合并。
1 | 将 dev 分支合并到当前所在分支上 |
删除分支
1 | 删除 dev 分支 |
配置SSH公钥
1 | ssh-keygen -t rsa -C "youremail@example.com" -f ~/.ssh/id_rsa.yourname |
其中-t用于指定密钥类型。-C用于为密钥添加注释,通常填写邮箱或其他标识信息,但注释内容不会影响实际功能。-f用于指定生成的密钥对的路径及名称,默认为~/.ssh/id_rsa。
通过配置config文件可以让不同用户不同域名使用不同的密钥对。
创建~/.ssh/config文件,输入如下内容:
1 | 张三访问 example.com 的时候,用的是 ~/.ssh/id_rsa 这个私钥 |
最后将公钥~/.ssh/id_rsa.pub上传到代码托管平台即可。
远程仓库
关联远程仓库
1 | git remote add origin git@github.com:YourGithubName/RepoName.git |
origin是Git中远程库的默认叫法,也可以改成别的。这里远程仓库的全名是git@github.com:YourGithubName/RepoName.git,用origin来指代。
克隆 / 拉取
1 | 使用 SSH,速度最快 |
推送
输入下面的指令将本地库的内容推送到远程库中:
1 | 第一次推送 master 分支加上 -u,可以把本地的 master 和远程 master 关联。后续不需要 -u |
解绑
1 | git remote rm origin |
关联远程分支
upstream是本地分支默认对应的远程分支。
例如git push -u origin feature-123中的-u,是--set-upstream的缩写。该命令除了推送代码,还会将当前本地分支默认对应的远程分支设为feature-123,这样以后该分支直接git pull或git push都是对远程feature-123分支操作。
1 | 手动设置当前分支的 upstream |
将远程分支合并到本地
1 | 将本地的 git 记录更新 |
git stash
1 | 保存所有未提交的修改(包括暂存的和非暂存的) |
提交规范
VSCode 插件:git-commit-plugin

该插件可帮助你规范commit描述格式,便于生成易于阅读且美观的提交。

修改上次commit的描述
有时候我们提交的描述格式或内容填错了,想要覆盖掉之前的描述,只能重新commit一次,但这样就会多一个提交记录。
其实有一个不需要重新提交就可以修改上次commit描述的方法,详见这篇文章
结合Jira
在commit信息前加上Jira的任务编号,Jira会自动跟踪,在任务描述中附上提交链接