Когда следует использовать git stash?
Если я работаю на ветке A и вам вдруг нужно работать на ветке B, прежде чем быть готовым с фиксацией на ветке A, я запишу свои изменения на A, checkout B, сделаю там свою работу, затем выберу A и применил stash.
Если я работаю над A, и я хочу прекратить работу в течение дня, должен ли я откладывать свою работу, а затем применять ее на следующий день, когда я возобновляю свою работу, или я должен просто оставлять вещи такими, какие они есть, - незафиксированные измененные файлы в рабочем каталоге. Я не понимаю, почему в этом случае мне нужно использовать stash, за исключением случаев, когда есть какое-то преимущество в безопасности.
Кроме того, другой сценарий - я работаю как на работе, так и дома. Если я не готов с фиксацией, когда я хочу вернуться домой, могу ли я зачеркнуть свою работу, нажать ее в GitHub, а затем вытащить этот трюк дома?
Ответы
Ответ 1
Stash - это просто удобный метод. Поскольку ветки настолько дешевы и удобны в управлении в git, я лично почти всегда предпочитаю создавать новую временную ветвь, чем приклеивание, но в основном это дело вкуса.
Одно место, которое мне нравится, - это если я обнаружил, что я забыл что-то в своем последнем коммите и уже начал работать над следующим в той же ветке:
# Assume the latest commit was already done
# start working on the next patch, and discovered I was missing something
# stash away the current mess I made
git stash save
# some changes in the working dir
# and now add them to the last commit:
git add -u
git commit --ammend
# back to work!
git stash pop
Ответ 2
Команда stash будет сохранять любые изменения, внесенные вами с момента последнего коммита. В вашем случае нет никаких оснований для того, чтобы застревать, если вы продолжите работать над ним на следующий день. Я бы использовал только stash для отмены изменений, которые вы не хотите совершать.
Ответ 3
Если вы нажмете git stash
, когда у вас есть изменения в рабочей копии (не в промежуточной области), git создаст спрятанный объект и надавит на стек закладок (точно так же, как вы сделали git checkout -- .
, но вы не потеряет изменений). Позже вы можете выскочить из верхней части стека.
Ответ 4
Основная идея
Спрятать изменения в грязном рабочем каталоге
Итак, команда Basicallly Stash сохраняет некоторые изменения, которые вам не нужны или не нужны в данный момент; но они могут вам понадобиться.
Используйте git stash, когда хотите записать текущее состояние рабочий каталог и индекс, но хочу вернуться к чистому рабочий каталог. Команда сохраняет ваши локальные модификации и возвращает рабочий каталог в соответствие с коммитом HEAD .
Ответ 5
Я разбью ответ на три абзаца.
Часть 1:
git stash
# для скрытия изменений без фиксации
git checkout some_branch
# для работы с другими задачами и возвращения в свою ветку
git stash list
# для просмотра списка со скрытыми изменениями
Вы можете увидеть:
stash @{0}: WIP на {имя_в ветки}: {SHA-1 последнего коммита} {{последний коммит вашей ветки}}
stash @{0}: WIP на master: 085b095c6 модификация для теста
git stash apply
# для применения ваших последних изменений из списка stashов
git stash apply [email protected]{12}
# если у вас будет много stashов, вы можете выбрать, какой именно stash будет применяться
git stash drop [email protected]{0}
# для удаления из списка stashов
или
git stash pop [email protected]{1}
# для применения выбранного stashа и удаления его из списка stashов
Часть 2:
Вы можете скрыть свои изменения с помощью этой команды, но это не обязательно.
Вы можете продолжить на следующий день без stashа.
Это команды для скрытия ваших изменений и работы в разных ветках или для реализации некоторой реализации вашего кода и сохранения в stashах без веток и коммитов в вашем пользовательском случае!
А позже вы можете использовать некоторые stashи и проверить, какие из них лучше.
Часть 3:
Команда Stash для локального скрытия ваших изменений.
Если вы хотите работать удаленно, вы должны зафиксировать и нажать.