Використовуючи Git, як можна знайти різницю між поточною та останньою версією?
git diff last version:HEAD
Використовуючи Git, як можна знайти різницю між поточною та останньою версією?
git diff last version:HEAD
Відповіді:
Я не дуже розумію значення "останньої версії".
Оскільки до попереднього комітету можна отримати доступ з HEAD ^, я думаю, що ви шукаєте щось на зразок:
git diff HEAD^ HEAD
Станом на Git 1.8.5 @
- псевдонім для HEAD
, тому ви можете використовувати:
git diff @~..@
Також буде працювати наступне:
git show
Якщо ви хочете знати різницю між головою та будь-яким зобов'язанням, ви можете скористатися:
git diff commit_id HEAD
І це запустить ваш візуальний інструмент різниці (якщо він налаштований):
git difftool HEAD^ HEAD
Оскільки порівняння з HEAD є типовим, ви можете опустити його (як вказував Orient ):
git diff @^
git diff HEAD^
git diff commit_id
~
символом потрібно користуватися замість ^
.@
це псевдонім для HEAD
. А так як ~
і коли ^
вони однакові, коли я повертаюсь назад, мені git diff @~..@
набрати набагато простіше.
git show
все ж простіше, оскільки @~..@
це показано за замовчуванням.
git show
просто друкує повідомлення про фіксацію, воно не видає різного роду конкретних змін, принаймні в Git 2.5.4 (Apple Git-61), тож насправді це не буде відповіддю на питання ОП.
git show
полягає в тому, що якщо HEAD
це об'єкт злиття, ви не отримаєте те, що очікуєте, оскільки сам припис об'єднання може не мати ніяких змін. git diff HEAD^ HEAD
покаже фактичні зміни між версіями
Якщо припустити, що "поточна версія" є робочою директорією (невідомі модифікації), а "остання версія" є HEAD
(останні внесені зміни для поточної гілки), просто зробіть
git diff HEAD
Кредит за наступне надається користувачеві Cerran
.
І якщо ви завжди пропускаєте місце постановки, -a
коли виконуватимете, тоді ви можете просто використовувати git diff
.
Підсумок
git diff
показує нестандартні зміни.git diff --cached
показує поетапні зміни.git diff HEAD
показує всі зміни (як поетапні, так і нестандартні).Джерело: git-diff (1) Сторінка посібника - Cerran
-a
коли виконуватимете, тоді ви можете просто використовувати git diff
. <1> git diff
показує нестандартні зміни. <2> git diff --cached
показує поетапні зміни. <3> git diff HEAD
показує всі зміни (як поетапні, так і нестандартні). Джерело: git-diff (1) Сторінка посібника
Як було відзначено на коментар по amalloy , якщо по «поточної і останньої версії» ви маєте в виду останню фіксацію і фіксації до того, що ви могли б просто використовувати
git show
git show HEAD~1
для відображення останнього, але одного, і git show HEAD~2
тощо для старих комітетів. Показати лише один файл через git show HEAD~2 my_file
.
Різниця між останньою, але однією та останньою комісіями (плюс поточний стан, якщо такий є):
git diff HEAD~
або навіть (простіше набрати)
git diff @~
де @
синонім HEAD
поточної гілки і ~
означає "дай мені батька згаданої редакції".
git diff HEAD^
(а не еквівалентна HEAD~
форма). Таді легше запам’ятати такий «старий git», як я ;-)
~
і що @
означає.
diff HEAD^ HEAD
повинен бути git diff @^!
. Дивіться сторінку git-scm.com/docs/gitreitions дляr1^!
Просто використовуйте cached
прапор, якщо ви додали, але ще не зробили:
git diff --cached --color
По-перше, використовуйте "git log
"список списків журналів для сховища.
Тепер виберіть два ідентифікатори фіксації, що стосуються двох комітів. Ви хочете побачити відмінності ( приклад - "Найпопулярніші" та "старіші" (відповідно до ваших очікувань поточної версії та деякої старої версії) ).
Далі, використовуйте:
git diff <commit_id1> <commit_id2>
або
git difftool <commit_id1> <commit_id2>
Якщо на верхню комітку вказано HEAD, ви можете зробити щось подібне:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
Різниця між першим і другим комітетом:
git diff HEAD~1 HEAD
Різниця між першою та третьою комісіями:
git diff HEAD~2 HEAD
Різниця між другим і третім комітом:
git diff HEAD~2 HEAD~1
І так далі...
Я використовую Bitbucket з Eclipse IDE з Eclipse EGit встановлений плагін.
Я порівнюю файл з будь-якої версії його історії (наприклад, SVN ).
Меню Провідник проектів → Файл → клацніть правою кнопкою миші → Команда → Показати в історії .
Це призведе до історії всіх змін у цьому файлі. Тепер Ctrlнатисніть і виберіть будь-які дві версії → "Порівняти один з одним" .
Це також буде працювати для тегів (видаліть 'uniq' нижче та інші частини, якщо вам потрібно переглянути всі зміни):
git diff v1.58 HEAD
Нижче те саме, що може бути корисним для постійної інтеграції (CI) для мікросервісів у монолітному сховищі:
git diff v1.58 HEAD --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name>
(Кредит - https://dzone.com/articles/build-test-and-deploy-apps-independ--rom-a-mo )