Коли я це git diff COMMIT
бачу, я бачу зміни між цим комітом і HEAD (наскільки я знаю), але я хотів би побачити зміни, які були внесені цим єдиним зобов'язанням.
Я не знайшов очевидних варіантів на diff
/, log
які дадуть мені такий вихід.
Коли я це git diff COMMIT
бачу, я бачу зміни між цим комітом і HEAD (наскільки я знаю), але я хотів би побачити зміни, які були внесені цим єдиним зобов'язанням.
Я не знайшов очевидних варіантів на diff
/, log
які дадуть мені такий вихід.
Відповіді:
Щоб побачити різницю для конкретного COMMIT
хеша:
git diff COMMIT~ COMMIT
покаже вам різницю між цим COMMIT
предком і тим COMMIT
. Докладні відомості про команду та gitrevision про нотацію та її друзів див. На сторінках man для git diff . ~
Як варіант, git show COMMIT
зробимо щось дуже схоже. (Дані комітету, включаючи його різні - але не для об'єднань.) Див. Сторінку git show .
^
потреби цитуються в оболонках Томсона та Борна (синонім до них |
) та rc
їх похідних (оператор zsh
not
HEAD^
мається на увазі перший батько у випадку, якщо у комітки є декілька батьків (тобто об'єднання об'єднань).
git diff COMMIT~ COMMIT
працює на мене, помічайте тильду замість карети. Я запускаю git версії 2.6.1.Windows.1 в Windows 10.
Як згадується у " Скороченій записі на відміну від git commit зі своїм батьком? ", Ви також можете використовувати git diff
з:
git diff COMMIT^!
або
git diff-tree -p COMMIT
З git show вам знадобиться (щоб зосередитись на розрізненні один):
git show --color --pretty=format:%b $COMMIT
COMMIT
Параметр є МІГ-фіксації :
Фіксації об'єкта або об'єкт , який може бути рекурсивно разименовивается до фіксації об'єкта. Нижче перелічені всі фіксації: об’єкт фіксації, об’єкт тегів, який вказує на об’єкт фіксації, об’єкт тегу, який вказує на об’єкт тегу, який вказує на об'єкт фіксації тощо.
Див. Gitrevision "СПЕЦІФІКАЦІЙНІ ПОЗИЦІЇ" для посилання на комісію .
Дивіться також " Що означає дерево-ish в Git? ".
Ви також можете спробувати цей простий спосіб:
git show <COMMIT>
git show
показує зміни, внесені в останній комітет.
Еквівалентно git show HEAD
.
git show HEAD~1
повертає вас назад 1 вчинення.
Спочатку отримайте ідентифікатор комісії за допомогою,
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
^!
означає ??
git show <commit_sha>
Це покаже вам просто те, що в цьому зобов'язанні. Я думаю, що ви можете зробити діапазон, просто розмістивши пробіл між двома фіксаторами.
git show <beginning_sha> <ending_sha>
що дуже корисно, якщо ви часто перезапускаєте, тому що ваші журнали функцій будуть підряд.
На головній сторінці для 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>
Порівняйте версію до останнього фіксації та останнього виконання.
Справді, це написано трохи заплутано, було б менш заплутано як
Порівняйте найновіший комітет із зобов’язанням перед ним.
git diff HEAD HEAD^
.
Наступне, здається, виконує роботу; Я використовую це, щоб показати, що було введено об'єднанням.
git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
git log
? (З - за stackoverflow.com/a/18585297/6309 )
Ви можете використовувати git diff HEAD HEAD^1
щоб побачити різницю з батьківським комітом.
Якщо ви хочете бачити лише список файлів, додайте --stat
опцію.
diff
команду, це: що мені потрібно змінити у файлі, щоб взяти з себе HEAD
зобов’язання виконувати HEAD^1
?
git difftool COMMIT^ <commit hash>
Можливо також, якщо ви налаштували дифтоул.
Дивіться тут, як налаштувати difftool або сторінку керівництва тут
Крім того, ви можете використовувати, git diff-tree --no-commit-id --name-only -r <commit hash>
щоб побачити, які файли були змінені / скоєні в хеші для віддачі
Щоб побачити автора та час за допомогою використання комісій 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'
Якщо ви хочете побачити, які файли були змінені, виконайте наступне зі значеннями з рядка Злиття вище git diff --stat a2a2894 3a1ba8f
.
Якщо ви хочете побачити фактичну різницю, запустіть git --stat a2a2894 3a1ba8f
git --stat a2a2894 3a1ba8f
". Я думаю, ти маєш на увазі git diff a2a2894 3a1ba8f
або інше unknown option: --stat
.
Для перевірки повних змін:
git diff <commit_Id_1> <commit_Id_2>
Для перевірки лише змінених / доданих / видалених файлів:
git diff <commit_Id_1> <commit_Id_2> --name-only
ПРИМІТКА . Для перевірки відмінності між комісіями між ними, вам не потрібно ставити ідентифікатори комісій.
Я використовую Git версії 2.6.1.windows.1 в Windows 10, тому мені потрібна була незначна зміна відповіді Невіка (tilde замість карети):
git diff COMMIT~ COMMIT
Ще один варіант - цитувати каре:
git diff "COMMIT^" COMMIT
Ця команда отримає вам батьківський 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
У разі перевірки зміни джерела у графічному представленні,
$gitk (Mention your commit id here)
наприклад:
$gitk HEAD~1