首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免Git中的递归合并

避免Git中的递归合并
EN

Stack Overflow用户
提问于 2015-02-26 18:19:08
回答 1查看 6.7K关注 0票数 3

我有一个git存储库,它有两个分支:masterlive。我在master工作。一旦我将我的更改准备好用于生产,我就将它们合并到live中,这将在生产系统中签出。我一个人做这个项目。

使用此设置,live通常只是master后面的几个提交。因此,当我在live上执行一个live时,合并将通过fast-forward执行。

最近,在git merge master上执行live操作会导致由recursive策略执行的合并。我不知道这样做的原因是否是我有一次意外地在live上提交了一个更改,然后才将它合并到master中。

git diff master live没有输出。这两个分支具有相同的文件内容。

如何才能使我的git存储库处于“干净”状态,从而在默认情况下再次使用fast-forward策略?

EN

回答 1

Stack Overflow用户

发布于 2015-02-27 16:43:17

我认为问题的原因是:

  1. 我无意中在live而不是master上提交了一些东西(让我们称之为master)。
  2. 然后,我在master上提交了其他内容(master say)。
  3. 我意识到我犯了这个错误1.并将live合并到master上。
  4. 我仍然需要将B合并到live,所以我将master合并到live

我认为这造成了提交路径的“交叉”,使得git merge无法进行快速转发。

解决办法是首先确保这两个分支确实具有相同的内容:

代码语言:javascript
复制
git diff master..live
git cherry -v master live
git cherry -v live master

一切都没有结果。然后,我更改了live,使其指向与master完全相同的提交:

代码语言:javascript
复制
git branch -f live ae5e70... # Hash of the commit pointed to by master
git push --force origin live:live

现在我又可以快速前进了。注意,this can be dangerous and should probably not be done when the repository is shared

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28749871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档