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 Cherry选择一个提交X次_Git_Git Svn_Cherry Pick_Git Cherry Pick - Fatal编程技术网

GIT Cherry选择一个提交X次

GIT Cherry选择一个提交X次,git,git-svn,cherry-pick,git-cherry-pick,Git,Git Svn,Cherry Pick,Git Cherry Pick,我在我的SVN迁移的GIT存储库中遇到了一个奇怪的行为: 我试图在发布分支上挑选一个来自主机的提交,该提交之前已经与SVN合并到发布分支上。 GIT没有检测到它,在修改的源文件中再次添加了代码。 然后我能够一次又一次地挑选它,每次GIT再次添加提交代码 在SVN中,版本从主版本到发布分支的合并属性保存得很好 这种行为只发生在我们的22K提交中的少数提交上 是否有一个方向我应该调查以确定这个问题是从哪里来的?我被你的问题弄糊涂了,因为樱桃采摘不是合并,也不会被记录下来。因此,也不能期望樱桃采摘的行

我在我的SVN迁移的GIT存储库中遇到了一个奇怪的行为: 我试图在发布分支上挑选一个来自主机的提交,该提交之前已经与SVN合并到发布分支上。 GIT没有检测到它,在修改的源文件中再次添加了代码。 然后我能够一次又一次地挑选它,每次GIT再次添加提交代码

在SVN中,版本从主版本到发布分支的合并属性保存得很好

这种行为只发生在我们的22K提交中的少数提交上


是否有一个方向我应该调查以确定这个问题是从哪里来的?

我被你的问题弄糊涂了,因为樱桃采摘不是合并,也不会被记录下来。因此,也不能期望樱桃采摘的行为类似于合并。如果您想在Git中进行合并,则必须执行合并,而不是cherry pick。@Torek:我们使用cherry pick从主版本到发行版,因为我们只想在补丁发行版上选择一些修复程序。我不应该谈论合并(这是一个古老的SVN用户习惯)。您所说的是,因为git不记录已经完成的cherry pick,所以在git中我们可以多次cherry pick相同的提交是正常的?是的,尽管这取决于提交。只要上下文是正确的,就可以重复添加您正在拾取的樱桃。这一点也很重要,因为取消还原的方法是重新选择原始提交,或者还原还原(这只是反向应用樱桃)。@Torek:那么为什么只有少数提交具有这种行为。对于所有其他GIT来说,它检测到代码已经存在,什么也不做。因为,正如我所指出的,它更具体地取决于提交,取决于上下文。请记住,修补程序的形式是:“在该区域附近查找这些代码行。找到它们后,删除特定的代码行并添加这些新行。”假设(简化)您正在查找上面由“a”和下面的“B”包围的“Hello”,更改为删除“Hello”。假设在一个文件中有两次出现这种情况。您可以应用一次修补程序,删除最接近原始行号的修补程序,然后再应用一次,删除第二个“Hello”,现在您无法再应用它!我被你的问题弄糊涂了,因为樱桃采摘不是合并,也不会被记录下来。因此,也不能期望樱桃采摘的行为类似于合并。如果您想在Git中进行合并,则必须执行合并,而不是cherry pick。@Torek:我们使用cherry pick从主版本到发行版,因为我们只想在补丁发行版上选择一些修复程序。我不应该谈论合并(这是一个古老的SVN用户习惯)。您所说的是,因为git不记录已经完成的cherry pick,所以在git中我们可以多次cherry pick相同的提交是正常的?是的,尽管这取决于提交。只要上下文是正确的,就可以重复添加您正在拾取的樱桃。这一点也很重要,因为取消还原的方法是重新选择原始提交,或者还原还原(这只是反向应用樱桃)。@Torek:那么为什么只有少数提交具有这种行为。对于所有其他GIT来说,它检测到代码已经存在,什么也不做。因为,正如我所指出的,它更具体地取决于提交,取决于上下文。请记住,修补程序的形式是:“在该区域附近查找这些代码行。找到它们后,删除特定的代码行并添加这些新行。”假设(简化)您正在查找上面由“a”和下面的“B”包围的“Hello”,更改为删除“Hello”。假设在一个文件中有两次出现这种情况。您可以应用一次修补程序,删除最接近原始行号的修补程序,然后再应用一次,删除第二个“Hello”,现在您无法再应用它!