Git использует небольшие хитрости для отката и отмены.

Git

Другие статьи можно найти в моем блоге – Код бесконечен.

В ежедневной разработке мы неизбежно будем создавать неправильные записи отправки git, и git постоянно предоставляет нам две команды для решения этой проблемы. Командаgit reset, другойgit revert. Какая разница между двумя? Основное различие между ними заключается в том,git resetКоманда состоит в том, чтобы откатить фиксацию, откатная фиксация не будет отображаться в записи фиксации, иgit revertКоманда состоит в том, чтобы создать новую фиксацию для достижения цели отзыва, отозванная фиксация и отозванная фиксация появятся в записи фиксации.

Подготовить

Во-первых, нам еще нужно подготовитьgitскладе и подготовьте файл, который можно изменить, имя файла не имеет значения, я создал его здесьREADME.mdдокумент:

mkdir git-test
cd git-test
git init
touch README.md
git add *
git commit -m "init"

git reset

1. Измените файл README. 2. Отправьте эту версию.

git commit "错误的提交"

3. Предположим, что коммит только что был неправильным и нам нужно откатиться, этоgit resetВот где появляется команда, мы можем использовать ее, чтобы вернуться к указанному коммиту.

$ git reset e431092f22a85deebf7bd6f4f96d9943530b49bf
Unstaged changes after reset:
M       README.md

4. Мы используемgit statusПроверьте статус, вы обнаружите, что файл README находится в измененном состоянии, а его содержимое не изменилось. то естьgit resetУказатель локального репозитория будет известен на указанную вами ветку, но содержимое не будет отброшено, а помещено в рабочую область.Если вы захотите отправить его повторно, это все еще возможно.

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

Если вы хотите отказаться от него напрямую, вы можете добавить--hardпараметры. фактическиgit resetЕсть три способа отката:

git reset --hard <回滚分支>
git reset --soft <回滚分支>
git reset --mixed <回滚方式>
  • --hardИзменения, сделанные между ветвью отката и текущей ветвью, будут полностью отменены.
  • --softпоместит измененный контент в область подготовки, вы все равно можете использоватьgit commitПодача команды.
  • --mixedЭто параметр сброса по умолчанию, то есть, если вы не укажете параметр, он будет использоваться по умолчанию.--mixedОткат, этот метод отката поместит измененное содержимое в рабочую область.

git revert

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

1. Давайте проверим запись коммита текущего репозитория git.

$ git log
commit 28aef5f811895f7124a3ae0e3b095a37ef9cb299 (HEAD -> master)
Author: 代码无止境 <gancy.programmer@gmail.com>
Date:   Sun Jun 23 18:08:30 2019 +0800

    错误的提交

commit e431092f22a85deebf7bd6f4f96d9943530b49bf
Author: 代码无止境 <gancy.programmer@gmail.com>
Date:   Sun Jun 23 17:23:44 2019 +0800

    init

2. Теперь нам нужно отменить эту неправильную отправку, просто выполните следующую команду.

git revert 28aef5f811895f7124a3ae0e3b095a37ef9cb299

В процессе выполнения появится интерфейс редактирования ВП, давайте отредактируем информацию о сообщении отмены отправки, по умолчаниюRevert "被撤销提交的message", конечно, мы можем редактировать. 3. В использованииgit logКоманда для просмотра журнала фиксации, мы обнаружим, что отозванная фиксация и отозванная фиксация отображаются в записи фиксации, а затем вы перейдете к проверке содержимого файла README, вы обнаружите, что он был откатан.

$ git log
commit ef836162c8f4cf75086151e517339789dd937453 (HEAD -> master)
Author: 代码无止境 <gancy.programmer@gmail.com>
Date:   Sun Jun 23 18:13:27 2019 +0800

    Revert "错误的提交"

    This reverts commit 28aef5f811895f7124a3ae0e3b095a37ef9cb299.

commit 28aef5f811895f7124a3ae0e3b095a37ef9cb299
Author: 代码无止境 <gancy.programmer@gmail.com>
Date:   Sun Jun 23 18:08:30 2019 +0800

    错误的提交

commit e431092f22a85deebf7bd6f4f96d9943530b49bf
Author: 代码无止境 <gancy.programmer@gmail.com>
Date:   Sun Jun 23 17:23:44 2019 +0800

    init

заключительные замечания

В этой статье в основном рассказывается о двух способах откатить неправильную отправку, сценариев использования еще достаточно много, и я надеюсь, что она будет полезна всем. Наконец, если вам понравилась моя статья, вы можете отсканировать QR-код ниже, чтобы подписатьсяКод бесконеченПубличный аккаунт, спасибо за вашу поддержку.

扫码关注“代码无止境”