Как да видим промените в git ангажира?

Когато правя git diff COMMIT виждам промени между това посвещение и HEAD (доколкото знам), но бих искал да видя промените, направени от този единствен ангажимент.

Не намерих никакви очевидни опции за diff / log, които да ми дадат такова заключение.

1114
10 июля '13 в 9:22 2013-07-10 09:22 laktak е настроен на 10 юли '13 в 9:22 2013-07-10 09:22
@ 17 отговора

За да видите разликата за конкретен хеш COMMIT :

git diff COMMIT~ COMMIT ще ви покаже разликата между този предшественик COMMIT и COMMIT . Обърнете се към страниците за диференциала git за подробна информация за екипа и gitrevisions за нотацията и нейните приятели.

Алтернативно, git show COMMIT ще направи нещо подобно. (Данните за фиксацията, включително разликата - но не и за обединяването.) Вижте страницата с ръководството на git show .

1439
10 июля '13 в 9:23 2013-07-10 09:23 отговорът е даден от Невик Ренел на 10 юли '13 в 9:23 2013-07-10 09:23

Както е посочено в съкращението за разделяне на git от неговия родител ? , можете също да използвате git diff с:

 git diff COMMIT^! 

или

 git diff-tree -p COMMIT 

С git show се нуждаете (за да се съсредоточите отделно върху разликата):

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

COMMIT параметър - commit-ish :

Обект на фиксация или обект, които могат да бъдат рекурсивно преразпределени в обект за фиксиране. По-долу са изброени всички commit-ishes: обект на фиксация, обект на маркер, който сочи към обект за фиксиране, обект на маркер, който сочи към обект на маркер, който сочи към обект за фиксиране и т.н.

Вижте gitrevision "ТОЧКИ ПРОВЕРКИ за връзки към ангажиране-ish."
Вижте също " Какво означава дърво в Git? ".

408
10 июля '13 в 9:31 2013-07-10 09:31 отговорът е даден от VonC 10 юли '13 в 9:31 ч. 2013-07-10 09:31

Можете също да опитате този лесен начин:

 git show <COMMIT> 
234
15 июня '16 в 12:02 2016-06-15 12:02 отговорът е даден на Лакхан на 15 юни 16 в 12:02 2016-06-15 12:02

git show показва промените, направени в последното фиксиране.

Еквивалентно на git show HEAD .

git show HEAD~1 ви връща обратно 1 коммит.

56
16 сент. отговорът е даден от Адам Салма на 16 септември. 2016-09-16 04:50 '16 в 4:50 2016-09-16 04:50

Първо използвайте fix id,

 git log #to list all 

или

 git log -p -1 #last one commit id 

Копирайте идентификатора на корекцията.

Сега използваме два метода за изброяване на промени от конкретен ангажимент,

Метод 1:

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

Метод 2:

 git show commit_id For example: git show 1c6a600a 
26
19 июля '17 в 8:48 2017-07-19 08:48 Отговор е даден от Mohideen ibn Mohammed на 19 юли '17 в 8:48 2017-07-19 08:48

От страницата за помощ на 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> 

Използвайте третата в средата:

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

Също така на същата страница от ръководството по-долу в раздела Примери :

 $ git diff HEAD^ HEAD <3> 

Сравнете версията преди последното финализиране и последния финал.

Разбира се, това е малко объркващо, би било по-малко объркващо, защото

Сравнете най-новата фиксация с фиксацията пред нея.

23
10 июля '13 в 10:20 2013-07-10 10:20 отговорът е даден от user456814 10 юли '13 в 10:20 2013-07-10 10:20

Изглежда, че следната работа върши работа; Използвам го, за да покажа какво се е сляло.

 git whatchanged -m -n 1 -p <SHA-1 hash of merge commit> 
19
14 окт. Отговорът е даден от MichaelMoser на 14 октомври. 2014-10-14 20:16 '14 в 20:16 2014-10-14 20:16
 git show <commit_sha> 

Това ще ви покаже, че в този ангажимент. Мисля, че можете да направите това, като просто поставите интервал между двете ангажименти.

 git show <beginning_sha> <ending_sha> 

което е много полезно, ако проверявате често, защото регистрационните файлове на функциите ви ще бъдат в един ред.

