Подтвердить что ты не робот

Когда следует использовать git stash?

Если я работаю на ветке A и вам вдруг нужно работать на ветке B, прежде чем быть готовым с фиксацией на ветке A, я запишу свои изменения на A, checkout B, сделаю там свою работу, затем выберу A и применил stash.

Если я работаю над A, и я хочу прекратить работу в течение дня, должен ли я откладывать свою работу, а затем применять ее на следующий день, когда я возобновляю свою работу, или я должен просто оставлять вещи такими, какие они есть, - незафиксированные измененные файлы в рабочем каталоге. Я не понимаю, почему в этом случае мне нужно использовать stash, за исключением случаев, когда есть какое-то преимущество в безопасности.

Кроме того, другой сценарий - я работаю как на работе, так и дома. Если я не готов с фиксацией, когда я хочу вернуться домой, могу ли я зачеркнуть свою работу, нажать ее в GitHub, а затем вытащить этот трюк дома?

4b9b3361

Ответ 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 для локального скрытия ваших изменений.
Если вы хотите работать удаленно, вы должны зафиксировать и нажать.