86

git logブランチの作成後に追加されたコミットのみを使用して、または他のコマンドで確認する方法はありますか?

usage: git log [<options>] [<since>..<until>] [[--] <path>...]
   or: git show [options] <object>...

    --quiet               suppress diff output
    --source              show source
    --decorate[=...]      decorate options
4

7 に答える 7

84

完全なドキュメントはこちら: https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html

次のようなレポがあるとします。

base  -  A  -  B  -  C  -  D   (master)
                \
                 \-  X  -  Y  -  Z   (myBranch)

レポのステータスを確認します。

> git checkout master
Already on 'master'
> git status ; git log --oneline
On branch master
nothing to commit, working directory clean
d9addce D
110a9ab C
5f3f8db B
0f26e69 A
e764ffa base

および myBranch の場合:

> git checkout myBranch
> git status ; git log --oneline
On branch myBranch
nothing to commit, working directory clean
3bc0d40 Z
917ac8d Y
3e65f72 X
5f3f8db B
0f26e69 A
e764ffa base

myBranch を使用していて、master からの分岐以降の変更のみを確認したいとします。2 ドット バージョンを使用します。

> git log --oneline master..myBranch
3bc0d40 Z
917ac8d Y
3e65f72 X

3 ドット バージョンは、master の先端から myBranch の先端までのすべての変更を示します。ただし、一般的なコミット B は含まれていないことに注意してください。

> git log --oneline master...myBranch
d9addce D
110a9ab C
3bc0d40 Z
917ac8d Y
3e65f72 X

注意してください: git logそしてgit diff異なる振る舞いをしてください! 動作は正反対ではありませんが、ほぼ次のようになります。

> git diff master..myBranch
diff --git a/rev.txt b/rev.txt
index 1784810..e900b1c 100644
--- a/rev.txt
+++ b/rev.txt
@@ -1 +1 @@
-D
+Z

> git diff master...myBranch
diff --git a/rev.txt b/rev.txt
index 223b783..e900b1c 100644
--- a/rev.txt
+++ b/rev.txt
@@ -1 +1 @@
-B
+Z

したがって、2 ドット バージョンは、master の先端 (つまり D) から myBranch の先端 (Z) までの差分を示しています。3 つのドットのバージョンは、myBranch のベース (つまり B) から myBranch の先端 (Z) までの違いを示しています。

于 2014-07-15T22:57:57.970 に答える
70

私は最初の答えで間違っていました。ダブルドット表記が必要です:

git log master..<your_branch_name>

予想とは異なる結果が得られたので、次のリポジトリ構造でテストを行いました。

a - - c - e - - g - i   master
  \ b - d / \ f - h     test

私はそれから試しましたgit log master..test

f - h

そしてgit log master...test

  - g - i
  f - h

したがって、二重ドットはコミットを示しますが( )testではなく、三重ドットはコミットをANDで示しますが両方では示しません。master^master tempmastertest

この質問の他の優れた回答は、最初に正しく、より良い説明があります(https://stackoverflow.com/a/24769534/1185838)。それはおそらく私の代わりに答えとしてマークされるべきです。この回答 ( https://stackoverflow.com/a/463027/1185838 ) を参照することもできます。これにより、ダブルドット表記とトリプルドット表記の違いをよりよく理解できました。

間違った答えをお詫びします!


古い回答 - 不正解

3 つのピリオドを使用して、2 番目のブランチが最初のブランチから分岐したコミットを参照します。この場合、ブランチがマスターから分岐したコミットを参照します。

git log master...<your_branch_name>

この場合、必ず3 つのピリオドを使用してください。

補足:その場合、git は自動的に HEAD ポインターを参照するため、ブランチ名を省略することもできます。次に例を示します。

git log master...

私の前の例と同等です。これは、コミットの比較が可能な場所ならどこでも機能します。

于 2013-01-03T22:36:32.200 に答える
13

作成したブランチにいる場合:

git log master..
于 2015-11-26T02:09:47.703 に答える
5

はい、「新しい」ブランチとマスター ブランチ (一般的には「マスター」という名前) を比較することができます。

git log master..<your_branch_name>

もちろん交換<your_branch_name>

于 2012-03-15T18:11:21.090 に答える
0

私は間違っている可能性がありますが、OPで正確に回答が求められているとは思わないので、新しい回答を追加したかったのです。他のソース管理システムではこれが非常に簡単にできるので、これは私が持っていた質問とまったく同じだと思います。

MASTERには次のものがあります。

'開発' | --> 「GP603」

ORIGIN(私のローカルシステム)には次のものがあります:

'GP603' [リモート/GP603 ブランチから複製]

次に、2 つの異なるコミットを実行しました。最初に変更ファイル X をコミットします。2 回目に変更ファイル X とファイル Y をコミットします。数日後、ローカル ブランチ ORIGIN/GP603 の状態に関する私の仮定を検証したいと思いました。これは、私が覚えている彼のコミットが2つしかないことを検証するために行ったことです(実際には、ブランチでのコミットは2つだけでした)

$ git log origin/GP.603...

(コミット 2) commit b0ed4b95a14bb1c4438c8b48a31db7a0e9f5c940 (HEAD -> GP.603) 作成者: xxxxxxx 日付: Wed xxxxx -0400

1. Fixed defect where the format of the file names and paths were being added to HashTable in such a way that they would never be matched in any comparison.  This was an
defect causing older failed files to never be moved to the correct directory (WindowsServiceApplication.cs)

2. Removing worthless and contextless message as it does nothing but clog the log with garbage making it harder to read (DinoutFileHandler.cs)

(コミット 1) commit 2c4541ca73eacd4b2e20d89f018d2e3f70332e7e 作成者: xxxxxxx 日付: Tue Oct xxxxx -0400

In ProcessFile() function need to perform a .ToLower() on the file path string when adding it o the failedFiles collection.
于 2018-10-17T20:31:06.907 に答える