リベースが進行中です。コミットできません。続行または停止(中止)する方法


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ステータスには何もありません。リベースを待っています。私に何ができる?

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。何もありません。

回答:


255

バックグラウンドでリベースは行われません。「リベースが進行中」とは、リベースを開始し、競合のためにリベースが中断されたことを意味します。リベースを再開(git rebase --continue)または中止()する必要がありgit rebase --abortます。

からのエラーメッセージがgit rebase --continue示唆するように、空のパッチとなるパッチを適用するようにgitに要求しました。ほとんどの場合、これはパッチがすでに適用されており、を使用してそれを削除したいことを意味しgit rebase --skipます。


投稿を更新してgit rebaseを含めました-リクエストに従って続行してください。
ジョセフチェンバーズ

2
さて、「それはリベースします-継続は何もしません」は不正確でした。ヘルプを得るには、「git rebase --continueエラーを次のように...」と書いておく必要があります。
Matthieu Moy 2015

3
これのドキュメントは非常にひどく、それはあなたが 'git rebase --continue'を繰り返すことを繰り返し、あなたはそれを言う無限の方法に終わります。
Jean-Paul

6
git rebase --skipがやった!
ボルジ

これは相対的な初心者(私のような)への質問なので、これを実行するか、それを実行するかのすべての話に言及する価値があると思いました-新しいターミナルを開いてリポジトリに戻る必要があります...この問題の私のインスタンスでは何も実行されませんそれを行う
Kdean571

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:CONFLICTSを修正する git add .

  • ステップ1 に戻りno changes ..、「実行」と表示されたら、ステップ1 git rebase --skipに戻ります。

  • リベースを終了したいだけなら git rebase --abort

  • すべての変更が完了したら、実行git commit -m "rebase complete"して完了です。


6

リポジトリをリベースするように指示しました。コミット(SHA 9c168a5で識別)を実行していたgit rebase masterか、またはを実行したようですgit pull --rebase master

ブランチマスターをそのコミットにリベースしています。リベースはから終了できgit rebase --abortます。これにより、リベースを開始する前の状態に戻ります。


私は決してしませんgit rebase/pull --rebase master。私はしばしばこの状態になります...紛争のために。ファイルを変更し、プルし、変更を復元すると、新しいパッチが空になり、gitの頭が痛くなり、この「リベースモード」に入ると決めます...
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を使用すると、コミットの競合後に実行しているすべての作業が不要になります。だから、気をつけて
ジン

3

もしgit rebase --abortdoesntの仕事とあなたはまだ取得

エラー: '.git / rebase-apply / head-name'を読み取れませんでした:そのようなファイルまたはディレクトリはありません

タイプ:

git rebase --quit

0

自動リベースするgitようにセットアップしましたgit 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>

2番目git commit .は中止から来ているようです。rebase早く中止すべきだとわかった場合は、回答を修正します。

--forceあなたが他のコミットをスキップして、両方の枝がされていない場合は、プッシュのが必要である滑らか(両方とも他からのコミットを表示されません)。


「それ以外の場合、ブランチを切り替えると自動的にマージされます」—ええと、いいえ。ブランチを切り替えても、Gitはいかなるマージやリベースも行いません。新しいブランチの設定autosetupmerge方法git pullと関係があります。
Marnen Laibow-Koser

私がその問題と戦っていたとき、それは確かにある種のさまざまなコードのマージを行いました。私の現在のセットアップはその問題をスキップするようです。切り替えを試みる前に、現在のブランチのコミット+プッシュを行わなかったという問題もあります。
Alexis Wilke

コミットされていない変更によりブランチの切り替えが妨げられるかどうかをGitが教えてくれるので、そこに心配することはあまりありませんね。それとも別のことを話しているのですか?
Marnen Laibow-Koser

0

IDEからABORT / SKIP / CONTINUEする別のオプション

VCS> Git>リベースの中止

ここに画像の説明を入力してください


0

鉱山はBitBucketからポップアップしたエラーでした。ランはgit am --skipそれを修正しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.