logo

Как да git отмените последния ангажимент

Като софтуерен инженер или уеб разработчик може да се наложи да изпратим много ангажименти към нашето Git хранилище.

Има обаче някои други случаи, в които искаме да ангажираме файловете, които няма да бъдат изпратени в нашето Git хранилище. Преди да издадем ангажимент, понякога може да пожелаем да внедрим някои допълнителни промени.

Като резултат ние изискваме да отменим последния ангажимент чрез нашето Git хранилище. Ще видим как можем да отменим последния ангажимент в тази тема.

Отмяна на последния Git Commit заедно с нулиране

Можем лесно да отменим последния git commit, като изпълним командата, т.е. 'git reset' заедно с опция, т.е. '-мек' който ще защити всички промени, направени в нашите файлове. Трябва да опишем ангажимента за отмяна, който е 'HEAD~1'.

Последният комит на git ще бъде изтрит от нашето Git хранилище.

 $ git reset --soft HEAD~1 

В тази нотация,

„ГЛАВА~1“: Това означава, че искаме да нулираме тази HEAD до единичен ангажимент, преди да влезем в историята на журнала.

java низ за сравнение
 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2) 

Какъв ще бъде ефектът от горната команда?

Командата, т.е. 'git reset' може да се разглежда като команда, т.е. противоположна на 'git add' , като по същество вмъква файлове в Git индекса.

Ако описвате опцията за '-мек' , Git изобщо няма да промени файловете в индекса или директорията за изпълнение.

Например, включихме два файла в нашия неотдавнашен ангажимент, въпреки че искаме да приложим някои промени в този файл.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit 

В резултат на това ще кандидатстваме 'git reset' заедно с опцията за '-мек' за да отмените последния ангажимент и също така да приложите някои допълнителни промени.

 $ git reset --soft HEAD~1 $ git status 

Над клона майстор

Нашият клон е master/origin напред с ангажимент 1 (приложете 'git push' за публикуване на нашите локални ангажименти).

Промени, които трябва да бъдат извършени:

 (apply 'git restore --staged …' to unstage) 

нов файл: file1

 $ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Както можем да видим, все още файлът е в индекса чрез отмяна на последния ангажимент (модификации, които трябва да бъдат ангажирани), въпреки че ангажиментът е изтрит.

Извършихме успешно последното ангажиране в нашето хранилище.

превъртането на мишката не работи

Твърдо нулиране Git ангажимент

Можем да считаме в горния раздел, че можем лесно отменете последния ангажимент и запазете модификациите направено за всеки файл в индекса. Но в някои ситуации ние просто искаме да премахнем промените и ангажиментите, направени във всеки файл.

Това е цел на опция, т.е. '-твърд' .

За да отмените последния комит и да премахнете всяка модификация в индекса и директорията, изпълнете команда, т.е. 'git reset' заедно с опцията, т.е. '-твърд' и опишете ангажимент преди командата HEAD ('ГЛАВА~1') .

 $ git reset --hard HEAD~1 

Всеки ангажимент и модификация ще бъдат премахнати от индекса и директорията след използване на '--твърд' команда. Така че трябва да внимаваме.

Например, ние сме ангажирали всеки нов файл с име „file1“ в нашето Git хранилище.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Сега приемете, че искаме да отменим последния комит и да премахнем всяка промяна.

списък с шрифтове в gimp
 $ git reset --hard HEAD~1 

Сега HEAD е на 90f8bb1 Втори комит

Сега нека проверим състоянието на нашето git хранилище.

 $ git status 

Над клона майстор

Нашият клон е съвременен с master/origin (приложете командата 'git push' за публикуване на нашите локални ангажименти).

лисица срещу вълк

Сега няма нищо за ангажиране и работното дърво е чисто.

Смесен ангажимент за нулиране на Git

Съхранявайте модификацията в нашата работна директория, но НЕ в индекса. Трябва да приложим командата, т.е ., 'git reset' заедно с опцията, т.е. '-смесен' . След тази команда трябва да добавим 'HEAD~1' просто към последния комит.

 $ git reset --mixed HEAD~1 

Например, ние сме включили всеки файл с име 'file1' във всеки ангажимент, който изискваме да отменим.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Просто изпълняваме командата, т.е. 'git reset' заедно с опцията, т.е. '-смесен' за отмяна на последния ангажимент.

В резултат на това, '-смесен' командата е a 'Смесете' сред твърдото и мекото нулиране, така и името му.

Над клона майстор

Нашият клон е master/origin напред с ангажимент 1 (приложете 'git push' за публикуване на нашите локални ангажименти).

Непроследени файлове: (приложете 'git add...', за да добавите вътре в това, което ще се ангажира)

 file1 

Нищо не е включено за ангажиране, но непроследените файлове присъстват (приложете „git track“ за проследяване).

И така, открихме друга практика за връщане на последния комит чрез запазване на модификациите, направени на файловете.

java подниз

Отмяна на последния ангажимент заедно с връщане

Приложете командата, т.е. 'git revert' и описват ангажимент, който трябва да бъде върнат, т.е. 'ГЛАВА' към ангажимента на историята за връщане на последния Git ангажимент.

 $ git revert HEAD 

Командата 'git revert' е различна в сравнение с командата 'git reset', защото може да записва всеки нов ангажимент заедно с някои модификации, дефинирани чрез дегенериране на последния комит.

Можем да опишем 'HEAD~1' с командата 'git reset', тъй като тази команда за нулиране ще зададе всяко ново място на HEAD, докато дегенерира описания комит.

В резултат на това ние ще ангажираме модификациите отново в някои файлове за връщане и ще се ангажираме да не бъдат изпълнени. Ние сме ангажирали всеки нов файл за нашето хранилище на Git, но искаме да дегенерираме този ангажимент.

 $ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Ако изпълните командата 'git revert', Git ще отвори нашия текстов редактор, за да извърши автоматично промените.

Как да git отмените последния ангажимент

Ново съобщение ще се покаже заедно с нов хеш на ангажимент, когато приключим с изпълнението на комит съобщение.

 [master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1 

Ако трябва да проверим нашата история на Git отново, можем да забележим добавен нов ангажимент за отмяна на последния ангажимент през нашето хранилище.

 $ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit