背景
最近参加了一个开源项目, 第一次公开提 Pull Request, 从 GitHub 网页直接操作, 先是认真看了下别人的, 简单了解了下 Pull Request, 成功后挺开心的, 原来也不难, 但后来就陆续遇到了问题, 比如如果别人 reivew 后要你再改点啥怎么办? 以及这个 PR 没关, 我还想做点别的不相干的啥怎么办? 这些以前我都没有思考过~
现在能顺利的提 PR 了, 回顾记录一下;
问题重现
PR review 的结果需要做相应修改
一度不知道要如何提交修改, 其实只要继续在当前 PR 的分支下操作提交就好了
我在 master 分支上提 PR
直接导致 PR 未关之前, 我在 master 上做的改动, 全部列在这个 PR 下面了...
幸好发现的及时, 赶紧将 PR 设为 Working In Progress, 手忙脚乱的修复. (期间不得不面对以前一直逃避的 Git revert, Git reset...)
衍生的一堆问题:
怎么删已提交的 commit
怎么删分支
如果 merge 分支
怎么查某个文件的历史
如何 sync origin 和 upstream 仓库
...
在 Forked 仓库中提交 Pull Request
一番摸索之后, 列一下自己现在觉得该这样操作:
Fork 远程仓库
不用细说
拉取到本地后, 你的 Forked 仓库成了 Origin
再把远程的被你 Forked 的 upstream 仓库加进来:
Git remote add upstream <your forked repo's upstream>
现在你的 Git remote -v 应该有两个了, origin 和 upstream
当然别忘了把 upstream 的最新内容拉下来:
Git fetch upstream Git checkout master Git merge upstream/master Git pu origin master
现在你的 forked 仓库和它的 upstream 仓库是同步了.
开发之前, 先开个新分支啊啊啊, 这个是最重要的了
这就是所谓的分支开发流
这个词听来好久了, 却一直没有想到用, 直至现在被迫用上, 然后发觉还挺好用.
- Git checkout -b new-branch upstream/master
- <make your changes>
- Git ci -m "your new changes"
- Git pu origin new-branch
现在可以去 GitHub 上提 Pull Request 拉
网页操作
记着选择新建的分支即可
这个分支就不要再做其他无关的事情了.
如果 PR Reviewer 要你做点改动呢
因为你现在是在干净的分支上, 放心大胆的改后正常提交就好了:
Git checkout new-branch
< 改代码 >
- Git add .
- Git ci -m "新改动"
- Git pu origin new-branch
PR approve and merge 后, 可以删除你的这个 new-branch 了
参考: 2019-12-08-Git-remove-branch.md
思考
在用中学
来源: http://www.bubuko.com/infodetail-3350083.html