web-dev-qa-db-ja.com

あなたのブランチは3コミットで 'Origin/master'より進んでいます

git statusを実行すると以下のようになります。

Your branch is ahead of 'Origin/master' by 3 commits.

これを修正する方法はgit pull --rebaseを実行することです。他の投稿で読んだことがありますが、正確には何がリベースされているのでしょうか。

262
FluxEngine

あなたはあなたのローカルマスターに変更を加え、リモートにそれらをプッシュしなかったのであなたはそのメッセージを得ます。それを「解決する」にはいくつかの方法がありますが、通常はワークフローがどのように見えるかによって異なります。

  • 優れたワークフローでは、リモートのmasterコピーが適切なものになるはずですが、ローカルのmasterコピーはリモートにあるコピーの単なるコピーになります。このワークフローを使用すると、二度とこのメッセージを受け取ることはありません。
  • もしあなたが別の方法で作業していて、あなたのローカルな変更がプッシュされるべきなら、Originがあなたのリモートであると仮定してgit Push Origin
  • ローカルの変更が悪い場合は、それらを削除するか、ローカルのマスターをremotegit reset --hard Origin/masterの状態にリセットしてください。
564
iberbeu

修正するものはありません。あなたは単に3つのコミットをして、それらをまだリモートブランチに移動していません。あなたがしたいことに応じて、いくつかのオプションがあります。

  • git Push:あなたの変更をリモートに移動します(リモートに既に他の変更がある場合これは拒否されるかもしれません)
  • 何もしないでコーディングを続け、別の日に同期する
  • git pull:(もしあれば)リモートから変更を取得し、それらをあなたの変更にマージする
  • git pull --rebase:上記と同じですが、リモートの変更に加えてコミットをやり直すようにしてください。

あなたは古典的な状況にあります(しかし、大抵のワークフローではマスターにあまりコミットしないでしょう)。これが私が通常することです:私の変更を確認します。たぶんそれらに化粧品をするためにgit rebase --interactiveをして、吸うものを落として、それらをより論理的にするためにそれらを並べ替えなさい。それではgit Pushを使ってそれらをリモートに移動しましょう。私のローカルブランチが最新ではないためにこれが却下された場合:git pull --rebase:最新の変更に基づいて作業をやり直すため、そしてgit Pushをもう一度実行します。

30
pmr

これら4つの簡単なコマンドを使う

ステップ1git checkout <branch_name>

これはそのブランチに入ることは明らかです。

ステップ2git pull -s recursive -X theirs

リモートブランチの変更を取り、矛盾が生じた場合はそれらの変更で置き換えます。ここでgit statusを実行すると、あなたはこのようなものになるでしょう あなたのブランチは、3コミットで 'Origin/master'より進んでいます

ステップ3git reset --hard Origin/<branch_name>

ステップ4git fetch

ブランチをハードリセットします。

楽しい。

20
Abhishek Goel

Bitbucketのプルリクエストをマージした後、この問題に遭遇しました。

しなければならなかった

git fetch

それはそれでした。

11
Bitonator

gitからのこのメッセージは、あなたがあなたのローカルリポジトリで3回コミットをしたが、それらをmasterリポジトリに公開していないことを意味します。そのために実行するコマンドはgit Push {local branch name} {remote branch name}です。

コマンドgit pull(とgit pull --rebase)は、あなたが自分のローカルレポジトリにはない、リモートレポジトリにコミットがあるときの他の状況のた​​めのものです。 --rebaseオプションは、gitがあなたのローカルコミットを脇へ移動させ、リモートリポジトリと同期し、そして新しい状態からあなたの3つのコミットを適用しようとすることを意味します。競合がある場合は失敗するかもしれませんが、それからそれらを解決するように促されます。 git rebase --abortを使用して競合を解決する方法がわからない場合は、rebaseを中止することもできます。この場合、git pull --rebaseを実行する前の状態に戻ります。

10

通常、マスターと異なるコミットを確認しなければなりません。

git rebase -i Origin/master

このようにして、コミットを確認してそれをドロップするかピックするかを決めることができます。

6
Alex

もしあなたのgitがあなたが先にコミットしていると言ったら、まず最初に、

gitプッシュオリジン

Uがリポジトリにあるすべての最新の作業をプッシュしたことを確認する

その後、

git reset - ハードオリジン/マスター

リセットしてリポジトリと一致させる

3
Pratik Khadka

私がBitbucketでpull requestをマージした後、これは私に一度だけ起こりました。

私はしなければならなかった:

git fetch

私の問題は解決しました。私はこれが役立つことを願っています!

1