我正面临着一个我不确定如何解决的问题。
我在我的分支中对master做了一个rebase:
git rebase master并得到以下错误
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状态,得到了以下输出:
# 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状态,得到了以下结果:
# Not currently on any branch.
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: AssetsLoader.java
# modified: PassengerContactHandler.java
#当我做git rebase时--继续,我得到:
git rebase --continue
You must edit all merge conflicts and then
mark them as resolved using git add我知道我可以跳过这个补丁,继续重设基址,但我不确定PassengerContactHandler.java中的更改是否会被重设到我的分支中。
所以我不确定,我该怎么做呢?
编辑:会不会是解决了冲突的文件与原始版本完全一样?
非常感谢,卢卡斯
编辑,这又发生在我身上了:
这事又发生在我身上了
(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--继续
You must edit all merge conflicts and then
mark them as resolved using git addgit --版本
git version 1.7.1发布于 2015-01-13 17:26:00
之所以会发生这种情况,是因为在修复冲突时,您删除了补丁中的所有代码,该补丁将应用于您正在重建基础的分支。如果确定已添加所有更改,请使用:使用git rebase --skip继续。
更多细节:
通常,当在rebase过程中修复冲突时,您将编辑冲突的文件,保留当前应用于rebase分支的补丁中的部分或全部代码。修复补丁并执行以下操作后
git add your/conflicted/file
git status您将看到一行(通常是绿色的)行,显示修改后的文件
文件已修改:您的/
/文件
git rebase --continue在这种情况下可以很好地工作。
然而,有时在解决冲突时,您会删除新补丁中的所有内容,只保留您重新建立基础的分支中的代码。现在,当您添加该文件时,它将与您尝试重新建立基址的文件完全相同。git状态将不会显示绿线,显示修改的文件。现在,如果你这样做了
git rebase --continuegit会抱怨说:
没有变化-你忘记使用'git add‘了吗?
如果你确定你已经添加了你所有的改变,在这种情况下git实际想要你做的是使用
git rebase --skip跳过补丁。以前我从来没有这样做过,因为我总是不确定如果我这样做了,实际上会跳过什么,对我来说,“跳过这个补丁”的真正含义并不明显。但是如果你没有得到绿线
文件已修改:您的/
/文件
在编辑了冲突的文件后,将其添加到,并执行git状态,然后您可以非常确定您已经删除了整个补丁,并且您可以使用
git rebase --skip才能继续。
在最初的帖子中说,这有时是有效的:
git add -A git rebase --继续#神奇的工作?
..。但不要依赖于此(并且确保不要在您的存储库文件夹中添加剩余文件)
发布于 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。
基本上它应该可以工作,如果你做一个
git diff在解决了冲突之后,
git rebase --continue应该行得通。
发布于 2019-07-09 05:49:20
当我有未暂存的文件时,我收到了这个警告。确保您没有任何未暂存的文件。如果您不希望更改未暂存的文件,请使用
git rm <filename> https://stackoverflow.com/questions/8523776
复制相似问题