Я зашел в ветку и поработал. Я хотел перейти в другую ветку, но не хотел делать коммит, поэтому и сделал git stash
. Тогда я сделал git checkout <otherbranch>
. Я поработал там, и, как и в первой ветке, я хотел выйти из нее перед тем, как приступить к работе. Я тоже git stash
там сделал . Я вернулся к первой ветке и попытался распаковать ее ( git stash pop
), думая, что она получит тайник из этой конкретной ветки. Я был удивлен, что он распаковал тайник из <otherbranch>
(последнего спрятанного). У меня создалось впечатление, что тайник зависит от ветки, но такое поведение указывает на то, что для всего локального репозитория существует только один тайник.
Является git stash
филиал или конкретный для всего хранилища? Если это для всего репозитория, могу ли я передать ему параметры, чтобы сделать его специфичным для ветки?
stash list
элемента в дополнение к простому описанию?git stash show
(илиgit stash show stash@{<number>}
для чего-то другого, кроме@{0}
версии) дает вамdiff --stat
; добавьте,-p
чтобы получить большую разницу. Примечание: это сравнивает "дерево работы" в "тайнике" с фиксацией, от которой оно зависает; нет внешнего интерфейса, чтобы увидеть, что находится в "индексе" в данной сумке.Нет и нет. Git stash предназначен для каждого репозитория.
Вот хорошая страница о том, как его использовать.
источник
git stash
не по ветке.git stash
(который можно легко потерять, когда у вас много тайников и веток)git commit
чтобы сохранить незаконченный код в своей ветке, и когда вы будете готовы закончить код, сделайте a,git reset ${COMMIT_HASH_VALUE}
чтобы вернуть незаконченный кодgit commit
иgit reset
при правильном использовании вместе может имитировать agit stash
для конкретной ветвиВот обычный сценарий в реальной жизни , который демонстрирует значение и использование в
commit
иreset
командах:git commit
ветку функции XCOMMIT_HASH_VALUE
на потомgit reset ${COMMIT_HASH_VALUE}
(FYI по умолчанию для
git reset
IS--mixed
)источник
git reset HEAD~1
.HEAD^1
илиHEAD~1
.Я не уверен, почему каждый ответ здесь предлагает имитировать тайник с помощью
commit
+reset
. Stash отлично подходит для использования, особенно при работе с несколькими ветвями. Я также не хочу фиксировать, когда работаю с несколькими ветвями, потому что хочу, чтобы все измененные изменения по-прежнему выделялись в моем редакторе, когда я вернусь.Итак, вот рабочий процесс тайника:
Всякий раз, когда вам нужно переключить ветку и вы не готовы к фиксации, сохраните свои изменения в стеке.
Когда вы вернетесь в филиал, проверьте тайник
Если вы находитесь в ветке,
FixIssue0203
вы можете использовать use,git stash pop
потому что это применит верхstash@{0}
и удалит его из тайника.Однако, если вы
ImproveReadme
находитесь в ветке, вы должны сначала применить тайник 1,git stash apply stash@{1}
а затем удалить тайник 1 из стекаgit stash drop stash@{1}
.Это оно!
источник