Git 正确的方法;“合并”;这种情况
这就是我所拥有的:Git 正确的方法;“合并”;这种情况,git,Git,这就是我所拥有的: o experiments | o | o | o master | o | o (initial commit) 如您所见,在前三次提交中,我一直在处理“master”分支。然后我创建了一个新的分支“实验”,朝着不同的方向发展 现在我面临这样的情况: 我已经决定,我目前的“实验”道路才是真正的方向 然而,仍然有许多文件,以及各种文件中的代码片段,来自我删除的旧“master”,但我现在想带回来 情况发生了很大变化。例如,工作树的目录结构发生了很大的变化。这可能意味着进行常
o experiments
|
o
|
o
|
o master
|
o
|
o (initial commit)
如您所见,在前三次提交中,我一直在处理“master”分支。然后我创建了一个新的分支“实验”,朝着不同的方向发展
现在我面临这样的情况:
- 我应该如何将旧的“master”签出到另一个目录(当前工作树之外)中,这样我就可以完全手动地进行合并了
master
分支指针设置为与experiments
分支相同的提交。真的没有别的事情发生
即使您在master上有点分歧,git也不会只是简单地比较两个分支的顶端,而是实际查看分支中发生了什么(通过找到共同的祖先);这被称为三向合并。所以,它可能会发现你做了什么,而你可能不会遇到极端的合并冲突。当然,总会有一些例外情况,但在解决合并冲突时,您可能能够轻松地找出这些例外情况
但是同样,由于您的主程序
完全没有分歧,因此您可以按照希望的方式轻松准备实验
分支,然后快速前进主程序
。或者,如果您想让历史记录反映您实际偏离(或至少计划偏离)主记录的事实,还可以使用git merge--no ff experiments
强制合并提交
图中没有隐藏任何细节。所以是的,我还没有对master做任何单独的开发
在这种情况下,合并尽可能简单。Git将进行快进合并。这意味着它基本上只需将master
分支指针设置为与experiments
分支相同的提交。真的没有别的事情发生
即使您在master上有点分歧,git也不会只是简单地比较两个分支的顶端,而是实际查看分支中发生了什么(通过找到共同的祖先);这被称为三向合并。所以,它可能会发现你做了什么,而你可能不会遇到极端的合并冲突。当然,总会有一些例外情况,但在解决合并冲突时,您可能能够轻松地找出这些例外情况
但是同样,由于您的
主程序
完全没有分歧,因此您可以按照希望的方式轻松准备实验
分支,然后快速前进主程序
。或者,如果您想让历史记录反映您实际偏离(或至少计划偏离)master的事实,您还可以使用git merge--no ff experiments
强制执行合并提交master
分支是否有任何发展?如果没有,那么git合并实验
在master
上是一个快速前进的过程。为什么你认为git不能处理这个问题?我总是这样做。将所有内容提交到实验中,检查主控,将实验合并到主控中。他说了什么^@AndrewFinnell但如果我改变文件夹结构、重命名文件、添加和删除文件等,事情不会搞砸吗。?git怎么可能知道我想怎么做?我只想要一些文件。其他的我不知道。在其他方面,我只想要部分背部。嗯。不完全确定您的情况(例如,请参阅@larsmans问题),但如果您想混合和匹配您的补丁程序,您可能需要在您的实验分支上尝试git-rebase-i master
。@JulienOster这一切都是“线性的”,即图中所示的直线。图中没有隐藏任何细节。是的,我还没有对master做过任何单独的开发。在master
分支上有没有开发?如果没有,那么git合并实验
在master
上是一个快速前进的过程。为什么你认为git不能处理这个问题?我总是这样做。将所有内容提交到实验中,检查主控,将实验合并到主控中。他说了什么^@AndrewFinnell但如果我改变文件夹结构、重命名文件、添加和删除文件等,事情不会搞砸吗。?git怎么可能知道我想怎么做?我只想要一些文件。其他的我不知道。在其他方面,我只想要部分背部。嗯。不完全确定您的情况(例如,请参阅@larsmans问题),但如果您想混合和匹配您的补丁程序,您可能需要在您的实验分支上尝试git-rebase-i master
。@JulienOster这一切都是“线性的”,即图中所示的直线。图中没有隐藏任何细节。所以是的,我还没有对master做任何单独的开发。