Когда нужно сделать что-то очень срочно, а мы на полпути в поточной работе, которое и комитить рано и не понятно как. По-этому у нас есть возможность взять отредактированные файлы и положить во временное пространство:
WIP - Work In Progress
gerbils - name of branch where stashed files were gotten from
b2bddead Add dogs. - хеш код востановленного стешингом коммита и его сообщение
Чтобы вернуть из стеша изменения обратно мы делаем:
Каждый раз когда мы пишем git stash save, изменения заталкиваются в некий стек стеша.
Чтобы увидеть содержание этого стека:
Когда нам нужно вытянуть не верхний стеш из стека, а какой-то из середины, нам необходим указать его маркер:
У команды apply есть одна особенность, она не попит стеш из стека. Чтобы удалить из стека стеш мы должны воспользоваться командой drop(либо укакав маркер, либо не указав, что означает верхний):
Shortcuts
Если мы делаем git stash pop и нарываемся на конфликт, то тогда нужно понимать, что при решении конфликта у нас получается сработатает только первая команда этог алиаса, а git stash drop нужно делать руками.
Фишка стеша состоит в том, что он полносью сохраняет состояния изменений, и то что мы застейджили и то что нет.
Но есть возможность стешить только, то что не находится в стейджинг пространстве:
У нас может быть ситуация, когда мы работаем над очень большими изменениями, и у нас куча файлов, которые еще не трекаются гитом. А пришел очень срочный баг, и у нас нет времени со всем этим разбираться для это и етсть вот такой вид стешинга:
git stash show принимает все ключи, которые использует git log
Бывает такое, что мы удалили бранч из которого был сделан стеш, но сами сохранненные изменения нам важны. Для этого нам нужно создать новый бренч и слить туда изменения.
Мы также можем почистить все стеши, которые есть у нас с стеке:
$ git stash save Saved working directory and index state WIP on gerbils: b2bddead Add dogs.
WIP - Work In Progress
gerbils - name of branch where stashed files were gotten from
b2bddead Add dogs. - хеш код востановленного стешингом коммита и его сообщение
Чтобы вернуть из стеша изменения обратно мы делаем:
$ git stash apply # On branch gerbils # Changes not staged for commit: # (use "git add <file>..." to update what will be commited) # (use "git checkout -- <file>..." to discard changes) # # modified: index.html
Каждый раз когда мы пишем git stash save, изменения заталкиваются в некий стек стеша.
Чтобы увидеть содержание этого стека:
$ git stash list
stash@{0}: WIP on master: 686b55d Add wolves.
stash@{1}: WIP on gerbils: b2bdead Add dogs.
stash@{2}: WIP on gerbils: b2bdead Add dogs.
Когда нам нужно вытянуть не верхний стеш из стека, а какой-то из середины, нам необходим указать его маркер:
$ git stash apply stash@{1}
# On branch gerbils
# Changes no staged for commit:
#
# modified: index.html
У команды apply есть одна особенность, она не попит стеш из стека. Чтобы удалить из стека стеш мы должны воспользоваться командой drop(либо укакав маркер, либо не указав, что означает верхний):
$ git stash drop Dropped (6dc716f...)
Shortcuts
| Shortcut | Same as |
|---|---|
| git stash | git stash save |
| git stash apply | git stash apply stash@{0} |
| git stash drop | git stash drop stash@{0} |
| git stash pop | git stash apply git stash drop |
Stash and Conflicts
Есть всегда риск конфликтов. Если у нас есть незакомиченные изменения, то стеш ничего не мерджит, он предупреждает, чтобы выкатить стеш, нужно либо закомитить текущие конфликтующие со стешом изменния, либо откатить изменения.Если мы делаем git stash pop и нарываемся на конфликт, то тогда нужно понимать, что при решении конфликта у нас получается сработатает только первая команда этог алиаса, а git stash drop нужно делать руками.
Фишка стеша состоит в том, что он полносью сохраняет состояния изменений, и то что мы застейджили и то что нет.
Но есть возможность стешить только, то что не находится в стейджинг пространстве:
$git stash save --keep-index
У нас может быть ситуация, когда мы работаем над очень большими изменениями, и у нас куча файлов, которые еще не трекаются гитом. А пришел очень срочный баг, и у нас нет времени со всем этим разбираться для это и етсть вот такой вид стешинга:
$git stash save --include-untracked
Детализирование просмотра стека стейшей
$git stash list --stat
stash@{0}: WIP on gerbils: b2dbead Add dogs.
gerbil.html | 7 ++++++
index.html | 1 +
wolf.html | 7 ------
3 files changed, 8 insertions(+), 7 deletions(-)
stash@{1}: WIP on master: 686b55d Add wolves.
gerbil.html | 7 ------
...
Детали конкретного стеша:
$git stash show | $git stash show stash@{0}
gerbil.html | 7 ++++++
index.html | 1 +
wolf.html | 7 ------
3 files changed, 8 insertions(+), 7 deletions(-)
git stash show принимает все ключи, которые использует git log
$git stash show --patchЕсть возможность стеши обеспечивать сообщениями, как у комитов:
$git stash save "Add gerbils page, start index."После чего мы видим это сообщение в списке стешов, вместо хеша восстановленного комита и его сообщения.
Бывает такое, что мы удалили бранч из которого был сделан стеш, но сами сохранненные изменения нам важны. Для этого нам нужно создать новый бренч и слить туда изменения.
$git stash branch gerbil-toys stash@{0}
Мы также можем почистить все стеши, которые есть у нас с стеке:
$git stash clear
Комментариев нет:
Отправить комментарий