11

マスターに切り替えると、40 コミット進んでいると表示されます。

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

しかし、プルを実行すると、最新の状態であると表示されます。

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

40 commitsただし、次の方法でこれを解決 (メッセージを削除) できます。

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

' 40 commits' メッセージはなくなりました。

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

同期するために、(何もないように見えるものの) 余分なプッシュを行わなければならないのはなぜですか?
これに対して私が取ることができるより良いアプローチはありますか?

4

2 に答える 2

6

これは、オリジン/マスターに関するローカル情報がリモートバージョンとは異なることを意味します。git fetchそれを修正します。git pullそれはまたするので、あなたのケースで動作しますgit fetch

于 2012-08-17T15:55:59.747 に答える
3

Jamund Fergusonの答えに追加するだけです...

git remote update複数のリモートが構成されている場合は、すべてのリモートの情報を取得することもできます。

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

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

使用例:git checkout origin/master現在のローカル情報に従ってコードに切り替えgit diff origin/master、現在のコードとリモート ブランチに関する現在のローカル情報を比較します。これは、面倒な問題につながる可能性がある定期的にフェッチしないと、簡単にブランチを作成したり、リモートの古い情報/コードとコードを比較したりできることを意味します。

于 2012-08-17T16:44:16.947 に答える