我有一个Windows Command脚本,旨在将 dev 分支合并到项目分支中。它首先读取当前分支名称,存储更改,获取和合并开发和项目分支,然后切换回原始分支并弹出存储。
问题是存储可能没有任何变化。这使得先前的存储位于堆栈的顶部。当它到达脚本的末尾并弹出存储时,它会弹出与当前分支无关的上一个存储。
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
获取反馈,以确定是否需要弹出藏匿处?
答案 0 :(得分:24)
git stash
允许您提供消息。您可以使用生成的令牌作为消息,以便您知道它不会与其他git存储消息冲突。
然后,当您想要检查是否要弹出时,只需检查git stash list
输出是否包含您的令牌。如果是这样,请弹出藏匿处。
答案 1 :(得分:10)
git stash list #get a listing of all stashes to parse
git stash show -p stash@{0} #replace 0 with number of relevant stash from list
答案 2 :(得分:0)
您可以stash
并检查输出。如果没有,则/Code Postal:/ {
match($0, /Code Postal: *([0-9][0-9])/, result);
dept = result[1];
}
/^Tél/ { $2 = dept }
{ print }
没有任何内容。该策略有任何问题吗?
答案 3 :(得分:0)
在Linux上,您可以使用git stash list | wc -l
来计算存储条目的数量。如果没有任何东西需要藏匿,那么这将在您的实际git stash
之前和之后返回相同的内容。我不确定你是否可以在Windows上使用它。