Проверьте, что "git stash" спрятал что-нибудь
У меня есть команда Windows script, предназначенная для объединения ветки dev в ветку проекта. Он начинается с чтения текущего имени ветки, смены изменений, выбора и слияния ветвей dev и project, затем переключается обратно в исходную ветвь и выталкивает тайник.
Проблема в том, что не может быть никаких изменений в stash. Это оставляет предыдущий тайник в верхней части стека. Когда он доходит до конца script и выталкивает тайник, он выталкивает предыдущий тайник, который не связан с текущей ветвью.
Set SourceBranch=dev
Set ProjectBranch=project
:: Stash current changes.
For /F "tokens=1,2" %%a In ('Git branch -q') Do If "%%a"=="*" Set CurrentBranch=%%b
Git stash save -u
:: Pull latest source branch.
Git checkout %SourceBranch%
Git pull
For /F "tokens=1,3" %%a In ('Git branch -q -v') Do If "%%a"=="*" Set MergeHash=%%b
:: Merge source into project branch.
Git checkout %ProjectBranch%
Git pull
Git merge --commit %MergeHash%||Exit 1
:: Return to original branch.
Git checkout %CurrentBranch%
Git stash pop
Как я могу получить обратную связь от Git stash
или Git status
, чтобы определить, нужно ли мне всплывать тэг?
Ответы
Ответ 1
git stash
позволяет вам предоставить сообщение. Вы можете использовать сгенерированный токен в качестве сообщения, чтобы вы знали, что он не будет конфликтовать с другими сообщениями git.
Затем, когда вы хотите проверить, следует или нет, просто проверьте, содержит ли вывод git stash list
ваш токен. Если это так, всплывает.
Ответ 2
git stash list #get a listing of all stashes to parse
git stash show -p [email protected]{0} #replace 0 with number of relevant stash from list
Ответ 3
Вы можете git diff
и проверить вывод.
- Если его нет, то нет ничего для
stash
.
- Если есть вывод, то вы можете
grep
проанализировать его для конкретных вещей, которые вам нужны.
Любая проблема с этой стратегией?
Ответ 4
В Linux вы можете использовать git stash list | wc -l
, чтобы подсчитать количество записей закладок. Если не было ничего, чтобы сохранить, то это возвращает то же самое до и после вашего фактического git stash
. Я не уверен, что вы можете использовать это в Windows, хотя.