正在重build。 无法提交。 如何进行或停止(中止)?
当我运行:
git status
我看到这个:
rebase in progress; onto 9c168a5 You are currently rebasing branch 'master' on '9c168a5'. (all conflicts fixed: run "git rebase --continue") nothing to commit, working directory clean
当我做:
ls `git rev-parse --git-dir` | grep rebase || echo no rebase
我看到:rebase-apply
我不能承诺起源。
git branch
显示:
* (no branch, rebasing master) develop master
我卡住了。 我不知道该怎么办? 这是否真的需要这么长时间来重组? git rebase --continue
不会做任何事情。 我没有任何Git身份..我只是在等待rebase。 我能做什么?
UDATE:这是git rebase –continue的输出
Applying: no message 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".
git add。 什么都没有
Rebase不会在后台发生。 “rebase进展中”意味着你开始了rebase,rebase因为冲突而中断。 你必须恢复rebase( git rebase --continue
)或放弃它( git rebase --abort
)。
正如来自git rebase --continue
的错误消息git rebase --continue
build议,您要求git应用一个导致空补丁的补丁。 最有可能的是,这意味着这个补丁已经被应用了,你想用git rebase --skip
来删除它。
你告诉你的存储库重新绑定 它看起来像你在一个提交(由SHA 9c168a5确定),然后做git rebase master
或git pull --rebase master
。
您正在将分支主人redirect到该提交。 你可以通过git rebase --abort
结束git rebase --abort
。 这会退回到您开始重新贴标之前的状态。
我最近进入这个状态。 在解决了rebase期间的冲突之后,我做了我的修改,而不是运行git rebase --continue
。 这产生了与运行git status
和git rebase --continue
命令时看到的相同的消息。 我通过运行git rebase --abort
解决这个问题,然后重新运行rebase。 人们也可能跳过rebase,但我不知道什么状态,将离开我。
$ git rebase --continue Applying: <commit message> 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". $ git status rebase in progress; onto 4df0775 You are currently rebasing branch '<local-branch-name>' on '4df0775'. (all conflicts fixed: run "git rebase --continue") nothing to commit, working directory clean
我将git
设置为在git checkout
上的autorebase
# in my ~/.gitconfig file [branch] autosetupmerge = always autosetuprebase = always
否则,当您在分支之间切换时,它会自动合并,我认为这是默认情况下最糟糕的select。
然而,这有一个副作用,当我切换到一个分支,然后git cherry-pick <commit-id>
我每次都有一个冲突结束在这个奇怪的状态。
我实际上必须中止rebase
,但首先我修复冲突, git add /path/to/file
的文件(另一个非常奇怪的方式来解决在这种情况下的冲突?!),然后做一个git commit -i /path/to/file
。 现在我可以放弃rebase
:
git checkout <other-branch> git cherry-pick <commit-id> ...edit-conflict(s)... git add path/to/file git commit -i path/to/file git rebase --abort git commit . git push --force origin <other-branch>
第二个git commit .
似乎来自中止。 如果我发现我应该尽快放弃rebase
,我会解决我的问题。
如果您跳过其他提交并且两个分支都不平滑 (两者都缺less来自其他提交的提交),则推送时必须使用--force
。