Добавить в корзинуПозвонить
Найти в Дзене

Git технологии . Команды и применение.

Основные команды: Для отмены изменений в таких файлах используется команда: # отмена в конкретном файле
git restore filename
# отмена во всех файлах
git restore . С файлами, подготовленными к коммиту, т. е. добавленными в индекс, можно поступить по-разному. Первый вариант — отменить изменения совсем, второй — отменить только индексацию, не изменяя файлы в рабочей директории. Второе полезно в том случае, если изменения нам нужны, но мы не хотим их коммитить сейчас. Перевод изменений в рабочую директорию: git restore —staged file.py Теперь, если нужно, можно окончательно отменить изменения в выбранных файлах: git restore Вместо удаления коммита из истории проекта git revert отменяет внесенные в нем изменения и добавляет новый коммит с полученным содержимым. В результате история в Git не теряется, это важно для целостной истории версий и надежной совместной работы. Отмена с помощью команды revert необходима, когда нужно обратить изменения, внесенные в некоем коммите, из истории проекта.
Оглавление

Отмена изменений и комитов

Основные команды:

  • — отмена изменений в измененных файлах, но еще не в индексе.git restore <file>
  • .git restore ––staged <file>
    — удаление из индекса и далееgit restore
  • — отмена внесенных в коммит изменений и добавление нового коммита с полученным содержимым.git revert <commit_hash>
  • — удаление двух коммитов (без цифры — одного) и помещение изменений в рабочую директорию.git reset HEAD⁓2
  • — полное удаление последнего коммита со всеми изменениями.git reset ––hard HEAD⁓

Измененные файлы в рабочей директории

Для отмены изменений в таких файлах используется команда:

# отмена в конкретном файле
git restore filename

# отмена во всех файлах
git restore .

Изменения, подготовленные к коммиту

С файлами, подготовленными к коммиту, т. е. добавленными в индекс, можно поступить по-разному. Первый вариант — отменить изменения совсем, второй — отменить только индексацию, не изменяя файлы в рабочей директории. Второе полезно в том случае, если изменения нам нужны, но мы не хотим их коммитить сейчас.

Перевод изменений в рабочую директорию:

git restore —staged file.py

Теперь, если нужно, можно окончательно отменить изменения в выбранных файлах:

git restore

Отмена коммита через git revert

Вместо удаления коммита из истории проекта

git revert

отменяет внесенные в нем изменения и добавляет новый коммит с полученным содержимым. В результате история в Git не теряется, это важно для целостной истории версий и надежной совместной работы.

Отмена с помощью команды

revert

необходима, когда нужно обратить изменения, внесенные в некоем коммите, из истории проекта. Это может быть полезно, если баг появился в проекте из-за конкретного коммита. Вам не потребуется вручную переходить к этому коммиту, исправлять его и выполнять коммит нового снимка состояния — команда

git revert

сделает это автоматически.

Пример, как сделать коммит, отменяющий изменения, внесенные в коммите с хешем cb1867b:

git revert cb1867b

Пример, как сделать коммит, отменяющий изменения, внесенные в 3-м коммите до HEAD:

git revert HEAD~3

Отмена коммита через git reset

Если коммит был сделан только сейчас и еще не отправлялся на GitHub, то лучше сделать так, как будто этого коммита не существовало в принципе.

Git позволяет удалять коммиты. Это опасная операция, которую нужно делать только в том случае, если речь идет про новые коммиты, которых нет ни у кого, кроме вас.

Если коммит был отправлен во внешний репозиторий, например на GitHub, то менять историю ни в коем случае нельзя — это сломает работу у тех, кто работает с вами над проектом.

Разница в работе команд

revert

и

reset

показана на схеме.

Для удаления коммита используется команда:

git reset ––hard HEAD~

Флаг

––hard

означает полное удаление. Без него

git reset

отменит коммит, но не удалит его, а поместит все изменения этого коммита в рабочую директорию, так что с ними можно будет продолжить работать.

HEAD~

означает «один коммит от последнего коммита». Если бы мы хотели удалить два последних коммита, то могли бы написать

HEAD~2

-2

.