Я сделал, git commit
но я еще не отправил его в хранилище. Поэтому, когда я это делаю git status
, я получаю '# Ваша ветка опережает' master 'на 1 коммит.
Так что, если я хочу откатить мой главный коммит, могу ли я просто сделать:
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
учитывая, что когда я делаю, git log
я получаю:
commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 Дата: вторник, 29 сентября 11:21:41 2009 -0700 commit db0c078d5286b837532ff5e276dcf91885df2296 Дата: вторник, 22 сентября 10:31:37 2009 -0700
reset --hard
может привести к потере работы, потому что это приводит к тому, что git перезаписывает ваши локальные файлы (вашу новую работу) на файлы из Интернета (случилось со мной). В вопросах и ответах по поводу git должно быть четко указано, что делают их команды, и каковы риски для читателей.Ответы:
На самом деле, когда вы используете
git reset
, вы должны ссылаться на коммит, который вы сбрасываете к ; так чтоdb0c078
, возможно, вы захотите совершить коммит.Более простой версией было бы
git reset --hard HEAD^
восстановление предыдущего коммита перед текущей головой; Таким образом, вам не нужно копировать идентификаторы коммитов.Будьте осторожны, когда вы делаете что-либо
git reset --hard
, так как вы можете потерять любые незафиксированные изменения, которые у вас есть. Вы можете проверитьgit status
что ваша рабочая копия чистая, или что вы хотите удалить любые изменения, которые там есть.Кроме того, вместо HEAD вы можете использовать в
origin/master
качестве ссылки, как предложено @bdonlan в комментариях:git reset --hard origin/master
источник
git reset --hard origin/master
, чтобы сбросить его до того, где был источник.git reset
твой код. Сделайте свое будущее себе одолжение: разница междуreset
,reset --soft
иreset --hard
(Что происходит с вашим ранее,git add
иначе «ваша работа» :) Рисунок: ссылкаgit status
будет отображаться никаких изменений, и коммит будет удален / изменения потеряны).git reset --hard HEAD^
как вы потеряете изменения в переданных файлах (ваши изменения будут удалены). Есть два ответвления на этот вопрос: чтобы отменить коммит, но изменения на диске все еще есть, сделайте этоgit reset --soft HEAD~1
ЕСЛИ вы НЕ перенесли изменения в удаленный
Проверьте, очищена ли рабочая копия
git status
.В противном случае вы передали свои изменения на удаленный
Эта команда вернет / удалит последний коммит / изменение, а затем вы можете нажать
источник
сбросить его до того, что было в источнике.
Это было опубликовано @bdonlan в комментариях . Я добавил этот ответ для людей, которые не читают комментарии.
источник
master
- я должен использоватьorigin/mybranch
тогда?git reset HEAD~
которые только возвращают коммит в кодУ этого вопроса есть две ветви (откат фиксации не означает, что я хочу потерять все свои локальные изменения):
1. Чтобы отменить последнюю фиксацию и отменить изменения в зафиксированном файле, выполните:
git reset --hard HEAD~1
2. Чтобы отменить последнюю фиксацию, но сохранить локальные изменения (на диске), выполните:
git reset --soft HEAD~1
Это (более поздняя команда) приведет вас в состояние, в котором вы были бы, если бы сделали
git add
.Если вы хотите удалить файлы после этого, выполните
git reset
Теперь вы можете вносить больше изменений перед добавлением и последующей фиксацией.
источник
Просто введите в консоли:
Эта команда отбрасывает все локальные коммиты перед удаленным HEAD
источник
Я считаю, что один из них подойдет вам
1 - Отменить фиксацию и сохранить все файлы поэтапно:
git reset --soft HEAD~;
2 - Отменить фиксацию и удалить все файлы:
git reset HEAD~;
3 - Отменить фиксацию и полностью удалить все изменения:
git reset --hard HEAD~;
вот где я нашел ответ
источник
Удалить последний коммит перед нажатием
git reset --soft HEAD~1
1
означает последний коммит, если вы хотите удалить два последних использования2
и т. д. *источник
--soft
является отличным дополнением к возможным ответам, но не могли бы вы также упомянуть, почему? Объяснение вашего решения всегда полезно. Также попробуйте придерживаться английского языка. Спасибо--soft
- гарантирует, что вы не потеряете изменения в файле, фиксацию которого вы пытаетесь отменитьЯ столкнулся с той же ситуацией, что и ниже, так как это намного проще. Пройдя мимо,
commit-Id
вы можете перейти к конкретному коммиту, на который хотите перейти:Поскольку вы хотите удалить свой последний коммит, вам нужно передать
commit-Id
туда, куда вам нужно переместить указатель:источник
Это то, что я делаю:
Сначала оформите вашу ветку (для моего дела
master
ветка):Затем сбросьте на удаленный HEAD ^ ( он удалит все ваши локальные изменения ), принудительно очистите и потяните:
источник
Одним из способов может быть удаление локальной ветви и извлечение этой ветви с сервера, если ваша локальная ветвь опережает удаленную по нескольким коммитам и вам нужно отменить все из них.
источник
У меня просто была та же проблема, и в итоге я сделал:
(N - количество коммитов, которые вам покажет git)
Это предложит вашему текстовому редактору, а затем вы можете удалить коммит, который вы хотите, удалив строку, связанную с ним.
источник