2017-01-05 8 views
0

私は私が持っている場合は、リモートmaster支店ではありません私の地元masterブランチにコミットし、その後、私は得ることができます「あなたのブランチが先に起源のある/ Xによってマスターがコミットする」ことを理解しています。マスターブランチは「既に最新」ですが、「origin/master by 4 commit」より先ですか?

しかし、I git pull origin master後、私は「すでに最新」メッセージを参照してください。だから私はそれがまさにそれを意味すると思った:私のコミットのどれもがマスターの後ろに/後ろにいない。

しかし、私はgit statusまだ「あなたのブランチが先に起源のある/ Xによってマスターのコミット」このメッセージを受信して​​います。私がしたときでもgit pull -f origin master私はまだこのメッセージを得る!!私が「すでに最新の状態」になっていると、それはどのように可能ですか?

私はthisような質問を理解し、彼らはまだ、なぜ「先」「最新の」と教えてくれませんか?

+0

あなたは限り、あなたはそのブランチにプッシュしていないだろうと先にリモートブランチのです。 –

答えて

1

のは、グラフの下にすることにより説明してみましょう:

が、これはリモートのmasterブランチであると仮定し

A---B---C origin/master 

そして、これは、ローカルのmasterブランチである、あなたはXは、ローカル、

A---B---C---D---E---…---N master 
にコミットします

それで、ローカルのコミットに既に存在するローカルのリモートブランチ(コミットA、B、C)を引き出す場合、gitはalready up-to-date messageを表示します。そして、これはgitの状態と一貫しています。メッセージYour branch is ahead of origin/master by X commits

+0

さて、 "先行する"とは、コミットの点で時間順に進むことを意味していますか? – Candic3

+0

はい、先はローカルに追加したコミットXを意味します。 –

+0

@ Candic3:時代遅れではないが*場所*に基づいているので、それはそんなに「時系列的に」トポロジー的ではないと思う。 *あなたが先んじているのであなたは前にいます。もし私があなたの 'origin 'と* I *を共有リポジトリに書き戻して、' origin'より先に取得して* I *プッシュして*最初に*あったら、 'origin'をコミットします*私の*コミットによってあなたより先行するでしょう)、そしてあなたはあなたのコミットをまだ 'origin'にしていないでしょう(あなたも' origin'よりも*先です)。しかし、私がこのプッシュ "レース"に勝った場合、それらのコミットを収集し、それらをどのように統合するかを理解することはあなた次第です。 – torek

関連する問題