Git rebase在发生删除/修改冲突后将不会继续 我正处于我的硕士阶段的中间阶段。 git checkout stage git rebase master

Git rebase在发生删除/修改冲突后将不会继续 我正处于我的硕士阶段的中间阶段。 git checkout stage git rebase master,git,version-control,rebase,git-rebase,Git,Version Control,Rebase,Git Rebase,有时我删除了两个文件,然后根据GIT修改了这两个文件 warning: too many files, skipping inexact rename detection CONFLICT (delete/modify): test-recommendation-result.php deleted in HEAD and modified in [Bug] Fix test recommender. Version [Bug] Fix test recommender of test-reco

有时我删除了两个文件,然后根据GIT修改了这两个文件

warning: too many files, skipping inexact rename detection
CONFLICT (delete/modify): test-recommendation-result.php deleted in HEAD and modified in [Bug] Fix test recommender. Version [Bug] Fix test recommender of test-recommendation-result.php left in tree.
CONFLICT (delete/modify): test-recommendation.php deleted in HEAD and modified in [Bug] Fix test recommender. Version [Bug] Fix test recommender of test-recommendation.php left in tree.
Failed to merge in the changes.
Patch failed at 0015.
我想说“是的,吉特,继续删除那些文件”所以

吉特说:

Applying [Bug] Fix test recommender
No changes - did you forget to use 'git add', Stupid?

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".
我说“别叫我蠢”,照我说的去做!”


我们现在处于僵持状态。谁是对的,我该如何解决这个问题?

当所有其他方法都失败时,请阅读此消息

此修补程序正在尝试修改两个文件,但它们已被删除;再次删除它们没有任何作用


只需运行
git-rebase--skip

执行
git-add-A
,然后运行
git-rebase--continue
。这将添加所有更改,包括删除文件,然后继续

无法保证提交中没有其他不冲突且应合并的文件
git-rebase--skip
将丢失这些文件。你不会想要的


希望这有帮助。

当提交添加了与现有文件冲突的二进制文件时,我遇到了这个问题

我通过以下方式度过了难关:

  • 删除现有文件
  • 对不同文件中的注释进行单个字符更改,以及
  • “git添加”正在删除不相关的更改

吉特又高兴了。:)

没有一个神奇的命令序列可以始终运行来解决这种情况。如果有,GIT的开发人员只需执行该操作,而不会打扰用户

请考虑,如果您正在挑选/移植/反移植影响重新分解或重命名的文件的更改,也可能发生此错误

例如,假设您有一个名为
support/1.0
的分支,该分支如下所示:

com.somewhere.package-a/ MyClass.java MyOtherClass.java com.somewhere.package/ a/ MyClass.java ANewClass.java b/ MyOtherClass.java 现在,假设您有一个1.5版的功能分支,您正试图基于
support/1.0
将其移植到一个功能分支。在那次提交中,1.5版的所有三个文件都发生了更改(
MyClass.java
ANewClass.java
,以及
MyOtherClass.java

如果您尝试使用重基或普通樱桃镐来帮助处理后端口,则可能会发生以下两种情况之一:

  • 如果文件被重命名为正在移植的更改的一部分, 或者在正在进行的更改的直接父提交中 通过移植,GIT内置的重命名检测可能会捕捉到这些 文件是具有原始名称的文件的后代,并且 将更改应用于原始文件

  • 如果这些文件被重命名的时间可以追溯到 1.5版(在1.0版发布之后),GIT会告诉您 文件在
    release/1.0
    中被删除,因为它没有 了解1.0中的哪些文件与1.5中的更改相对应

ANewClass.java
几乎肯定会触发删除错误,除非它被添加到正在进行后端口的更改中

因此,如果您盲目地按照一组命令来解决这种情况,代码可能会丢失,这就是GIT提示您手动指导的原因。

我的问题是:


当我添加git时,我所有的更改都消失了。我需要更改任何文档(只是为了添加一些小的更改,例如添加注释),然后执行
git add.
而不是
git-rebase--continue
对我来说很有效。如果你像我一样做了一些事情,这是git的一个已知错误,因为该文件本应被忽略,但在某个时候它没有被忽略-因此它最终进入了源代码管理,从文件系统中删除文件,然后中止重基

之后,您可以重新启动,而不会出现此错误


这不是一个理想的解决方案,但不幸的是,一旦出现这种情况,我没有找到任何其他可接受的补救措施。

不能保证有其他文件正确合并。rebase skip将丢失这些更改。哦,我认为如果其他文件正确合并,rebase不会抱怨。问题是它抱怨这两个文件有冲突。该提交可能不仅仅包含更改的2个文件。如果您跳过,您也会跳过这些,而不仅仅是那些报告冲突的文件。@adymitruk:这些是唯一报告的两个冲突,因此如果其他文件被更改,它们已经在索引中,
rebase--continue
不会抱怨缺少文件
rebase--skip
在本例中是完全正确的。它涵盖了索引中存在和不存在文件的两种情况,没有冲突。请看上面的评论。一般来说,您是对的,但在本例中,我们可以推断不存在其他更改。Git可能会抱怨其他冲突,或者
rebase--continue
会起作用。你没有抓住要点。这里的第一步是“检查git状态的输出”。如果它没有列出任何冲突,也没有任何阶段,那么skip是正确的选择,而add/continue将一事无成,正如OP所看到的。如果只列出了阶段性更改,那么首先就没有冲突,您可以继续(这个问题永远不会被问到)。如果存在冲突,这个问题永远不会被问到,你的答案是危险的——你需要在盲目添加所有内容之前解决冲突。简短版本:当一个重基中途停止时,没有一个命令序列你应该总是运行。你需要了解发生了什么,并采取相应的行动。我相信你的答案,但我想知道为什么这是真的。为什么单凭“git rm”还不足以让git知道您的目的是确认删除这些文件(并在索引中添加一个删除条目),以及“git rm”后面的“git add”真正的含义是什么?如果您的回购中有未跟踪的文件,请小心,因为
-a
会将它们全部添加。在我的例子中,冲突发生在一个subdir中,我只是做了
git添加subdi
com.somewhere.package/
      a/
        MyClass.java
        ANewClass.java
      b/
        MyOtherClass.java