web-dev-qa-db-ja.com

「git fetch」による変更の場所

git pullの後に情報を失いたくなかったので、以前にgit fetchをしました。 git fetchの後の新しい変更はどこで読むことができますか? FETCH_HEADファイルにアクセスしましたが、大きな数に過ぎませんでした。

43
epsilones

git fetch Originは、デフォルトで「Origin」という名前のリモートからすべてを取得し、そのリモートのいわゆる「リモート追跡ブランチ」を更新(または作成)します。 「master」および「feature」という名前のブランチを含む「Origin」という名前のリモートでは、git fetch remoteを実行すると、「Origin/master」および「Origin/feature」という名前のリモート追跡ブランチが更新されます(または存在しない場合は作成されます)。それらはgit branch -aの出力で見ることができます(「-a」に注意)。

さて、通常のGitのセットアップでは、ローカルブランチ(の一部)は特定のリモートブランチ(通常は同じ名前)に従います。つまり、ローカルの「マスター」ブランチは「オリジン/マスター」などに従います。

したがって、フェッチした後、リモートの「マスター」がローカルの「マスター」と比較したものを確認するには、Gitにこれを正確に表示するように依頼します。

git log Origin/master ^master

つまり、「「マスター」から到達可能なコミットを含まない「オリジン/マスター」から到達可能なすべてのコミット」、または

git log master..Origin/master

同じ意味を持ちます。詳細については、 "gitrevisions"マニュアルページ を参照してください。特に「範囲の指定」の部分については。 git-logマニュアルページ の例を参照してください

git logの出力は、それに影響を与える多くのオプションをサポートするので、自由にカスタマイズできます。

ローカルブランチには、一致するリモートブランチに含まれていない(まだ)コミットもあることに注意してください。それらの概要を取得するには、(できれば)明白な理由でgit logに渡されたリビジョンを逆にする必要があります。

いつものように、ツールの使用を開始する前に、基礎となる概念を理解することは educateyourself に不可欠です。してください。

60
kostix

試して

git log --oneline --decorate Origin/master

これにより、master remoteのOrigin headから変更ログが得られます(必要に応じて、他のリモートブランチに置き換えることができます)。次のような出力が得られます。

234121 (Origin/master) Commit message 5
872373 Commit message 4
623748 Commit message 3
235090 (master) Commit message 2
192399 Commit message 1

マークされたコミットは(master)はローカルmasterブランチのヘッドです。マークされたコミットは(Origin/master)は、リモートのmasterブランチのヘッドです。

5
Barend

GIT PULLを実行した場合に変更されるファイルを確認するだけの場合は、次の操作を行います。

git fetch && git diff HEAD @{u} --name-only

コミットされていないローカル変更を含め、現在のバージョンと着信バージョンのすべての違いを確認するには、次のように入力します。

git fetch && git diff @{u} --name-only
4
Eliezer Berlin