最近我开始合作开源项目。
使用fork and pull方法我发送了我的第一张PR,它已被批准。
如何使用相同的分叉存储库处理下一个问题?
由于我的PR已合并,我当前的主分支在原始存储库后面。
我设法考虑了两个解决方案:
哪一个更好?还有其他选择吗?
答案 0 :(得分:3)
不要在本地存储库中的master
上工作。一个好的工作流程看起来像这样:
在github上分叉上游存储库。
在本地克隆上游存储库:
git clone git@github.com:/someproject/somerepo.git
将您的前叉添加为附加遥控器:
cd somerepo
git remote add mine git@github.com:/me/somerepo.git
确保您的本地存储库与上游存储库保持同步。显然,如果您只是克隆它就已经是这种情况了,否则:
git checkout master
git pull
请注意,这将从上游master
分支,而不是您的分支。这就是你想要的。
为您的工作创建一个新的主分支:
git checkout -b my-spiffy-feature
你工作,把分支推到你的叉子上:
git push -u mine my-spiffy-feature
向上游主人提交拉取请求。
此时,您可以开始做其他工作了。您可以在master之外创建另一个新分支:
git checkout -b another-feature master
或者,如果有必要,您可以将其建立在以前的工作基础上:
git checkout -b another-feature my-spiffy-feature
当您在上游接受上一个拉取请求时,请更新您当地的主分支:
git checkout master
git pull
然后在更新后的主分支上重新定义任何现有工作:
git checkout another-feature
git rebase master
通过此工作流程,master
始终跟踪上游,您的工作始终在隔离的分支上完成,这样可以轻松处理多个拉取请求。