场景:我分叉了一个github项目并开始对它进行处理(在将原始项目添加为远程时称为“上游”)。在使用我的fork时,上游项目发布了许多版本:v1.3-stable,v1.4-stable,v1.5-experimental等。现在我需要将上游提交合并到我的主分支,但仅限于特定发行版,例如发行版v1.4-stable。这种情况下最好的工作流程是什么?Git合并提交来自特定的上游版本
回答
假设V1.4稳定的遥控器上的一个标签,你可以通过包含您的工作的分支调用此将这些更改应用到本地回购:
git fetch
git rebase --onto $(git rev-list -n1 v1.4-stable)
版本列表找到ID从v1.4-stable开始的最新提交,之后这些提交被重播,你自己的工作放在最上面。如果遥控器在分叉后发生了显着变化,将会发生冲突。
如果V1.4稳定是遥控器上的一个分支,你反而会想要做
git pull --rebase origin v1.4-stable
为什么不合并分支或标签?为什么这个rebase?这只是合并跟踪。 – jszakmeister
我可能会在这里回答我自己的问题,但我认为这是因为您认为OP正在寻求将他们的工作整合到上游......在这种情况下,rebase是有道理的。 – jszakmeister
首先确保您在v1.5-experimental
的专用分支中工作。
其次,reset你的主分支上行/ V1.4(确保你没有任何正在进行的工作:一个硬复位将消灭他们)
git fetch upstream
git checkout master
git reset --hard upstream/v1.4
git push -f
最后,衍合V1。在主控制器上的5分支分支(即在v1.4之上)
第一个,activate rerere(如果您之后必须做多个rebase:这会记录您在过去如何解决类似冲突)
git config --global rerere.enabled true
然后变基(重播你从你的分支上提交V1.4的顶部):
git checkout v1.5-experimental
git rebase master
git push -f
的冲突,你将不得不解决,应该只有两个感兴趣的上游和完成并发修改冲突(你的实验分支)。
你正在告诉某人在其repo上运行'git reset --hard'。至少警告可能造成的后果...... –
@HaraldNordgren谢谢你。我相应地编辑了我的答案。 – VonC
是什么让你觉得他们没有工作进展?这个问题的重点似乎是重新将个人工作与偏远地区的变化结合起来。 git重置似乎是彻头彻尾的破坏性。 –
这假定v1.4-stable
是一个提交指示释放,在主分支中的标签。 结帐主拉的最新变化:
git checkout master
git pull --rebase
其次,重订对这次提交顶端的开发分支。确保你的工作树是干净的,你的头指向您的开发分支:
git rebase v.14-stable
这个命令将改变你的分支的基地,包括标签的v.1.4-stable
提交,并在它之前所有其他版本。
底垫之前:
o---o---v.1.2---v.1.3---v.1.4---v.1.5-exp master
\
o---o---o dev
后:
o---o---v.1.2---v.1.3---v.1.4---v.1.5-exp master
\
o---o---o dev
git pull --rebase origin v1.4-stable
- 1. git - 合并时跳过特定提交
- 2. Git Log =显示来自特定修订版的合并版本号
- 3. (git):如何从上游分支提交特定提交?
- 4. 没有自动提交的git合并
- 5. Git标记分支特定的提交并防止合并
- 6. 如何覆盖上游版本未合并的git结帐
- 7. 的Git合并提交
- 8. 的Git版本号从TeamCity的8.1中特定分支提交
- 9. Git:如何合并上游更改而不会导致合并提交?
- 10. 合并来自上游Git回购的新变更
- 11. 如何将我的提交与上游更改合并回来?
- 12. git签出特定提交前的版本
- 13. 如何合并特定的提交从主到git标记?
- 14. 从一些特定的提交合并两个git存储库
- 15. 查找所有符合特定“提交次数”的git提交
- 16. Git合并上游分支
- 17. Git合并细节提交
- 18. Git合并提交丢失
- 19. 强制git合并提交
- 20. Git合并跳过提交
- 21. Git合并分支提交
- 22. Git在合并之前合并提交
- 23. SVN提交和合并旧版本
- 24. Git:来自特定提交的浅拷贝
- 25. Git-如何在TeamCity中签出特定版本(提交哈希)?
- 26. 子树与特定的合并提交
- 27. 合并到一个特定的提交
- 28. git提交并推送本地git文件夹,无需合并
- 29. 自上次合并后提交显示提交,包括合并提交
- 30. git撤消合并提交另一个合并提交
你能提供一个链接到GitHub的回购? –