Команда git log показывает историю коммитов в обратном хронологическом порядке. Вы можете посмотреть хеш, сообщение, дату и ник автора коммита.
git log # Запрос на просмотр журнала коммитов
git log # Информация о третьем сделанном коммите commit 3f6f9e1f58e30e0d3a0d0ab764c0b30a5b621d4a # Хеш первого коммита Author: John Doe johndoe@example.com # Автор первого коммита Date: Thu Apr 21 10:26:52 2024 +0300 # Дата первого коммита Update README.md # Сообщение первого коммита # Информация о втором сделанном коммите commit acd1e81729dc2ee2dc107ba345fa1ab7e6cfbff9 Author: Jane Smith janesmith@example.com Date: Wed Apr 20 16:45:39 2024 +0300 Add new feature # Информация о первом сделанном коммите commit 7df1e8c33b0a617b3a72c785a67e45d0d932a180 Author: John Doe johndoe@example.com Date: Mon Apr 18 09:12:21 2024 +0300 Initial commit
Информацию о каждом коммите можно отобразить сокращённо, в одну строку:
git log --oneline # Запрос на вывод истории коммитов в одну строку 3f6f9e1 Update README.md acd1e81 Add new feature 7df1e8c Initial commit
git show abc12345 # Запрос на просмотр коммита с хешем abc12345 # Метаданные commit abc12345 # Хеш коммита Author: John Doe johndoe@example.com # Автор коммита Date: Thu Apr 21 10:26:52 2024 +0300 # Дата и время коммита Update README.md # Сообщение коммита # Список изменений в файле README.md diff --git a/README.md b/README.md index abcdef1..1234567 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# My Project # Старое содержимое строки +# My Awesome Project # Новое содержимое строки
Если ввести git show без хеша, то выведется содержимое последнего коммита.
Команда git diff показывает разницу между последним коммитом и текущим состоянием репозитория:
# Смотрим разницу между последним коммитом и текущим состоянием репозитория git diff # Разница между последним коммитом и текущим состоянием файла git diff file_name # Разница между последним коммитом и коммитом с указанным хешем git diff commit_hash # Разница между последним коммитом и отслеживаемым состоянием репозитория git diff --staged
Команда git rm позволяет удалить файл, который по ошибке попал в индекс.
После выполнения команды файл пропадёт из индекса и из папки проекта.
Если нужно удалить файл только из индекса, то команду git rm нужно использовать вместе с опцией --cached.
# Удалить файл из индекса и рабочей директории git rm file_name # Удалить файл из индекса и оставить в папке на компьютере git rm --cached file_name
Команда git restore возвращает файл к состоянию последнего коммита.
Она отменяет все изменения, если файл не перенесён в индекс.
Если файл попал в индекс, то вместе с названием команды нужно использовать опцию --staged.
# Вернуть неотслеживаемый файл к состоянию последнего коммита git restore file_name # Вернуть все файлы из индекса к состоянию последнего коммита git restore --staged # Вернуть указанный файл из индекса к состоянию последнего коммита git restore --staged file_name
Команда git reset позволяет отменить любое количество сделанных коммитов и вернуть проект к какому-то состоянию в прошлом.
На выбор можно использовать три режима: --soft, --mixed и --hard.
В режиме --soft проект откатывается к указанному коммиту и переводит все последующие коммиты в индекс.
Вы можете сразу сделать новый коммит и перезаписать историю проекта, оставив исходные файлы без изменений.
В режиме --mixed откаченные файлы попадают в неотслеживаемую зону.
Вы можете эти файлы изменить, удалить или вернуть обратно в индекс.
В режиме --hard проект откатывается к указанному коммиту и удаляет все последующие коммиты без возможности их восстановления.
# Откатываемся и переводим последующие коммиты в индекс git reset --soft commit_hash # Откатываемся и переводим последующие коммиты в неотслеживаемую зону git reset --mixed commit_hash # Откатываемся и удаляем все последующие коммиты git reset --hard commit_hash