我在分支b4上做“$ git rebase master”,它给了我冲突。
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: rebase: Modified 1.txt
Using index info to reconstruct a base tree...
M 1.txt
Falling back to patching base and 3-way merge...
Auto-merging 1.txt
CONFLICT (content): Merge conflict in 1.txt
Failed to merge in the changes.
Patch failed at 0001 rebase: Modified 1.txt
The copy of the patch that failed is found in:
c:/hands_on/github/learn_git/cmd/.git/rebase-apply/patch
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
在这里,它显示我不再在分支b4上。
$ git status
# Not currently on any branch.
# You are currently rebasing.
# (fix conflicts and then run "git rebase --continue")
# (use "git rebase --skip" to skip this patch)
# (use "git rebase --abort" to check out the original branch)
#
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add <file>..." to mark resolution)
#
# both modified: 1.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
我修复了冲突并提交了更改:
$ vim 1.txt
$ git commit -a -m "Fixed rebase conflict"
[detached HEAD 2cb2672] Fixed rebase conflict
1 file changed, 1 insertion(+)
$ git status
# Not currently on any branch.
# You are currently rebasing.
# (all conflicts fixed: run "git rebase --continue")
#
nothing to commit, working directory clean
但是当我尝试“ - continue”时,它没有完成rebase,而是给了我更多的“指令”。为什么呢?
$ git rebase --continue
Applying: rebase: Modified 1.txt
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
答案 0 :(得分:2)
我修复了冲突并提交了更改:
那是你出错的地方。 git rebase --continue
期望更改在索引中,但尚未提交。由于您已经提交了更改,git rebase
自己的尝试失败,因为没有任何更改可以提交。
您应该能够通过运行git reset --soft @^
撤消提交操作,而无需重置索引。 git rebase --continue
应该在那之后工作。
您也可以使用git rebase --skip
来绕过git rebase
自己提交更改的尝试,但是这会冒更多的混乱:您自己的提交很可能不会尊重原始提交作者姓名,电子邮件和时间。
git status
显示您不在任何分支上的事实不是问题。 git rebase
故意从当前分支分离,直到操作完成。这将在操作成功后修复。