当切换回相应的分支时,Git 可以提醒我或自动应用存储吗?

Nij*_*n22 3 git

我经常开始在某个分支上工作(例如new-feature)并被具有更高优先级的东西(例如)打断high-prio。大多数时候,我的更改new-feature是不完整的,因此我不想进行完整的提交¹,所以git stash在签出新high-prio分支之前我会这样做。这会创建一个与new-feature以下内容相关联的新存储:

stash@{0}: WIP on new-feature: <sha1 and message of previous commit>
Run Code Online (Sandbox Code Playgroud)

现在,我可以在high-prio. 完成后,我new-feature再次结帐,并且(因为已经有一段时间了)经常忘记有一个与此分支相关的存储。这会产生问题,因为我可能会重新做我已经在 stash 上完成的工作,或者我必须稍后合并/重新调整这些更改。

是否有一个配置设置可以提醒我关于现有的存储,或者更好的是,在new-feature再次签出后自动将存储弹出回我的工作树中?

¹ 执行“WIP”-提交然后压缩更改不是一个好的解决方案,因为我希望始终origin/new-feature与本地new-feature.

jay*_*ant 5

您可以像这样使用 git post-checkout钩子:

将以下文本添加到 .git/hooks/post-checkout

#!/bin/bash
echo "Don't forget to git stash pop the following:"
git stash list
Run Code Online (Sandbox Code Playgroud)

或者

#!/bin/bash
branch=$(git branch | sed -n '/\* /s///p')
last_stash_on_branch=$(git stash list --grep="WIP on ${branch}:" | head -1 | cut -d: -f1)
if [[ -n "${last_stash_on_branch}" ]]; then
    git stash pop --index ${last_stash_on_branch}
fi
Run Code Online (Sandbox Code Playgroud)

使其可执行

chmod +x .git/hooks/post-checkout
Run Code Online (Sandbox Code Playgroud)

现在,当您结帐任何分支时,您的结帐后脚本有望提醒您检查您的藏品