2012-08-17 9 views
11

は私がマスターに切り替えると、それは私が40のコミットによって先だと言う:gitは、私が最新のように見えてプッシュプル(ファイルなし)で修正されたとき、私が40コミットと言うのはなぜですか?

$ git pull origin master 
From https://github.com/dmcouncil/dmWorkflow 
* branch   master  -> FETCH_HEAD 
Already up-to-date. 

しかし、私は次のことができます。

$ git checkout master 
Switched to branch 'master' 
Your branch is ahead of 'origin/master' by 40 commits. 

しかし、私はそれは私が最新だと言うのプルを行うとき

Michaels-MacBook-Pro-2:dmWorkflow durrantm$ git push origin master 
Everything up-to-date 

となりました '40 commits' というメッセージがなくなっている:これはと(40 commits MSGを除く)解決

$ git status 
# On branch mdd_play_settings_and_topics_reports 
nothing to commit (working directory clean) 

なぜ同期するには余計なプッシュが必要なのですか?
これにはもっと良いアプローチがありますか?

+0

タイトルを変更しました。あなたは、「先を行く」と言ったときに「後ろに」言った。 –

+0

また、ブランチ 'master'で開始しましたが、最後にブランチ 'mdd_play_settings_and_topics_reports'にあります。これを説明してください。 –

+0

プル後とプッシュ前に、'40 Commits ahead 'メッセージがまだ出力されていることを確認できますか? –

答えて

5

これは、origin/masterに関するローカル情報がリモートバージョンと異なることを意味します。 git fetchこれを修正します。 はgit fetchもあるので、あなたのケースでは機能します。あなたはまた、すべてのリモコンのための情報を取得しますgit remote updateを行うことができ、複数のリモコンを設定している場合だけ... Jamundファーガソンの答えに

を追加

+0

これは私にとって最も理にかなっています。 –

+3

この回答はこの特定の質問には関係していないようです。ローカルマスターは、origin/masterの* ahead *です。したがって、プルは何もしません。質問の私の読書は、'40コミット先読み 'メッセージが引っ張った後にまだ残っているということです。そして、メッセージはプッシュ後に消えます(期待どおり)。 –

+0

こんにちはアーロン、はい、それはあなたがそれを記述した方法は正しいです。うーん、私はこの答えをチェックしない(申し訳ありませんジャムンド)これはおそらく私の質問への答えではありませんgoonaです。 –

3

git fetchと同様に、リモートの状態に関する情報のみを更新します。コードの更新やマージは行われませんので、奇妙なステータスレポートや不正な差分を避けるため、頻繁に行うことをお勧めします。

リモートの後のスペースの代わりにスラッシュを使用するコマンドを使用する場合、経験則として、リモートブランチのローカル情報を参照することになります。 git command origin/master

使用例git command origin mastergit checkout origin/masterは、現在の地域情報に従ってコードに切り替わり、git diff origin/masterは、リモートブランチについてのあなたの現在のローカルな情報をあなたの現在のコードをdiffをします。つまり、定期的にフェッチしないと、迷惑な問題につながる可能性がある場合、ブランチを作成したり、リモートの古い情報/コードを使用してコードを簡単にdiffすることができます。

関連する問題