0

我有一个上游 git 存储库(远程),它有一个 master 和几个分支,但只有一个分支对手头的讨论很重要:

上游的:

x-------y--------> master
     \
      \
        ----z-----> develX

然后我在 x 处从上游克隆了我自己的仓库。

x--------y---------> master
      \
       \
        -----z-------> develY

develY 是我的分支,拥有我自己的工作和来自 develX 的补丁 (z)。我的主人在时间上有些失落。它有来自上游 master 的补丁 (y) 和一些调整,试图让它与我的一些补丁一起工作,但它实际上是一个丢失的案例并且无法正常工作。

所以我决定让它与 develY 完全相同: $ git checkout develY $ git merge -s ours master $ git checkout master $ git merge develY $ git push

所以现在master和develY完全一样。但是,我真正想要的是将我的 master 与我的 develY 更改同步到上游 master(现在也在我的 master 中)。

我最初以为我要将上游 master 中的更改重新设置到我的 master 上,但是上游大约有 6000 次提交要重新设置,而且这不可能很好地工作。有几个问题似乎使这个案例比我最初想象的更复杂:

  • develY(以及我合并和推送 master 之后的 master)有一些来自上游 develX 的补丁,这些补丁可能不存在于上游 master 中;
  • 我的主人有一些来自上游主人的提交,这些提交由于合并 -s ours of develY 而被恢复;
  • 由于上述几点,将git merge-base master upstream/master补丁 y 显示为最后一个共同祖先,但是此补丁实际上不在 master 中,因为它已通过合并恢复。

关于如何尽可能干净地让我的主服务器与上游/主服务器同步以及我的开发人员的更改有什么建议吗?

4

1 回答 1

0

我想你将不得不做一个git merge origin/masterfrom in master

当你说“没办法解决”时,你是什么意思?有两个多冲突?如果存在真正的冲突并且您想要两组更改,那么您确实必须通过手动编辑来解决它们。

git rebase无论如何都是我采取的路线,以便我git fetch成为最新的大师,然后在此基础上重新调整我的工作并解决出现的冲突。我经常首先使用git rebase -i HEAD~10first 来压缩/重新排序/删除我的分支提交。

于 2012-09-28T12:08:55.387 回答