当我跑步时:
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状态......我只是在等待变种。我该怎么办?
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。没什么。
答案 0 :(得分:183)
Rebase不会在后台发生。 "正在进行改革"意味着你开始了一个rebase,并且rebase因冲突而中断了。你必须恢复rebase
(git rebase --continue
)或中止(git rebase --abort
)。
正如来自git rebase --continue
的错误消息所示,您要求git应用导致空补丁的补丁。最有可能的是,这意味着补丁已经应用,您希望使用git rebase --skip
删除它。
答案 1 :(得分:8)
如果git rebase --abort
无效,您仍然会得到
错误:无法读取“ .git / rebase-apply / head-name”:没有此类文件或目录
类型:
git rebase --quit
答案 2 :(得分:5)
你告诉你的存储库要改变。看起来您正在进行提交(由SHA 9c168a5标识),然后执行git rebase master
或git pull --rebase master
。
您正在将分支主服务器重新定位到该提交。您可以通过git rebase --abort
结束rebase。这将使你在开始变基之前处于你所处的状态。
答案 3 :(得分:4)
我最近进入了这个州。在rebase期间解决冲突后,我提交了更改,而不是运行git rebase --continue
。这会产生您在运行git status
和git rebase --continue
命令时看到的相同消息。我通过运行git rebase --abort
解决了这个问题,然后重新运行了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
答案 4 :(得分:2)
步骤1:继续前进git rebase --continue
步骤2:修复冲突,然后git add .
返回步骤1,现在如果显示no changes ..
然后运行git rebase --skip
然后返回步骤1
如果您只想退出变基,请运行git rebase --abort
所有更改完成后,运行git commit -m "rebase complete"
,您就完成了。
答案 5 :(得分:1)
我陷入了“基准状态”,我得到了
On branch master
Your branch is up to date with 'origin/master'.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
nothing to commit, working tree clean
但是运行git rebase --skip
会得到error: could not read '.git/rebase-apply/head-name': No such file or directory
。
运行rm -fr ".git/rebase-apply"
有帮助。
注意:当然,只有在您不关心基准额或您不再需要以前的基准额时,才执行此操作。
答案 6 :(得分:0)
我在git
git checkout
到 autorebase
# in my ~/.gitconfig file
[branch]
autosetupmerge = always
autosetuprebase = always
否则,当你在分支之间切换时它会自动合并,我认为这是最糟糕的选择。
然而,这会产生副作用,当我切换到某个分支然后git cherry-pick <commit-id>
时,每次发生冲突时我都会处于此奇怪的状态。
我实际上必须中止rebase
,但首先我修复了冲突,git add /path/to/file
文件(在这种情况下解决冲突的另一种非常奇怪的方法是什么?!),然后执行{{} 1}}。现在我可以中止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 .
,我会解决我的问题。
如果您跳过其他提交并且两个分支都不是 smooth (两者都缺少来自另一个的提交),则需要推送rebase
。
答案 7 :(得分:-1)
答案 8 :(得分:-1)
我的是从BitBucket弹出的错误。冉git am --skip
对其进行了修复。