Please enable Javascript to view the contents

一个完整的 Git 提交流程

 ·  ☕ 1 分钟

这也是一个给开源项目提交 PR 的完整 Git 流程。

1. 本地配置

  • 提交用户信息
1
2
git config --global user.name "username"
git config --global user.email "[email protected]"
  • GPG 配置

参考:GPG 验证提交

2. 克隆代码

  • 首先 fork 原仓库

  • 克隆 fork 的仓库代码

1
git clone https://github.com/yourname/django-xss-cleaner.git
  • 添加原仓库
1
git remote add upstream https://github.com/shaowenchen/django-xss-cleaner.git
  • 查看本地配置的远程源
1
2
3
4
git remote -v

origin xxx
upstream xxx

3. 日常开发

  • 拉取最新代码
1
git fetch upstream
  • [可选]非 master 分支集成时操作
1
git checkout -b IntegratedBranch upstream/IntegratedBranch

非 master 分支集成,下面使用 IntegratedBranch 替换 master 即可。

  • 切换集成分支
1
git checkout master
  • Rebase 更新到自己的仓库
1
git rebase upstream/master
  • 新建一个开发分支
1
git checkout -b feature_1 master
  • 开发

Coding

  • 提交代码
1
2
git add .
git commit -s -m "message"

这里如果忘记加 -s,会缺少签名信息。可以通过 git commit --amend --no-edit -s 进行补救。

  • 提交 PR

选择将自己的 feature_1 分支合并到原仓库的 master 分支

  • 评论、修改,来回切磋,继续提交
1
2
git add .
git commit -s -m "message"
  • Rebase PR 中的 Commit 记录,仅留一条
1
git rebase -i HEAD~2

进入交互模式后,合并之前的两个 Commit 记录,保留第一个 pick,其他改成 f 或 s 。多条 Commit 时,将 2 修改为相应数值。

  • 强制推送
1
git push -f feature_1

由于远程已经有相关的 commit 记录,这里需要强制推送。

  • PR 合并之后,删除开发分支

如果没有合并直接删除远端开发分支,会导致 PR 关闭。

1
2
3
git checkout master
git branch -D feature_1
git push origin :feature_1

微信公众号
作者
微信公众号