2013-03-22 13 views
7

皆さん、Gitのブランチは、レポが同期して

これはちょうど私には意味がありませんgitの中で何かである一方で、ここで私はgit statusを行う

  • を何が起こるかである前方の起源/マスターのです私はブランチマスターであり、コミットするものは何もなく、作業ディレクトリがきれいであることがわかります。
  • 私はしますgit pull origin master私はコードの束を引っ張って、問題はありません。私はgit statusを行うときにあなたのブランチが先に1による起源/マスターのである
  • は今、私はコミット新しい行を参照してくださいあなたのブランチが先にある何が私のローカルリポジトリおよびリモートリポジトリが完全に同期している

、起源/マスターの1つのコミットでを意味する、これは非常に混乱しています。どんな入力/フィードバックも高く評価されます。ありがとう

+1

なぜあなたのリポジトリがリモートと同期していると思いますか? –

+0

プルではデフォルトでリベースしていませんか?あなたは引っ張るのではなく、別々にフェッチしてマージすることができますか? –

+0

"gitk"を使うことができます。どちらのコミットに「マスター」ラベルと「原点/マスター」ラベルが付いているかを確認します。 –

答えて

9

私は正確に何を参照してください経験しているとして、あなたのリモートブランチに(必要に応じ)、それを押してください。 は私がgit-scm.com上の適切な説明を見つけることができませんが、私はそれがこのようなものであると信じる:私は、原点からのレポのクローンを作成

  1. 、起源はマスターを持っていると私は私の中で今のマスターを持って言うことができますローカルrepo
  2. 現在の起源とあなたのレポは最後のコミットへの参照を持っています。このリファレンスは、masterブランチであり、基準が
  3. が(他は、あなたが)原点マスターに新しいコミットをプッシュするのは誰か言ってみましょう、あなたの地元のレポで、原点に同じである
  4. あなたは今、あなたがgit statusgit pull origin master
  5. を行うのですかとあなたのブランチは起源/マスターに先んじていることがわかります。あなたの地元のレポに新しいコミットがなく、何もプッシュしない! (この例では、手順1(クローン作成)以来ローカルに何もコミットしていませんでした)

==>私はマスター時にgit pull originを実行してこれを修正します。

git pull origin masterは、元のブランチからすべての新しいコミットをローカルブランチにプルします。

git pull originは、マスタへの参照を、マスタが原点で参照されているコミットと等しくなるように再設定します。 (これが起こらなかった場合、git-bashはあなたがコミットをたくさんしていると思うでしょう!コミットツリーには、あなたのマスター参照があるコミットの後にたくさんのコミットがあるからです)

これはあなたにどんな意味ですか?それはまた、ハード証拠/ドキュメントと私のtoughtsビットをサポートすること自由に感じなさい私にはない:)

:)

+0

であるので、 'git pull origin 'も同様にblunderboyの答えを読んでください。そこにuser1781472は彼の問題を解決したことと彼の問題を解決した理由についてのコメントを述べています。 – deblendewim

4

ローカルマシンにコミットを追加しましたが、ローカルマシンにはまだリモートサーバーに送信されていません。

、あなたの変更がリモートにコミット送信がgit pushコマンドで実行され、リモートリポジトリと共有する必要があります自信を持っている場合:

git push orgin master:master 
+0

いいえ、thats全体のポイント、私はコミットされていない私のローカルマシン上に何も持っていない。 – user1781472

+0

** git push origin master **と** git push origin masterの違いは何ですか?origin/master ** – user1781472

+0

まず最初に私の間違いですが、comandは 'git push origin master:master'を読むべきです - 役職。 – LeGEC

0

は実際に、それはあなたの仮定あなたの地元の支店や遠隔ことですブランチは同期しています。あなたの地元支部が起源/マスターより先に1コミットしていると言っているのなら、それは確かです。私たちは皆GITを信頼しています。

これはテストに使用します。

git checkout master // You move to master branch 
cat .git/HEAD //shows the commit on which HEAD is pointing to 

git checkout origin/master //you switch to origin master branch 
cat .git/HEAD 

ローカルマスターとリモートマスターブランチのHEADが同じコミットを指す場合は、両方が同期していることがわかります。

あなたのローカルブランチが先に1コミットのであれば、単に

git push origin master 
+1

答えてくれてありがとう、私はちょうどこれを読む前にローカル(gitログ)とリモートの両方をチェックして、両方とも同じ最近のコミットを持っています。それから、私は** git fetch **を行いました。そして、そのメッセージは消えました。私の枝は1つ前にコミットしています。私がgit pullで得たもののように見えるそれは押し込まれていない私のコミットであると思ったが、git fetchで解決されたものは何も考えられていない。 – user1781472

+0

1.あなたは起源へのコミットをプッシュした。あなたがそれを押していなければ、あなたのコミットは経過できません。 2。ハードオプションでHEADをリセットしましたか?これはブランチからコミットも削除するためです。 – sachinjain024

+1

@ user1781472:git-scmのウェブサイトで私は以下を見つけました:リモート追跡ブランチを更新してください: $ git fetch origin 上記のコマンドは、リモートのrefs/heads/namespaceからすべてのブランチをコピーしてローカルのrefs/remotes/origin/namespace(ブランチを除く)。 .fetchオプションは、デフォルト以外のrefspecを指定するために使用されます。 – deblendewim

1

あなたが考えているようあなたがリモートリポジトリと同期して、100%ではありません。はい、リモートリポジトリからすべてを持っています。しかし、あなたのローカルマスターは、1つのコミットによって起点/マスターに先んじています。

を実行し、この、私達に結果を示しています。

git log --all --graph --pretty=format:'%h %d %s' 

私のようなものを参照することを期待:私が正しくあなたのポストを読んでいる場合は、1があなたのために先にコミットしている

* (master) Commit D 
* (origin/master) Commit C 
* Commit B 
* Commit A 

をリモートブランチはCにありますが、コミットDをリモートリポジトリにプッシュアップするには、git pushが必要です。その後、100%同期します。

関連する問題