我正处于我的主人对舞台分支的反对之中
git checkout stage
git rebase master
有时我删除了两个文件,然后根据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.
我想说“是的git,继续并删除这些文件”所以......
git rm test-recommendation-result.php
git rm test-recommendation.php
git rebase --continue
Git说:
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".
我说“不要打电话给我”愚蠢“只是做我告诉你的事情!”
我们现在处于僵局。谁是对的,我该如何解决这个问题?
答案 0 :(得分:46)
执行git add -A
后跟git rebase --continue
。这应该添加所有更改 - 包括删除文件然后继续。
无法保证提交没有其他文件没有冲突且应该合并。 git rebase --skip
会丢失这些文件。你不希望这样。
希望这有帮助。
答案 1 :(得分:2)
当其他所有方法都失败时,请阅读该消息。
此补丁正在尝试修改两个文件,但它们已被删除;再删除它们什么也没做。
只需运行git rebase --skip
。
答案 2 :(得分:1)
当提交添加了与现有文件冲突的二进制文件时,我点击了这个。
我得到了它:
Git又开心了。 :)
答案 3 :(得分:0)
没有一个神奇的命令序列可以始终运行来解决这种情况。如果有,GIT的开发人员只会执行该操作而不会打扰用户。
如果您正在挑选影响重新分解或重命名的文件的更改,那么也会发生此错误。
例如,假设您有一个名为support/1.0
的分支,如下所示:
com.somewhere.package-a/ MyClass.java MyOtherClass.java
现在,假设在版本1.0和1.5之间,这被重构了。所以现在release/1.5
看起来像这样:
com.somewhere.package/ a/ MyClass.java ANewClass.java b/ MyOtherClass.java
现在,让我们假设你有一个1.5版的功能分支,你试图根据support/1.0
反向移植到功能分支。在该提交中,版本1.5(MyClass.java
,ANewClass.java
和MyOtherClass.java
)中的所有三个文件都发生了更改。
如果您尝试使用rebase或普通樱桃选择来帮助后端端口,可能会发生以下两种情况之一:
如果文件被重命名为正在移植的更改的一部分, 或者直接的父母提交的变更之一 移植后,GIT的内置重命名检测可以捕获这些 文件是具有原始名称的文件的后代,简单地说 将更改应用于原始文件。
如果文件在历史记录中已经重新命名
发布1.5(发布1.0发布后),GIT会告诉你的
文件已在release/1.0
中删除,因为它没有
知道1.0中的哪些文件对应于1.5的变化。
ANewClass.java
几乎肯定会触发有关被删除的错误,除非在后端移植的其中一个更改中添加了该错误。
因此,如果您盲目地遵循一组命令来解决这种情况,代码可能会丢失,这就是为什么GIT会提示您进行手动指导。
答案 4 :(得分:0)
我的问题:
当我做git add .
时,所有更改都消失了。我需要更改任何文档(仅需添加少许更改,例如添加评论),并比git add .
做git rebase --continue
有用。这是git
答案 5 :(得分:0)
如果你做了像我这样的事情,那是因为文件应该被忽略,而在某些时候它没有 - 所以它最终进入了源代码管理,从文件系统中删除文件,然后中止变基。< /p>
之后您可以重新启动并且不会出现此错误。
这不是一个理想的解决方案,但不幸的是,一旦发生这种情况,我没有找到任何其他可接受的补救措施。