有一个别人的回购与MIT许可的项目,我已经分叉它并偶尔提交拉取请求,其他贡献者也推动他们的更改,但我的fork的主分支没有所有那些更改(我为每个新的拉取请求推入一个新的分支)。
所以我想让原始回购中的所有更改都在我的fork的master分支上重放。以下是否可以完成这项工作?
git checkout master
git pull --rebase SomeoneElsesRepo master
git push MyFork master
我是否能够提交拉取请求,而不会将git pull
所引起的更改归因于拉取请求(如in this question所述)?
答案 0 :(得分:3)
这有一个Github Guide。
TL; DR:
git remote add upstream https://github.com/<otheruser>/<repo>.git
git fetch upstream
选项a)如果您喜欢合并:
# assuming you're on master
git merge upstream/master
git push origin # assuming origin is your fork
选项b)如果您更喜欢改变:
# assuming you're on master
git rebase upstream/master
git push origin # this might fail with a 'non-fast-forward' error
# in which case, insert --force after the word 'push'
关于拉取请求(PR):
PR将始终包含分支中的所有提交以及不在目标分支中的提交。如果您在目标分支中不提交的提交中进行rebase / merge?是的,他们将出现在公关。不希望这种情况发生? Rebase或者只选择你想要的PR中的提交到一个新的分支。 (Srsly,Google上有这方面的bazillion指南,在这里SO。)