作業ファイルのバージョンとリモート リポジトリ内の以前のバージョンを比較するにはどうすればよいですか?
たとえば、今日プルし、ローカル コピーに対して 6 ~ 8 回のコミットを実行してから、(特定のファイルの) 最新の作業バージョンとリモートまたはその他のバージョンの最新バージョンとの差分を確認したいとします。
たとえば、リモートブランチについて話している場合は、ローカルブランチの場合と同じように、ブランチに関連する祖先コミットをorigin/master
使用~
して参照できます。^
# what change was introduced to origin/master in the last 4 commits?
git diff origin/master origin/master~3
現在の作業ディレクトリをの5番目の最新のコミットorigin/master
と比較する場合は、最初の引数を省略します。
git diff origin/master~4
「最新の作業バージョン」(作業コピーとして使用します)との差分を表示するには、次を使用します。
git diff <remote>/<branch>
他の誰かがリモートにプッシュしたと思われる場合は、変更をフェッチする必要があります。
git fetch <remote> <branch>
git diff <remote>/<branch>
差分をファイルのみまたはディレクトリ内のすべてのファイルに制限する場合は、次を使用します。
git diff <remote>/<branch> -- /path/to/file
git diff <remote>/<branch> -- /path/to/ #all files in directory
を使用git difftool ...
して、ビジュアル差分ツールを開始できます (マシンにツールが存在すると仮定します)。
リモートブランチにコミットされ、私のワークスペースにもあり、ローカルブランチにコミットされてpath/to/file.txt
いるファイルがあるとします。origin/master
my-branch
path/to/file.txt
コミットされたリモート ブランチの最新バージョンと、ワークスペース内の (おそらくコミットされていない) バージョンの違い:
git diff origin/master:path/to/file.txt path/to/file.txt
path/to/file.txt
コミットされたリモート ブランチの 3 コミット前のバージョンと、ワークスペースの (おそらくコミットされていない) バージョンの違い:
git diff origin/master~3:path/to/file.txt path/to/file.txt
path/to/file.txt
リモート ブランチにコミットされた の最新バージョンと にコミットされた最新バージョンの違いmy-branch
:
git diff origin/master:path/to/file.txt my-branch:path/to/file.txt
git フェッチ; #これにより、リモート ブランチのコミットがローカル ツリーにアタッチされます git diff FETCH_HEAD #my_file の作業ディレクトリ バージョンとリモート ヒントを比較します。 と同じ git diff リモート/オリジン/ブランチ
ただし、最初に git-fetch を実行する必要があります。そうしないと、リモートのコミットをローカルで使用して比較することができなくなります