Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 正确的方法;“合并”;这种情况_Git - Fatal编程技术网

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”,但我现在想带回来
  • 情况发生了很大变化。例如,工作树的目录结构发生了很大的变化。这可能意味着进行常规git合并不适合我
  • 我应该如何处理这种情况?一个想法是问这个问题:

    • 我应该如何将旧的“master”签出到另一个目录(当前工作树之外)中,这样我就可以完全手动地进行合并了
    如果你认为最后一个问题是处理这种情况的适当方法,请回答这个问题。请随意提出其他方法

    图中没有隐藏任何细节。所以是的,我还没有对master做任何单独的开发

    在这种情况下,合并尽可能简单。Git将进行快进合并。这意味着它基本上只需将
    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做任何单独的开发。