Иногда, когда я собираюсь сделать коммит, я не могу точно вспомнить, что изменилось с момента последнего коммита. Как я могу увидеть разницу в текущем состоянии кода и последней фиксации?
93
Если вы еще не добавили файлы в индекс (с помощью git add
), просто выполните
git diff
Это покажет разницу между вашим рабочим деревом и индексом.
Если вы добавили файлы в индекс, вам нужно сделать это, чтобы показать различия между индексом и последней фиксацией (HEAD).
git diff --cached
Наконец, если вы хотите увидеть изменения, сделанные в рабочем дереве, по сравнению с последним commit ( HEAD
), вы можете (как указывает Карлос) сделать
git diff HEAD
Эти изменения представляют собой комбинацию git diff
и git diff --cached
.
git diff
сравнивает рабочее дерево с индексом, а не с HEAD.git diff
в одном сообщении разницы записать состояние индекса и предыдущий коммит?git diff --cached HEAD^
:)Если вы только что сделали фиксацию или хотите увидеть, что изменилось в последней фиксации по сравнению с текущим состоянием (при условии, что у вас есть чистое рабочее дерево), вы можете использовать:
Это сравнит HEAD с предыдущей фиксацией. Можно также сделать
для сравнения с состоянием игры 2 коммита назад. Чтобы увидеть разницу между текущим состоянием и определенной фиксацией, просто выполните:
Где
b6af6qc
пример хеша коммита.источник
HEAD^
это фиксация перед последней фиксацией.Вы просите git различать текущую / последнюю фиксацию, что имеет сокращение
HEAD
.Таким образом,
git diff HEAD
мы сравним текущее состояние рабочего дерева с текущим коммитом.источник
это также показывает разницу и какие файлы были изменены / модифицированы.
Отображает пути, которые имеют различия между индексным файлом и текущим фиксацией HEAD, пути, которые имеют различия между рабочим деревом и индексным файлом, а также пути в рабочем дереве, которые не отслеживаются git (и не игнорируются gitignore (5) ). Первый - это то, что вы бы зафиксировали, запустив git commit; второй и третий - это то, что вы можете зафиксировать, запустив git add перед запуском git commit.
https://www.kernel.org/pub/software/scm/git/docs/git-status.html
источник
Это также работает для меня:
Обычно это работает для линейной истории. Это может стать более сложным, если есть также коммиты слияния. Я рекомендую вам заглянуть в этот документ, чтобы получить хорошее и полное объяснение, особенно пример иллюстрации дерева коммитов:
https://git-scm.com/docs/gitrevisions
источник