Удалить git commit, который не был передан

Я сделал git commit но еще не отправил его в репозиторий. Поэтому, когда я делаю git status, я получаю '# Ваша ветка впереди' master 'на 1 коммит.

Так что, если я хочу откатить мой главный коммит, могу ли я просто сделать:

git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316

учитывая, что когда я делаю git log я получаю:

commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
Date:   Tue Sep 29 11:21:41 2009 -0700


commit db0c078d5286b837532ff5e276dcf91885df2296
Date:   Tue Sep 22 10:31:37 2009 -0700

Ответ 1

На самом деле, когда вы используете git reset, вы должны ссылаться на коммит, в который вы сбрасываете данные; так что вы, вероятно, db0c078 коммит db0c078.

Более простой версией будет git reset --hard HEAD^, чтобы восстановить предыдущий коммит перед текущей головой; Таким образом, вам не нужно копировать идентификаторы коммитов.

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

Кроме того, вместо HEAD вы можете использовать origin/master качестве ссылки, как предложено @bdonlan в комментариях: git reset --hard origin/master

Ответ 2

Если вы не внесли свои изменения в удаленный

git reset HEAD~1

Проверьте, не работает ли рабочая копия с помощью git status.

ELSE вы нажали свои изменения на удаленный

git revert HEAD

Эта команда вернет/удалит последнюю фиксацию/изменение, а затем вы можете нажать

Ответ 3

git reset --hard origin/master

до reset до того, что было в начале.

Это было опубликовано @bdonlan в комментариях. Я добавил этот ответ для людей, которые не читают комментарии.

Ответ 4

У этого вопроса есть две ветки (откат фиксации не означает, что я хочу потерять все свои локальные изменения):

1. Чтобы отменить последний коммит и отменить изменения в зафиксированном файле, выполните:

git reset --hard HEAD~1

2. Чтобы отменить последний коммит, но сохранить локальные изменения (на диске), выполните:

git reset --soft HEAD~1

Эта (более поздняя команда) приведет вас в состояние, в котором вы были бы, если бы вы сделали git add.

Если вы хотите удалить файлы после этого, выполните

git reset

Теперь вы можете вносить больше изменений перед добавлением и последующей фиксацией.

Ответ 5

Просто введите в консоли:

$ git reset HEAD~

Эта команда отбрасывает все локальные коммиты перед удаленным HEAD

Ответ 6

Удалить последний коммит перед нажатием

git reset --soft HEAD~1

1 означает последний коммит, если вы хотите удалить два последних использования 2 и т.д. *

Ответ 7

Я испытал ту же ситуацию, что и я сделал ниже, так как это намного проще. Пройдя commit-Id, вы можете добраться до конкретной фиксации, которую хотите отправить:

git reset --hard {commit-id}

Как вы хотите удалить последнее коммит, поэтому вам нужно передать commit-Id, где вам нужно переместить указатель:

git reset --hard db0c078d5286b837532ff5e276dcf91885df2296

Ответ 8

Вот что я делаю:

Сначала оформите вашу ветку (для моего дела master ветка):

git checkout master

Затем сбросьте на удаленный HEAD ^ (он удалит все ваши локальные изменения), принудительно очистите и потяните:

git reset HEAD^ --hard && git clean -df && git pull

Ответ 9

Один из способов - удалить локальный ветвь и проверить, что ветвь с сервера, если ваша локальная ветвь впереди удаленного с помощью нескольких коммитов, и вам нужно разогнать все из них.

Ответ 10

Я считаю, что один из них подойдет вам

1 - Отменить фиксацию и сохранить все файлы поэтапно: git reset --soft HEAD~;

2 - Отменить фиксацию и удалить все файлы: git reset HEAD~;

3 - Отменить фиксацию и полностью удалить все изменения: git reset --hard HEAD~;

вот где я нашел ответ

Ответ 11

git reset --soft HEAD ~ 1 исправил мою проблему. Спасибо Карина Хаддад

Ответ 12

Чтобы просто отменить ваш последний коммит, не теряя изменений перед нажатием:

git reset --soft HEAD^

Ответ 13

У меня просто была та же проблема, и в итоге я сделал:

git rebase -i HEAD~N

(N - количество коммитов, которые вам покажет git)

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