正在进行改革。无法提交。如何进行或停止(中止)?

时间:2015-04-27 18:08:27

标签: git git-rebase

当我跑步时:

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。没什么。

9 个答案:

答案 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 mastergit pull --rebase master

您正在将分支主服务器重新定位到该提交。您可以通过git rebase --abort结束rebase。这将使你在开始变基之前处于你所处的状态。

答案 3 :(得分:4)

我最近进入了这个州。在rebase期间解决冲突后,我提交了更改,而不是运行git rebase --continue。这会产生您在运行git statusgit 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)

IDE

中的取消/跳过/继续的另一个选项
  

VCS> Git>中止重新设置

enter image description here

答案 8 :(得分:-1)

我的是从BitBucket弹出的错误。冉git am --skip对其进行了修复。