【问题标题】:How to induce a `<<<<<`/`>>>>>` merging state in Git?如何在 Git 中诱导 `<<<<<`/`>>>>>` 合并状态?
【发布时间】:2017-04-18 16:15:23
【问题描述】:

我有一个旧的工作树,现在已经有几十个提交了。尽管如此,这个存储仍然代表了我需要提出的功能的有用工作。我之前放弃了它,因为我不得不切换到更高优先级的功能,因为我隐藏了前者。现在,与往常一样,我的master 显然代表了当前最先进的技术,但我需要着手处理旧功能。我认为我根本不需要或不需要变基。事实上,在功能完成之前,我不会提交(除了存储)。

由于存储是提交,我想我会看看我是否可以生成一个工作树,将上述废弃的功能工作和当前的主分支结合起来。我做到了:

git checkout stash@{0}
git merge --no-ff --no-commit master

git merge 的长选项只是为了确保我有机会查看合并。令人惊讶的是,一切都很顺利。查看一个文件的两个版本,其中更改最多,很明显我不希望 Git 进行合并。

现在,我想要让 Git 生成当我遇到合并冲突时我得到的那种文件——一个带有 &lt;&lt;&lt;&lt;&lt;&gt;&gt;&gt;&gt;&gt; 的文件给我不同的部分。我会将这些文件编辑成合理的状态,然后从那里拿走,没问题。

或者我正准备使用git format-patchgit merge-file(我不确定,因为我从未使用过)给我一个补丁文件,我很可能会在stash@{0} 之上进行调整和应用.

即使在 Git 看不到合并冲突的情况下,如所描述的那样“引发”合并冲突的惯用方式是什么?

【问题讨论】:

  • 你可能无法欺骗合并算法来声明文件冲突,但你可能会让 git 进入mergetool 将显示各种版本的状态,就好像它们没有被合并一样。
  • 我投票结束我自己的问题,因为它可能有太多正确答案或没有,因为它在技术上可能含糊不清,我现在什至不确定我需要解决哪个问题。跨度>

标签: git merge git-merge


【解决方案1】:

你写的一些东西可以改进很多(使用 stash 而不是特性分支,很少提交),但你似乎对它们很有信心。

至于您的实际问题:在您要合并的两个提交之上创建新的临时提交。用一些不相关的变化来修饰你想要冲突的每一个大块。那可能是空白、cmets 或其他任何东西。然后合并这些新的提交,你会遇到冲突。

【讨论】:

  • 我不得不承认,在发布问题后,我开始认为它在 SO/SuperUser 上并不是一个非常有用的问题。我可以只使用存储的父级,将 master 合并到它上面,将功能分支提示指向它,然后应用存储,此时我要么得到合并冲突,要么保证一切都被完美应用。我坐公共汽车回家想了想。对不起,我在浪费你的时间,希望你确实从我的问题中得到了一些东西:) 我很少提交,但我通常只提交至少构建的内容,而隐藏的内容根本没有构建。
  • 是的,没问题。 ;) 有时只需乘坐公共汽车。
猜你喜欢
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 2015-04-09
相关资源
最近更新 更多