ローカルリポジトリが最新かどうかを知りたいです(最新でない場合は、理想的には変更を確認したいと思います)。
git fetch
またはを行わずにこれを確認するにはどうすればよいgit pull
ですか?
回答:
git fetch --dry-run
マニュアルを試してください(git help fetch
)は言う:
--dry-run
Show what would be done, without making any changes.
git fetch --dry-run
も何も表示されないのはなぜですか?
--all
ますか?
git pull
とほぼ同等git fetch && git merge
です。いずれかの時点でを使用せずにフェッチを実行した場合は--dry-run
、すでにローカルでフェッチを行っています。
git remote show origin
結果:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
まずgit remote update
、を使用して、リモート参照を最新の状態にします。次に、次のようないくつかのことのいずれかを実行できます。
git status -uno
追跡しているブランチが進んでいるか、遅れているか、分岐しているかがわかります。それが何も言わない場合、ローカルとリモートは同じです。サンプル結果:ブランチDEVで
ブランチは「origin / DEV」より7コミット遅れており、早送りできます。
(「gitpull」を使用してローカルブランチを更新します)
git show-branch *master
名前が「master」で終わるすべてのブランチ(例:masterおよびorigin / master)のコミットが表示されます。-v
git remote update(git remote -v update
)を使用すると、どのブランチが更新されたかを確認できるため、これ以上のコマンドは必要ありません。
git remote update ; git status -uno
それを解決しました。git fetch --dry-run
ローカルがリモートの背後にある場合でも、出力はありませんでした。
git status -uno
ローカルブランチが元のブランチで最新であるかどうかを確認するために使用できます。
git remote update ; git status -uno
ですが、トリックをしました!git fetch --dry-run
私はそれを期待(ととき何も出力を与えないgit pull
事を引くでしょう)。
実際にはそうgit fetch
ではありませんが、ローカルブランチは変更されないため、どのように問題が発生するかはわかりません。
もう1つの方法は、リモートブランチのステータスを表示して、リポジトリだけでなくすべてのリモートでブランチを
git show-branch remote/branch
確認できる比較として使用することgit show-branch *branch
です。詳細については、この回答を確認してくださいhttps://stackoverflow.com/a/3278427/2711378
次の2つのコマンドを発行する必要があります。
git fetch
ローカルリポジトリをリモートサーバー上のファイルと比較する前に、実行する必要があります。
このコマンドは、リモートトラッキングブランチのみを更新し、git merge
またはを呼び出すまでワークツリーに影響を与えませんgit pull
。
フェッチした後、ローカルブランチとリモートトラッキングブランチの違いを確認するには、ここで説明するようにgitdiffまたはgitcherryを使用できます。
これは、git fetch
またはを使用しないと不可能git pull
です。リモートリポジトリにアクセスして「最新」の意味を確認せずに、リポジトリが「最新」であるかどうかをどのように知ることができますか?
git pull
、OPが明示的に禁止しているを使用していることに注意してください。
git status -uno
これは機能し、git show-branch *master
すべてのマスターブランチのステータスを確認するためにも使用できます。あなたはまだそれが不可能だと言っていますか?リモートにアクセスできる限り、ブランチのステータスを確認できます。
git status
ローカル参照のステータスのみを通知します。ローカル参照がリモート参照で最新であるかどうかは通知しません。繰り返しますが、リモートリポジトリの状態を取得せずに、リモートリポジトリの状態を知ることは論理的に不可能です。限目。これは時空の基本法則です。