🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[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