Jak zobaczyć zmiany w zatwierdzeniu Git?

Kiedy robię git diff COMMIT widzę zmiany pomiędzy tym commitem a głową (o ile wiem), ale chciałbym zobaczyć zmiany, które zostały wprowadzone przez ten commit.

Nie znalazłem żadnych oczywistych opcji w diff/log, które dałyby mi to wyjście.

Author: Peter Mortensen, 2013-07-10

16 answers

Aby zobaczyć różnicę dla konkretnego COMMIT hash:

git diff COMMIT~ COMMIT pokaże Ci różnicę pomiędzy przodkiem COMMIT a COMMIT. Zobacz strony podręcznika dla git diff aby dowiedzieć się więcej o komendzie i gitrevisions o notacji ~ i jej przyjaciołach.

Alternatywnie, git show COMMIT zrobi coś bardzo podobnego. (Dane commita, w tym jego diff-ale nie dla commitów scalających.) Patrz strona Man git show .

 1336
Author: Nevik Rehnel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-28 15:45:25

Jak wspomniano w " skrót dla Diffa git commit z jego rodzicem?", można również użyć git diff z:

git diff COMMIT^!

Lub

git diff-tree -p COMMIT

Z git show, musisz (aby skupić się tylko na Diffie) zrobić:

git show --color --pretty=format:%b $COMMIT

Parametr COMMIT jest / align = "left" / :

A commit objectlub object, które mogą być rekurencyjnie przeniesione do obiektu commit. Poniżej znajdują się wszystkie commit-ishe: obiekt commit, obiekt znacznika , który wskazuje na obiekt zatwierdzania, obiekt znacznika, który wskazuje na obiekt zatwierdzania, itp.

Zobacz gitrevision "określanie zmian" , aby odwołać się do commit-ish.
Zobacz także " co oznacza Tree-ish w Git?".

 382
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:56

Możesz również wypróbować ten prosty sposób:

git show <COMMIT>
 206
Author: Lakhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-02 23:07:03

git show pokazuje zmiany wprowadzone w ostatnim zatwierdzeniu.

Odpowiednik git show HEAD.

git show HEAD~1 / align = "left" /

 50
Author: Adam Salma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-16 01:50:15

Najpierw uzyskaj ID zatwierdzenia używając

git log #to list all

Lub

git log -p -1 #last one commit id

Copy commit id.

Teraz używamy dwóch metod do wyświetlania zmian z określonego commita,

Metoda 1:

git diff commit_id^! #commit id something like this 1c6a6000asad012

Metoda 2:

git show commit_id
For example: git show 1c6a600a
 22
Author: Mohideen ibn Mohammed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 20:34:10

Ze strony man dla git-diff(1):

git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>

Użyj trzeciego w środku:

git diff [options] <parent-commit> <commit>

Również z tej samej strony podręcznika, na dole, w sekcji przykłady :

$ git diff HEAD^ HEAD      <3>

Porównaj wersję przed ostatnim zatwierdzeniem i ostatnim zatwierdzeniem.

Co prawda jest to sformułowane trochę myląco, byłoby mniej mylące jak

Porównaj najnowszy commit z commitem przed nim.

 21
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-26 16:00:58

Poniższe wydaje się wykonywać zadanie; używam go, aby pokazać, co zostało wniesione przez połączenie.

git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
 17
Author: MichaelMoser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 20:30:38

Inna możliwość:

git log -p COMMIT -1

 10
Author: John_West,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-16 14:49:39
git difftool COMMIT^ <commit hash>

Jest również możliwe, jeśli skonfigurowałeś swój difftool.

Zobacz jak skonfigurować difftool Lub stronę podręcznika tutaj

Dodatkowo możesz użyć git diff-tree --no-commit-id --name-only -r <commit hash>, aby zobaczyć, które pliki zostały zmienione/zatwierdzone w haśle give commit

 8
Author: Chand Priyankara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:50
git show <commit_sha>

To pokaże ci, co jest w tym commicie. Myślę, że można to zrobić, umieszczając spację między dwoma commit shas.

git show <beginning_sha> <ending_sha>

Co jest bardzo pomocne, jeśli często zmieniasz ustawienia, ponieważ dzienniki funkcji będą w jednym rzędzie.

 7
Author: Iwnnay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-22 14:46:12

Aby zobaczyć autora i czas przez commit użyj git show COMMIT. Co spowoduje coś takiego:

commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <[email protected]>
Date:   Fri Jul 24 17:46:42 2015 -0700

     Merge remote-tracking branch 'origin/your-feature'

Jeśli chcesz zobaczyć, które pliki zostały zmienione, uruchom następujące wartości z linii scalania powyżej git diff --stat a2a2894 3a1ba8f.

Jeśli chcesz zobaczyć rzeczywiste różnice, Uruchom git --stat a2a2894 3a1ba8f

 5
Author: Nikita G.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-27 22:20:05

Używam Git w wersji 2.6.1.okna.1 Na Windows 10, więc potrzebowałem drobnej modyfikacji odpowiedzi Nevika (tylda zamiast Careta):

git diff COMMIT~ COMMIT

Inną opcją jest zacytowanie karetki:

git diff "COMMIT^" COMMIT
 4
Author: Juuso Ohtonen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 20:33:09

Możesz użyć git diff HEAD HEAD^1, aby zobaczyć diff z commitem nadrzędnym.

Jeśli chcesz zobaczyć tylko listę plików, Dodaj opcję --stat.

 4
Author: Irshu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-27 02:52:59

Ta komenda da ci Git parent commit-hash:

git log -n 2 <commit-hash>

Potem git diff-tool <commit-hash> <parent-commit-hash>

Przykład:

bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3

commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <[email protected]>
Date:   Mon Jul 25 13:17:07 2016 +0530

CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.

commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <[email protected]>
Date:   Mon Jul 25 11:28:09 2016 +0530

The ratio of the height to width of the channel images are maintained.

Po tym

git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f
 2
Author: souparno majumder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 20:32:33

Podoba mi się poniższe polecenie, aby porównać konkretny commit i jego ostatni commit:

git diff <commit-hash>^-

Przykład:

git diff cd1b3f485^-
 1
Author: starcwl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 20:34:50

W przypadku sprawdzenia zmiany źródła w graficznym widoku,

$gitk (Mention your commit id here)

Na przykład:

$gitk HEAD~1 
 -1
Author: user272390,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-11 08:26:30