Git отменить локальный коммит - PullRequest
52 голосов
/ 17 июня 2011

У меня есть git-репо, подключенный в phpstorm на windows.Я совершил несколько наборов изменений, а затем подтолкнул их к нашему «центральному репо».После этого я сделал еще несколько коммитов.Я больше не хочу, чтобы эти коммиты не были перенесены в центральный репо.Как мне очистить мою рабочую копию, чтобы она была такой же, как у центрального репо (источника)?

Ответы [ 5 ]

76 голосов
/ 17 июня 2011
git reset --hard remotes/origin/HEAD
52 голосов
/ 10 сентября 2012
git reset --hard remotes/origin/YOUR/BRANCH

лучше, чем /HEAD, потому что вы этого не увидите:

$ git status
On branch MY/BRANCH
Your branch and 'origin/MY/BRANCH' have diverged,
and have 1 and 1 different commit each, respectively.
20 голосов
/ 17 июня 2011

Если вы уверены в этом и у вас нет локальных незафиксированных изменений:

git reset --hard origin/master

, где origin/master - ветвь, в которую вы нажали.

Ref-log будет по-прежнему содержать возвращенные биты, пока сборщик мусора не истечет.Чтобы отменить возврат,

git reset --hard HEAD@{1}
14 голосов
/ 25 марта 2014

Вы можете отменить локальный коммит с помощью

git reset HEAD~N

, где N используется для возврата количества коммитов.Пример:

если вам нужно отменить один коммит из локального, то вы можете использовать

git reset HEAD~1

или git reset HEAD ^

3 голосов
/ 18 марта 2014

Насколько я понимаю, вы создаете некоторый коммит, который вы поместили в центральное репо, после этого вы создаете еще один коммит, но они существуют на локальном.Все это не давило на центральное репо.

Чтобы просто удалить / отменить локальную фиксацию;

git reset HEAD~{number_of_commit}

, вы просто нажали git log в командной строке и получили список фиксаций.Посмотрите, сколько коммитов вы создали сейчас и сколько вам нужно отменить.

например, вам нужно удалить. Отменить два последних коммита, затем нажать

git reset HEAD~2

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

команда:

git reset --hard remotes/origin/HEAD
...