Как да отмените последното фиксиране в git, но запазете промените като неуточнени?

Направих ангажимент, но сега е доста трудно да разбера, че промених всичко. Разбира се, мога да изпълня git diff, но бих предпочел да анулирам последния запис и тактично да запазя всичките си промени, така че моята IDE (PyCharm) просто да ми показва кои файлове са променени.

Така че, има ли начин да откажете последното поправка (наистина да го изтриете), но все пак да запазите промените си в такт? Всички съвети са добре дошли!

10
12 марта '14 в 18:05 2014-03-12 18:05 Kramer65 е настроен на 12 март '14 в 18:05 2014-03-12 18:05
@ 3 отговора

Това звучи като задача за git reset --soft , чиято помощ ( git help reset ) казва следното:

 --soft Does not touch the index file nor the working tree at all (but resets the head to <commit>, just like all modes do). This leaves all your changed files "Changes to be committed", as git status would put it. 

Така че, коммитирането е отменено, но файловете все още изглеждат като преди. Нищо не се вписва в индекса.

8
12 марта '14 в 18:10 2014-03-12 18:10 отговорът е даден от Питър Уестлейк на 12 март'14 в 18:10 2014-03-12 18:10

Бих оставил --soft в другите два отговора и отивам с прост git reset @^ (или git reset HEAD^ в по-стари версии на git), който по подразбиране ще бъде git reset --mixed @^ . Разликата е, че меката нулиране оставя файловете да се ангажират, което не е това, което изглежда. Ако наистина искате да отмените поправка, вероятно би трябвало да деактивирате промените, което по подразбиране прави. Смятам, че е много по-полезен в общия случай, отколкото мек нулиране, което вероятно е причината, поради която подразбиращата се стойност е смесена.

border=0
4
12 марта '14 в 18:39 2014-03-12 18:39 отговорът е даден от Гари Фикслер на 12 март '14 в 18:39 2014-03-12 18:39

Както Петър казва, бих отишъл с git reset --soft , който трябва да остави и вашия индекс, и работната директория.

В твоя случай, ако искаш да върнеш 1 git reset --soft HEAD~ , можеш да използваш git reset --soft HEAD~ да git reset --soft HEAD~ клона в родителската git reset --soft HEAD~ на текущата HEAD; индексът и работната ви директория все още ще съдържат променените ви файлове.

Полезна статия за нулиране: http://git-scm.com/blog/2011/07/11/reset.html

2
12 марта '14 в 18:31 2014-03-12 18:31 Отговорът е даден от Крис на 12 март 14 в 18:31 2014-03-12 18:31

Други въпроси относно тагове или Ask a Question