git - 检查 "git stash"是否 stash 了任何东西

标签 git batch-file git-stash

我有一个 Windows 命令脚本,旨在将 dev 分支 merge 到项目分支中。它首先读取当前分支名称、存储更改、获取并 merge 开发和项目分支,然后切换回原始分支并 pop 存储。

问题是 stash 可能没有任何变化。这会将之前的存储留在堆栈的顶部。当它到达脚本末尾并 pop 存储时,它会 pop 与当前分支无关的前一个存储。

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 stashGit status 获得反馈以确定是否需要 pop 存储?

最佳答案

git stash 允许您提供消息。您可以使用生成的 token 作为您的消息,这样您就知道它不会与其他 git 存储消息冲突。

然后,当你想检查是否 pop 时,只需检查 git stash list 输出是否包含你的 token 。如果是这样, pop 存储。

关于git - 检查 "git stash"是否 stash 了任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24520791/

相关文章:

git - 您如何仅存储已添加的文件?

java - 如何在Eclipse中配置从GIT导入的项目为Java项目?

batch-file - 使用批处理从字符串中提取子字符串

batch-file - 在 if 语句 = 上做 2 件事

git stash 和 edited hunks

Git stash pop 在 master 分支上

git - 撤消 IntelliJ 智能 checkout

Git 将另一个存储库中的单个文件 merge 到我自己的

git - 如何在Node配置中获取Jenkins中的git标签名称

batch-file - 通过用零填充来批量重命名连续文件