2017-10-31 2 views
0

だから、私はHEADとHEADの以前のバージョンとの差分を行う方法を知っている:特定のタグ/ブランチとその前のn番目のバージョンのgit diffをどうやってやっていますか?

git diff HEAD..HEAD~1 

か、単に

git diff HEAD~1 

、したがって、あなたはn番目を取得するためにHEAD~nを行うことができますバージョン。

しかし、タグ/ブランチ(それはHEADではありません)とその前のバージョンとの間でどのように違いがありますか?私は、ログファイルをスクロールして、それを比較するためのハッシュを選ぶことができると知っていますが、毎回スクロールするのは嫌ですが、時々ちょうど最後のn回の変更を見たいと思っています...

答えて

1

ねえ...答えは本当にシンプルで、私を顔で見つめていた。

私はtest_branchという名前の枝を持っている場合、私はHEADと同じトリックを行うことができ、すなわち:

git diff test_branch..test_branch~1 

以上の一般

git diff test_branch..test_branch~<n> 

この表記は、すべてのタグ/ブランチの総称であります - 私は(何らかの未知の理由のために)HEAD専用だと思っていました......まだ学んでいます!

+1

右。実際には 'git diff'(ただし' git diff'のみ - 他のすべてのGitコマンドは2つの点を意味のあるものとして扱います!)は本質的にそれらを捨てるだけです: git diff commit1 commit2'を実行して、*任意の*スナップショットのペアを確認します。彼らは支店名などで関連付ける必要はありません。 – torek

+0

@torek、そのアップデートのおかげで:) :)私は "スナップショット"も "スナップショット〜n"になると思いますか? - これまでのところHEADとブランチ名しかテストしていませんでした。 –

+0

はい、タグ名とハッシュIDの後に '^ 'や '〜'という接尾辞を付けることができます。完全なストーリーについては、[gitrevisions](https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html)を参照してください(多くの構文がありますが、私は主に ' git diff'は '..'のための特別な処理を持ち、' ​​... 'のためにも、他のすべてのGitコマンドはgitrevisionsのように動作します)。 – torek

関連する問題