Іноді, коли я збираюся зробити коміт, я не можу згадати, що саме змінилося з часу останнього коміту. Як я можу побачити різницю поточного стану коду та останнього коміту?
Іноді, коли я збираюся зробити коміт, я не можу згадати, що саме змінилося з часу останнього коміту. Як я можу побачити різницю поточного стану коду та останнього коміту?
Відповіді:
Якщо ви ще не додали файли до індексу (за допомогою git add), просто зробіть
git diff
Це покаже різницю між вашим робочим деревом та індексом.
Якщо ви додали файли до індексу, вам потрібно зробити це, щоб показати різницю між індексом та останнім комітом (HEAD).
git diff --cached
Нарешті, якщо ви хочете побачити зміни, внесені в робоче дерево у порівнянні з останнім комітом ( HEAD), ви можете (як вказує Карлос)
git diff HEAD
Ці зміни є поєднанням git diffі git diff --cached.
git diffв одному повідомленні різниці вказати стан стану індексу та попереднього коміту ?
git diff --cached HEAD^:)
Якщо ви щойно зробили коміт або хочете побачити, що змінилося в останньому коміті порівняно з поточним станом (за умови, що у вас чисте робоче дерево), ви можете використовувати:
git diff HEAD^
Це порівняє HEAD з комітом безпосередньо перед цим. Можна також зробити
git diff HEAD^^
для порівняння із станом гри 2 коміти тому. Щоб побачити різницю між поточним станом та певним комітом, просто виконайте:
git diff b6af6qc
Де b6af6qcприклад хешу коміту.
HEAD^є коміт перед останнім комітом.
Ви просите git розрізнити поточний / останній коміт, що має скорочення HEAD.
Так git diff HEADбуде порівняно поточний стан робочого дерева з поточним комітом.
це також показує різницю та те, які файли було змінено / модифіковано.
$ git status
Відображає шляхи, які мають відмінності між файлом індексу та поточним комітом HEAD, шляхи, які мають відмінності між робочим деревом та файлом індексу, та шляхи в робочому дереві, які не відстежуються git (і не ігноруються gitignore (5) ). Перші - це те, що ви б зробили, запустивши git commit; друге і третє - це те, що ви могли б зробити, запустивши git add перед запуском git commit.
https://www.kernel.org/pub/software/scm/git/docs/git-status.html
Це також працює для мене:
# The last one
git diff HEAD~1 HEAD
# The last but one, etc...
git diff HEAD~2 HEAD~1
Зазвичай це працює для лінійної історії. Це може стати більш складним, якщо є також коміти злиття. Я рекомендую вам ознайомитись із цим документом, щоб отримати гарне і повне пояснення, особливо, що приклад ілюстрації дерева комітів:
git diffпорівнює робоче дерево з індексом, а не HEAD.