Git

Git Как да върна последния ангажимент?

Git Как да върна последния ангажимент?
Git е ефективен инструмент, който следи вашия код. И една от чудесните функции на инструмента е, че можете лесно да проверите историята си и да се върнете обратно, ако сте сгрешили. Нека създадем ситуация, при която можете да върнете последния фиксиране и да видите как работи командата Git revert.

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

Можете да създадете папка с име / test и да изпълните следните команди, за да инициализирате Git и да създадете ситуацията, описана по-горе (Умишлено правим отделни фиксирания, за да създадем история):

$ git init
Инициализирано празно хранилище Git в / Users / zakh_eecs / _work / LearnGIT / git_revert / test /.git /
$ echo x> file_1.текст
$ git add -A
$ git commit -m "Добавяне на файл_1.текст"
[master (root-commit) 08caf5d] Добавяне на файл_1.текст
1 файл е променен, 1 вмъкване (+)
създайте режим 100644 файл_1.текст
$ echo y> file_2.текст
$ git add -A
$ git commit -m "Добавяне на файл_2.текст"
[master ba18a2f] Добавяне на файл_2.текст
1 файл е променен, 1 вмъкване (+)
създайте режим 100644 файл_2.текст
$ echo z> файл_3.текст
$ git add -A
$ git commit -m "Добавяне на файл_3.текст"
[master 97f09ad] Добавяне на файл_3.текст
1 файл е променен, 1 вмъкване (+)
създайте режим 100644 файл_3.текст
$ echo u> file_4.текст
$ git add -A
$ git commit -m "Добавяне на файл_4.текст"
[master 9caf084] Добавяне на файл_4.текст
1 файл е променен, 1 вмъкване (+)
създайте режим 100644 файл_4.текст
$ echo v> file_5.текст
$ git add -A
$ git commit -m "Добавяне на файл_5.текст"
[master 3f228b2] Добавяне на файл_5.текст
1 файл е променен, 1 вмъкване (+)
създайте режим 100644 файл_5.текст

Ако проверим нашата папка, трябва да видим следната ситуация:

$ ls -1
файл_1.текст
файл_2.текст
файл_3.текст
файл_4.текст
файл_5.текст

Ако проверим историята, трябва да имаме следните файлове:

$ git log --oneline
3f228b2 Добавяне на файл_5.текст
9caf084 Добавяне на файл_4.текст
97f09ad Добавяне на файл_3.текст
ba18a2f Добавяне на файл_2.текст
08caf5d Добавяне на файл_1.текст

Сега нека създадем хаос, ще изтрием няколко файла и ще добавим лош файл.

$ rm файл_2.текст
$ rm файл_4.текст
$ echo w> my_bad_file.текст
$ git add -A
$ git commit -m "Добавени и изтрити файлове, без да се мисли за последствия"
[master 879fbf8] Добавени и изтрити файлове, без да се мисли за последствия
3 файла променени, 1 вмъкване (+), 2 изтривания (-)
режим на изтриване 100644 файл_2.текст
режим на изтриване 100644 файл_4.текст
режим на създаване 100644 my_bad_file.текст

Това е условието на нашата папка:

$ ls -1
файл_1.текст
файл_3.текст
файл_5.текст
my_bad_file.текст

И това е условието на нашата история:

$ git log --oneline
879fbf8 Добавени и изтрити файлове, без да се мисли за последствия
3f228b2 Добавяне на файл_5.текст
9caf084 Добавяне на файл_4.текст
97f09ad Добавяне на файл_3.текст
ba18a2f Добавяне на файл_2.текст
08caf5d Добавяне на файл_1.текст

Осъзнаваме, че не искаме последния коммит 879fbf8. Затова използваме следната команда за връщане:

$ git върне 879fbf8

Това ще отвори текстов прозорец за редактиране на автоматичния коментар:

Върнете "Добавени и изтрити файлове, без да мислите за последствия"
 
Това връща ангажиране 879fbf849c4bd6fb9a377604d6355c76b92a832c.
 
# Моля, въведете съобщението за ангажиране за вашите промени. Стартиране на линии
# с '#' ще бъде игнорирано и празното съобщение прекъсва фиксирането.
# На главния клон
# Промени, които трябва да бъдат извършени:
# Нов файл: файл_2.текст
# Нов файл: файл_4.текст
# Изтрит: my_bad_file.текст
#

Можете да модифицирате коментара. Ще го запазим такъв, какъвто е. Веднага щом запазите прозореца за коментар, ще се извърши задачата за връщане:

$ git върне 879fbf8
[master 6e80f0e] Върнете „Добавени и изтрити файлове, без да мислите за последствия“
3 файла променени, 2 вмъквания (+), 1 изтриване (-)
създайте режим 100644 файл_2.текст
създайте режим 100644 файл_4.текст
режим на изтриване 100644 my_bad_file.текст

Нека да разгледаме нашата папка сега:

$ ls -1
файл_1.текст
файл_2.текст
файл_3.текст
файл_4.текст
файл_5.текст

Нашите файлове се връщат в последователност, както преди. Всички добавки и изтривания са върнати. Нека проверим дневника:

$ git log --oneline
 
6e80f0e Връщане "Добавени и изтрити файлове, без да се мисли за последствия"
879fbf8 Добавени и изтрити файлове, без да се мисли за последствия
3f228b2 Добавяне на файл_5.текст
9caf084 Добавяне на файл_4.текст
97f09ad Добавяне на файл_3.текст
ba18a2f Добавяне на файл_2.текст
08caf5d Добавяне на файл_1.текст

Има нов ангажимент 6e80f0e. Всички промени, които бяха част от 879fbf8 беше отменено и след това извършено през 6e80f0e.

Внимание: Командата Git reset ви позволява да отмените и ангажиранията. Но в случая на нулиране (особено хардуерно нулиране) той би изтрил 879fbf8 ангажирайте така, както никога не се е случило и нямаше да има 6e80f0e ангажирам. С команда за връщане всеки може да види настъпилите промени. В случая на нулиране не е останала следа. Така че е лоша идея да използвате команда за нулиране в публично хранилище, защото това може да доведе до масово объркване. Златното правило е - не използвайте нулиране в публични хранилища, използвайте връщане, което е по-безопасно.

В заключение:

Командата Git revert е бърз и удобен начин за отстраняване на грешките ви. Това е команда, която трябва да запомните, ако работите редовно с Git.

Допълнително проучване:

Урок за OpenTTD
OpenTTD е една от най-популярните бизнес симулационни игри там. В тази игра трябва да създадете прекрасен транспортен бизнес. Въпреки това, ще започне...
SuperTuxKart за Linux
SuperTuxKart е страхотно заглавие, създадено да ви предостави безплатно изживяването на Mario Kart във вашата Linux система. Играта е доста предизвика...
Урок за битка за Уеснот
Битката за Уеснот е една от най-популярните стратегически игри с отворен код, които можете да играете по това време. Тази игра не само се разработва о...