Git rebase在发生删除/修改冲突后将不会继续 我正处于我的硕士阶段的中间阶段。 git checkout stage git rebase master
有时我删除了两个文件,然后根据GIT修改了这两个文件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
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会告诉您
文件在
中被删除,因为它没有 了解1.0中的哪些文件与1.5中的更改相对应release/1.0
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