正在进行基地调整。不能提交。如何继续或停止(中止)?

当我跑步时:

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状态..我只是在等待重新调整。我该怎么办?

< p > 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添加。无关。

326348 次浏览

后台不会发生Rebase。“rebase in progress”意味着你开始了一个rebase,而这个rebase因为冲突而中断了。你必须重新开始 (git rebase --continue)或abort它(git rebase --abort).

正如来自git rebase --continue的错误消息所表明的那样,你要求git应用一个补丁,结果是一个空补丁。最有可能的是,这意味着补丁已经被应用,你想使用git rebase --skip删除它。

你告诉你的存储库要改基。看起来你正在进行提交(由SHA 9c168a5识别),然后执行git rebase mastergit pull --rebase master

你是在将分支master重新基于那个提交。你可以通过git rebase --abort结束改基。这会让你回到你开始变基之前的状态。

我最近也陷入了这种状态。在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

我在git checkout上将我的git设置为autorebase

# 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是必需的。

IDE返回中止/跳过/继续的另一个选项

VCS > Git > Abort rebase

enter image description here

  • 步骤1:继续git rebase --continue

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

  • 返回步骤1,现在如果它说no changes ..,那么运行git rebase --skip并返回步骤1

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

  • 一旦所有的改变都完成了,运行git commit -m "rebase complete",你就完成了。


请注意:如果你不知道发生了什么,只是想回到回购的地方,那么只需执行:

git rebase --abort

阅读rebase: git-rebase医生

我被困在了'rebase status',我

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

注意:当然,只有在你不关心重基的时候,或者你被困在以前的重基上,你不想再这样做了。

我的是BitBucket弹出的一个错误。运行git am --skip修复它。

如果git rebase --abort不工作,你仍然得到

错误:无法读取。git/rebase-apply/head-name':没有这样的文件或目录

类型:

git rebase --quit

我也面临着同样的问题,在我的情况下,当我试图重新建立基础时,我得到了冲突,一旦我解决了所有的冲突,并试图添加一个提交消息,但它在我的客户端编辑器中显示这个错误(VS Code)

enter image description here

为了解决这个问题,我们需要触发这个命令 git commit -C HEAD@{1}

  • git commit -C HEAD@{1}它将指向你在做rebase之前的提交

有时候在VS代码中,它仍然显示正在进行rebase,为了解决这个问题,你需要触发这个命令rm -rf .git/REBASE_HEAD

  • rm -rf .git/REBASE_HEAD它将删除“rebase_head”;从你的当地

我检查了HEAD基地的一个新分支。这工作。