正在重新设定基准。无法提交。如何进行或停止(中止)?


139

当我跑步时:

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添加 一无所有。

Answers:


255

重新设置不会在后台发生。“进行中的重新设置”表示您开始了重新设置,并且由于冲突导致重新设置被中断。您必须恢复变基(git rebase --continue)或中止变基(git rebase --abort)。

正如错误消息所git rebase --continue提示的那样,您要求git应用一个补丁,导致补丁为空。最有可能的是,这意味着该补丁已被应用,您想使用来删除它git rebase --skip


我更新了帖子,以包含git rebase-根据您的请求继续。
约瑟夫·钱伯斯

2
好的,然后“它变基-继续不执行任何操作”是不准确的。您应该已经编写了“ git rebase-继续按照以下说明继续错误...”以获取帮助。
Matthieu Moy 2015年

3
关于此的文档非常糟糕,它会不断重复您“ git rebase --continue”的操作,最终您将以一种无限的方式说出来。
Jean-Paul

6
git rebase --skip做到了!
Borzh

因为这是相对初学者(像我这样)的问题,所以我认为值得一提的所有关于运行此或该话题的讨论-需要打开一个新终端并返回回购...如果没有这个问题,我将无法解决任何问题这样做
Kdean571 '17

10

我陷入了“恢复原状”状态,

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"帮助。

注意:当然,仅当您不关心重新基准设置或不愿再使用以前的重新基准设置时,才执行此操作。


8
  • 步骤1:继续前进 git rebase --continue

  • 步骤2:然后修复冲突 git add .

  • 返回第1步,现在如果提示“ no changes ..运行”,git rebase --skip则返回第1步

  • 如果只想退出rebase运行 git rebase --abort

  • 完成所有更改后,即可运行git commit -m "rebase complete"


6

您告诉存储库重新设置基准。看起来您正在提交(由SHA 9c168a5标识),然后执行git rebase mastergit pull --rebase master

您正在将分支主控重新部署到该提交。您可以通过结束变基git rebase --abort。这将恢复到开始重新设置基准之前的状态。


我从不做git rebase/pull --rebase master。由于冲突,我经常处于这种状态。我更改文件,执行拉动操作,恢复更改,新补丁为空,这会伤及git的大脑,然后决定进入此“ rebase模式” ...
Alexis Wilke

6

我最近进入了这种状态。解决了在调整基准期间的冲突之后,我提交了更改,而不是运行git rebase --continue。这将产生与运行git statusand git rebase --continue命令时所看到的相同消息。我通过运行来解决了该问题git rebase --abort,然后重新运行了基准库。可能还会跳过重新设定基准,但是我不确定会导致什么状态。

$ 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

另外的--abort(+1),你现在有--quitstackoverflow.com/a/41363262/6309
VonC

解决冲突后。然后调用git commit。做其他工作,然后再次调用git commit。如果使用git rebase --abort这个方法,则希望提交冲突后您正在做的所有工作。所以要小心
Jin

3

如果 git rebase --abort不起作用,您仍然得到

错误:无法读取“ .git / rebase-apply / head-name”:没有此类文件或目录

类型:

git rebase --quit

0

我安装我的gitautorebasegit checkout

# in my ~/.gitconfig file
[branch]
    autosetupmerge = always
    autosetuprebase = always

否则,当您在分支之间切换时,它会自动合并,我认为这是默认情况下最糟糕的选择。

但是,这有一个副作用,当我切换到分支,然后每次遇到冲突时,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

--force如果你跳过其他提交和两个分支不上推,需要平滑(两者都缺少来自其他提交)。


“否则,当您在分支之间切换时,它将自动合并” –嗯,不。切换分支时,Git不会进行任何类型的合并或变基。autosetupmergegit pull新分支的配置方式有关。
Marnen Laibow-Koser

在我当时正在解决这个问题的时候,它确实在进行各种代码的合并。我当前的设置似乎跳过了这个问题。还有一个问题,就是在尝试切换之前没有对当前分支进行提交+推送。
Alexis Wilke

Git会告诉您,如果您未提交的更改会阻止切换分支,那么在那里不必担心太多,在那里吗?还是您在谈论其他事情?
Marnen Laibow-Koser

0

另一种选择中止/ SKIP /继续IDE

VCS> Git>中止重新设置

在此处输入图片说明


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.