规范流程
最后更新于:2022-04-02 02:54:04
[TOC]
## 1.从主分支新开开发分支
```
# 获取主干最新代码
$ git checkout master
$ git pull
# 新建一个开发分支myfeature
$ git checkout -b myfeature
```
## 2. 提交分支commit
```
$ git add .
$ git status
$ git commit --verbose
```
- verbose参数,会列出 diff 的结果。
## 3. 提交commit 信息
请查看 [commit 规范](commit%E8%A7%84%E8%8C%83.md)
## 4. 提交前获取最新主分支
```
$ git fetch origin
$ git rebase origin/master
```
## 5. 合并commit
分支开发完成后,很可能有一堆commit,但是合并到主干的时候,往往希望只有一个(或最多两三个)commit
```
$ git rebase -i origin/master
```
- rebase命令的i参数表示互动(interactive),这时git会打开一个互动界面
```
pick 07c5abd Introduce OpenPGP and teach basic usage
pick de9b1eb Fix PostChecker::Post#urls
pick 3e7ee36 Hey kids, stop all the highlighting
pick fa20af3 git interactive rebase, squash, amend
...
```
- 当前分支最新的4个commit(越下面越新)
- 每个commit前面有一个操作命令,默认是pick,表示该行commit被选中,要进行rebase操作
```
pick:正常选中
reword:选中,并且修改提交信息;
edit:选中,rebase时会暂停,允许你修改这个commit(参考这里)
squash:选中,会将当前commit与上一个commit合并
fixup:与squash相同,但不会保存当前commit的提交信息
exec:执行其他shell命令
```
示例
```
pick 07c5abd Introduce OpenPGP and teach basic usage
f de9b1eb Fix PostChecker::Post#urls
f 3e7ee36 Hey kids, stop all the highlighting
pick fa20af3 git interactive rebase, squash, amend
```
- 还是会生成两个commit,第二行和第三行的commit,都合并到第一行的commit。
- 新的提交信息里面,第三行commit的提交信息,会被注释掉
## 6. 推送到远程仓库
```
$ git push [--force] origin myfeature
```
- 因为rebase以后,分支历史改变了,跟远程分支不一定兼容,有可能要强行推送
## 7. 发出Pull Request
提交到远程仓库以后,就可以发出 Pull Request 到master分支,然后请求别人进行代码review,确认可以合并到master
';