gpt4 book ai didi

git - 执行两个非常不同的分支的 merge ,因为需要快进 merge 提交而变得复杂

转载 作者:太空狗 更新时间:2023-10-29 14:24:31 24 4
gpt4 key购买 nike

我遇到了麻烦。有分支 masterfeature。一百年前 masterfeature 有共同的祖先,但从那时起已经有 100500 次提交。 masterfeature 分支现在非常不同。行。折腾了一整天,终于完成了这个%#$%#的 merge 。但是...在一天结束时,我打算将此结果推送到存储库,并注意到我的队友在“master”分支中进行了大约 5 次新提交...$#%#$ 这对我们很重要做 rebase 以在这个提交之前快进我的 merge 。所以我需要将这 5 次提交 merge 到我的 merge 结果中。我已经在我的本地存储库中提交了E(查看方案),这是将master merge 到feature 中的结果。由于 C1,我无法将它推送到服务器上,... C5 - feature 上的远程新提交。当我在远程有新东西时,我的标准做法是,当我已经做出更改时,我会执行 git pull --rebase 以保持一个分支的历史记录线性。我运行了 git pull --rebase 并且实际上从 git 那里得到了再次 merge 的建议。在 C1、...C5 提交中甚至未触及的文件中再次出现很多冲突。我做错了什么?请帮忙。如何获得我淹没在第二个方案中的结果?我疯了吗?有可能吗?

Now:

o--A--o-----...100500 commits....[master]....--o-----------B
\ \
o---...100500 commits....[feature - local repo]...C--E(local repo - epic merge result)
|
o---...100500 commits....[feature - remote repo]..C--C1--C2--C3--C4--C5(remote repo, feature branch - additional 5 commits)


Need to fast-forward E ahead C1, C2,... C5, that were added on remote when I was busy with merge:

o--A--o-----...100500 commits....[master]....--o-----------------------B
\ \
o---...100500 commits....[feature]...--o--C--C1--C2--C3--C4--C5--E(epic merge result)

更新
当我在做 git pull --rebase (留在 feature 分支上)时,我注意到 git 试图放在 C1,..,C5 之上(提交feature 分支的远程)首先,然后是 master 分支的其他 100500 次提交。这不是我想要的。我只需要 E 提交在 C1、..C5 之上,而不是 master 分支的所有提交。我看到这种行为,当我查看 git rebase --continue 之间的 gitk --all 时,出现冲突,git mergetool 循环。

最佳答案

获取您的历史记录和 merge ,并在此基础上对 5 个新提交进行 rebase 。是的,这不是您要的,但请耐心等待。

解决出现的任何 merge 冲突。这应该很简单,因为您只处理 5 个新提交。

现在您已经得到了您想要的结果树。在这里放一个标签,然后扔掉一切重新开始。

重新执行 merge ,这次包括您要 merge 到的分支中的 5 个新提交。但是将 -s ours 作为策略选项和 --no-commit 以避免实际执行提交。

现在从之前的 merge + rebase 中读取树。这应该像 git checkout $tag -- . 一样简单(其中 $tag 是您放置在先前结果上的标签)。

现在运行 git commit。这将提交您的 merge ,包含您想要的历史记录,以及您之前工作生成的树。

如果这看起来不错,请继续推送它并删除您的标签。

关于git - 执行两个非常不同的分支的 merge ,因为需要快进 merge 提交而变得复杂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10524349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com