Git

Git Stash с име

Git Stash с име

Как да скриете промените със свързаното име и да го намерите след това

Разработчиците често трябва да изпълняват много задачи. Може да работите по нова функция и може да има заявка за отстраняване на грешка. Или може да сте водещ разработчик на множество проекти.

Когато превключвате между задачи, понякога не искате да извършвате незавършена работа. В тези случаи командата git stash може да бъде от голяма помощ. Тя ви позволява да подреждате промените си и по-късно да се върнете към незавършената работа, без да добавяте ненужни фикси към вашите git хранилища.

Работен поток за Git Stash

Нека да инициализираме клон на git master и да ангажираме файл ReadMe.текст.

$ mkdir my_project
$ cd my_project /
$ git init
$ touch ReadMe.текст
$ git add -A
$ git commit -m "Инициализиране"

Сега нека добавим друг файл, наречен a.txt към главния клон.

$ докосване a.текст
$ git add -A
$ git commit -m "Добавен a.текст"

Ако проверите историята, ще видите:

$ git log --oneline
d79f7aa Добавен a.текст
9434d7e Инициализиране

Сега нека създадем клон feature1 и добавим b.txt файл:

$ git клон характеристика
$ git функция за плащане
$ докосване b.текст
$ git add -A
$ git commit -m "Добавено b.текст"

Отворете вашия b.txt файл в редактор и поставете в реда:

На път съм да променя това на ..

И запазете файла. Ако проверите състоянието си на git, ще видите следното:

$ git статус
На характеристика на клона
Непроведени промени за фиксиране:
(използвайте "git add ... "за актуализиране на това, което ще бъде извършено)
(използвайте "git checkout -- ... "за отхвърляне на промените в работната директория)
 
модифициран: b.текст
 
не са добавени промени за фиксиране (използвайте "git add" и / или "git commit -a")

Да предположим, че на този етап получавате заявка за актуализиране на a.txt файл на главния клон. Но не сте готови с b.txt файл. Ако се опитате да проверите главния клон, получавате следната грешка:

$ git checkout master
грешка: Вашите локални промени в следните файлове ще бъдат заменени при плащане:
б.текст
Моля, ангажирайте промените си или ги скрийте, преди да можете да превключвате клонове.
Прекъсване

Но не искате да извършите незавършената работа в б.текст. Можете да използвате скривалището git в тази ситуация:

$ git скривалище
Запазена работна директория и състояние на индекса WIP на feature1: 2cfe39b Добавен b.текст
HEAD вече е на 2cfe39b Добавен b.текст

Ако поставите отметка b.txt, трябва да е празно:

$ котка б.текст
$

Ако проверите скривалището, ще видите:

$ git списък с скривалища
скривалище @ 0: WIP при функция1: 2cfe39b Добавен b.текст

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

$ git checkout master
Превключено към клон „master“

Да предположим, че правите необходимите промени в главната страница и след това се върнете към клон feature1:

$ git функция за плащане

Вашият б.txt все още е празен:

$ котка b.текст
$

Но ако получите промените от скривалището, като използвате следната команда:

Прилага се $ git stash
 
На характеристика на клона
Непроведени промени за фиксиране:
(използвайте "git add ... "за актуализиране на това, което ще бъде извършено)
(използвайте "git checkout -- ... "за отхвърляне на промените в работната директория)
 
модифициран: b.текст
 
не са добавени промени за фиксиране (използвайте "git add" и / или "git commit -a")

Командата за прилагане на скривалище взе скритите промени и ги приложи към b.txt файл
Можете да завършите работата си в б.txt моята модификация на реда

На път съм да променя това на ..


Да се

На път съм да променя това на ГОТОВО

Сега продължете и извършете промените си:

$ git add -A
$ git commit -m "Променено b.текст"

Прилагането на скривалище не го почиства автоматично от скривалището. Трябва да го почистите ръчно:

$ git скрит спад
Отпаднали препоръки / скривалище @ 0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)

Защо Git Stash с име?

Git stash е стек. Така че можете да продължите да натрупвате промените си.

Да предположим, че добавяте „X“ към b.txt, скрийте го, добавете „Y“ към b.txt, скрийте го и добавете „Z“ към b.txt и го скрийте. Ако проверите историята на скривалището, ще видите нещо подобно:

$ git списък с скривалища
[имейл защитен] 0: WIP при характеристика1: 2d6f515 Променена b.текст
[имейл защитен] 1: WIP при характеристика1: 2d6f515 Променен b.текст
[имейл защитен] 2: WIP при характеристика1: 2d6f515 Променен b.текст

Няма как да разберете кое скривалище има коя промяна. Когато скривате, можете да използвате опцията за запазване, за да добавяте коментари. Можете да използвате коментарите, за да прикачите име към скривалището си и да ги направите разпознаваеми:

$ git скривалище запазване "X"
Запазена работна директория и състояние на индекса В функция1: X
HEAD вече е на 2d6f515 Модифициран b.текст

За добавяне на модификация „X“, „Y“ и „Z“ можете да получите следното в скривалището си, като използвате опцията за запазване за всяко скривалище:

$ git списък с скривалища
скривалище @ 0: На функция1: Z
скривалище @ 1: На функция1: Y
скривалище @ 2: На функция1: X

Сега имате име за всяка промяна, която сте скрили. За съжаление не можете да използвате името, за да извлечете скривалището. Ще трябва да използвате номера на скривалището. Да предположим, че искате да получите вашата промяна „Y“. Виждате, че [имейл защитен] 1 е Y. Така че можете да приложите тази промяна към текущия си клон:

$ git stash прилага stash @ 1

И вашият b.txt трябва да има промените от [имейл защитен] 1.

Можете да използвате същия метод, за да пуснете скривалище. Да предположим, осъзнавате, че не се нуждаете от X скривалището повече. Можете просто да използвате следната команда, за да изтриете това скривалище:

$ git stash drop stash @ 2

И скривалището трябва да изчезне:

$ git списък с скривалища
скривалище @ 0: На функция1: Z
скривалище @ 1: На функция1: Y

Не забравяйте, че ако използвате опциите за прилагане и пускане без никакви параметри, той ще използва горната част на стека ([имейл защитен] 0).

Заключение

Командата git stash е мощен начин за управление на работното ви пространство. Овладяването на тази команда ще ви помогне да работите по-ефективно.

Допълнително проучване:
  • https: // git-scm.com / book / en / v1 / Git-Tools-Stashing
Препратки:

Преливане на стека: как-да-да-да-да-извлечете-скривалище-по-име-в-git

Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...
Курсорът скача или се движи произволно, докато пишете в Windows 10
Ако установите, че курсорът на вашата мишка скача или се движи самостоятелно, автоматично, произволно, докато пишете в лаптоп или компютър на Windows,...
Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...