ローカルリポジトリが最新かどうかを知りたいです(最新でない場合は、理想的には変更を確認したいと思います)。
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)のコミットが表示されます。-vgit 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ローカル参照のステータスのみを通知します。ローカル参照がリモート参照で最新であるかどうかは通知しません。繰り返しますが、リモートリポジトリの状態を取得せずに、リモートリポジトリの状態を知ることは論理的に不可能です。限目。これは時空の基本法則です。