16
22 авг. Отговорът е даден Iwnnay 22 авг. 2018-08-22 17:46 '18 в 17:46 ч. 2018-08-22 17:46

Друга възможност:

git log -p COMMIT -1

11
16 февр. Отговор, даден от John_West на 16 февруари. 2016-02-16 17:49 '16 в 17:49 ч. 2016-02-16 17:49
 git difftool COMMIT^ <commit hash> 

също е възможно, ако сте конфигурирали вашия diffftool.

Вижте тук как да настроите diffftool или страница за справки тук.

В допълнение, можете да използвате git diff-tree --no-commit-id --name-only -r <commit hash> за да разберете кои файлове са били променени / ангажирани в хеша на командата commit commit.

8
24 марта '14 в 15:49 2014-03-24 15:49 отговорът е даден от Chand Priyankara на 24 март 2014 г. в 15:49 2014-03-24 15:49

Можете да използвате git diff HEAD HEAD^1 да видите разликата с родителската ангажираност.

Ако искате да видите само списъка с файлове, добавете --stat .

6
08 дек. Отговор Irshu 08 Дек 2015-12-08 07:17 '15 в 7:17 2015-12-08 07:17

За да видите автора и времето, използвайте comm git show COMMIT . Което би довело до нещо подобно:

 commit 13414df70354678b1b9304ebe4b6d204810f867e Merge: a2a2894 3a1ba8f Author: You <you@you.com> Date: Fri Jul 24 17:46:42 2015 -0700 Merge remote-tracking branch 'origin/your-feature' 

Ако искате да видите кои файлове са променени, изпълнете следното със стойностите от линията Merge над git diff --stat a2a2894 3a1ba8f .

Ако искате да видите действителния diff, изпълнете git --stat a2a2894 3a1ba8f

6
28 июля '15 в 1:20 2015-07-28 01:20 отговорът беше даден от Никита Г. 28 юли '15 в 1:20 2015-07-28 01:20

Използвам Git версия 2.6.1.windows.1 в Windows 10, така че трябваше да променя отговора на Nevik малко (тилда вместо каретата):

 git diff COMMIT~ COMMIT 

Друга възможност е да цитирате превоза:

 git diff "COMMIT^" COMMIT 
4
20 янв. Отговорът е даден от Juuso Ohtonen Jan 20 2017-01-20 11:00 '17 в 11:00 часа 2017-01-20 11:00 часа

Харесвам командата по-долу, за да сравня конкретен ангажимент и последния му ангажимент:

 git diff <commit-hash>^- 

например:

 git diff cd1b3f485^- 
4
10 апр. отговор, даден от starcwl 10 април 2018-04-10 13:11 '18 в 1:11 ч. 2018-04-10 13:11

Тази команда ще получи хеш на Git за родителски ангажименти:

 git log -n 2 <commit-hash> 

След това, git diff-tool <commit-hash> <parent-commit-hash>

например:

 bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3 commit 7f65b9a9d3820525766fcba285b3c678e889fe3b Author: souparno <souparno.majumder@gmail.com> 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 <souparno.majumder@gmail.com> Date: Mon Jul 25 11:28:09 2016 +0530 The ratio of the height to width of the channel images are maintained. 

След това

 git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f 
2
29 июля '16 в 15:19 2016-07-29 15:19 отговорът е даден от souparno majumder 29 юли '16 в 15:19 2016-07-29 15:19

За да проверите за пълни промени:

  git diff <commit_Id_1> <commit_Id_2> 

За да проверите само променени / добавени / изтрити файлове:

  git diff <commit_Id_1> <commit_Id_2> --name-only 

ЗАБЕЛЕЖКА : За да тествате разликата, без да се ангажирате помежду им, не е необходимо да посочвате идентификатори на фиксация.

0
29 янв. отговорът е даден bit_cracker007 29 януари 2019-01-29 22:41 '19 в 22:41 ч. 2019-01-29 22:41

В случай на проверка на промяната на източника в графичното представяне,

 $gitk (Mention your commit id here) 

например:

 $gitk HEAD~1 
-1
11 мая '18 в 11:02 2018-05-11 11:02 отговорът е даден от user272390 на 11 май 18:00 в 11:02 2018-05-11 11:02

Други въпроси относно или Задайте въпрос