1

所以这就是我所拥有的:

o experiments
|
o
|
o
|
o master
|
o
|
o (initial commit)

正如你所看到的,我在前三个提交的“master”分支上工作。然后我创建了一个新的分支“实验”,朝着不同的方向发展。

现在我面临这种情况:

  1. 我已经决定我目前的“实验”路径确实是要走的路。
  2. 但是,我删除的旧“主人”仍然有很多文件和各种文件中的代码片段,但我现在想带回来。
  3. 情况发生了很大变化。例如,工作树的目录结构发生了很大变化。这可能意味着进行常规 git merge 不适合我。

我应该如何处理这种情况?一个想法是问这个问题:

  • 我应该如何将旧的“master”签出到另一个目录(当前工作树之外),这样我就可以自己进行合并,完全手动?

如果您认为最后一个问题是处理这种情况的适当方法,请回答那个问题。随意建议其他方式。

4

1 回答 1

1

该图没有隐藏任何细节。所以,是的,我没有对master进行任何单独的开发。

在这种情况下,合并尽可能简单。Git 将进行快进合并。这意味着它基本上只会将master分支指针设置为与您的分支相同的提交experiments。真的没有其他事情发生。

即使你在 master 上有点分歧,git 也不会只是简单地比较两个分支的尖端,而是实际查看分支中发生的事情(通过找到共同的祖先);这称为三向合并。因此,它可能会弄清楚您做了什么,并且您可能不会遇到极端的合并冲突。当然,总会有一些例外,但在解决合并冲突时,您可能能够轻松找出这些例外。

但是同样,由于您master根本没有分歧,您可以轻松地experiments按照您希望的方式准备您的分支,然后快速前进master。或者,如果您想让历史记录反映您实际偏离(或至少计划偏离)master 的事实,您也可以使用git merge --no-ff experiments.

于 2012-11-11T22:19:07.940 回答