首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git rebase --即使所有合并冲突都已解决,也会继续报告

Git rebase --即使所有合并冲突都已解决,也会继续报告
EN

Stack Overflow用户
提问于 2011-12-16 00:58:38
回答 10查看 114.6K关注 0票数 165

我正面临着一个我不确定如何解决的问题。

我在我的分支中对master做了一个rebase:

代码语言:javascript
复制
git rebase master

并得到以下错误

代码语言:javascript
复制
 First, rewinding head to replay your work on top of it...
 Applying: checkstyled.
 Using index info to reconstruct a base tree...
 Falling back to patching base and 3-way merge...
 Auto-merging AssetsLoader.java
 CONFLICT (content): Merge conflict in AssetsLoader.java
 Failed to merge in the changes.
 Patch failed at 0001 checkstyled.

所以我转到我最喜欢的编辑器,修复了单行冲突,保存了文件,并执行了git状态,得到了以下输出:

代码语言:javascript
复制
 # Not currently on any branch.
 # Changes to be committed:
 #   (use "git reset HEAD <file>..." to unstage)
 #
 #  modified:   PassengerContactHandler.java
 #
 # Unmerged paths:
 #   (use "git reset HEAD <file>..." to unstage)
 #   (use "git add/rm <file>..." as appropriate to mark resolution)
 #
 #  both modified:      AssetsLoader.java
 #

我做了一个git添加AssetsLoader.java和一个git状态,得到了以下结果:

代码语言:javascript
复制
 # Not currently on any branch.
 # Changes to be committed:
 #   (use "git reset HEAD <file>..." to unstage)
 #
 #  modified:   AssetsLoader.java
 #  modified:   PassengerContactHandler.java
 #

当我做git rebase时--继续,我得到:

代码语言:javascript
复制
git rebase --continue
You must edit all merge conflicts and then
mark them as resolved using git add

我知道我可以跳过这个补丁,继续重设基址,但我不确定PassengerContactHandler.java中的更改是否会被重设到我的分支中。

所以我不确定,我该怎么做呢?

编辑:会不会是解决了冲突的文件与原始版本完全一样?

非常感谢,卢卡斯

编辑,这又发生在我身上了:

这事又发生在我身上了

代码语言:javascript
复制
(307ac0d...)|REBASE)$ git status
# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   assets/world/level1/Level-1.xml
#   modified:   George.java
#   modified:   DefaultPassenger.java
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   mb-art/originalAssets/27dec/

((307ac0d...)| rebase )$ git rebase--继续

代码语言:javascript
复制
You must edit all merge conflicts and then
mark them as resolved using git add

git --版本

代码语言:javascript
复制
git version 1.7.1
EN

回答 10

Stack Overflow用户

发布于 2015-01-13 17:26:00

之所以会发生这种情况,是因为在修复冲突时,您删除了补丁中的所有代码,该补丁将应用于您正在重建基础的分支。如果确定已添加所有更改,请使用使用git rebase --skip继续。

更多细节:

通常,当在rebase过程中修复冲突时,您将编辑冲突的文件,保留当前应用于rebase分支的补丁中的部分或全部代码。修复补丁并执行以下操作后

代码语言:javascript
复制
git add your/conflicted/file
git status

您将看到一行(通常是绿色的)行,显示修改后的文件

文件已修改:您的/

/文件

git rebase --continue在这种情况下可以很好地工作。

然而,有时在解决冲突时,您会删除新补丁中的所有内容,只保留您重新建立基础的分支中的代码。现在,当您添加该文件时,它将与您尝试重新建立基址的文件完全相同。git状态将不会显示绿线,显示修改的文件。现在,如果你这样做了

代码语言:javascript
复制
git rebase --continue

git会抱怨说:

没有变化-你忘记使用'git add‘了吗?

如果你确定你已经添加了你所有的改变,在这种情况下git实际想要你做的是使用

代码语言:javascript
复制
git rebase --skip

跳过补丁。以前我从来没有这样做过,因为我总是不确定如果我这样做了,实际上会跳过什么,对我来说,“跳过这个补丁”的真正含义并不明显。但是如果你没有得到绿线

文件已修改:您的/

/文件

在编辑了冲突的文件后,将其添加到,并执行git状态,然后您可以非常确定您已经删除了整个补丁,并且您可以使用

代码语言:javascript
复制
git rebase --skip

才能继续。

在最初的帖子中说,这有时是有效的:

git add -A git rebase --继续#神奇的工作?

..。但不要依赖于此(并且确保不要在您的存储库文件夹中添加剩余文件)

票数 154
EN

Stack Overflow用户

发布于 2014-10-15 15:32:36

Seems to be a bug in Git 1.7

Here's a good article on how to solve this

基本上它应该可以工作,如果你做一个

代码语言:javascript
复制
git diff

在解决了冲突之后,

代码语言:javascript
复制
git rebase --continue

应该行得通。

票数 23
EN

Stack Overflow用户

发布于 2019-07-09 05:49:20

当我有未暂存的文件时,我收到了这个警告。确保您没有任何未暂存的文件。如果您不希望更改未暂存的文件,请使用

代码语言:javascript
复制
git rm <filename>  
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8523776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档