Другие статьи можно найти в моем блоге – Код бесконечен.
В ежедневной разработке мы неизбежно будем создавать неправильные записи отправки 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-код ниже, чтобы подписатьсяКод бесконеченПубличный аккаунт, спасибо за вашу поддержку.