git - 使自动存储重新应用索引,就像 git 存储的 --index 选项一样
git - Make autostash reapply index, just like git stash's --index option
我在我的全局配置中设置了 rebase.autostash=true
,能够重新设置脏工作树的基线很棒,但似乎没有 --index
选项来制作自动弹出窗口重新暂存我之前暂存的更改,就像您通过 git apply/pop --index <StashID>
手动存储和弹出时所做的那样。相反,在变基和自动弹出之后,所有更改现在都未暂存。
有没有办法将 --index
添加到自动存储?
没有。代码硬编码应用命令 in the current rebase implementation:
argv_array_pushl(&stash_apply.args,
"stash", "apply", autostash.buf, NULL);
尝试使用 pre-rebase
and post-rewrite
挂钩手动执行自动存储失败有两个原因:
- 如果自动存储被禁用并且有未提交的更改,rebase 将提前中止并且
pre-rebase
挂钩永远不会被调用
- 如果启用了自动存储,
pre-rebase
挂钩会在本地更改已经重置后运行,因此没有任何东西可以存储
不幸的是,自动存储机制在内部使用 git stash create
to create an unrecorded stash commit and only stores it to the regular stash list when the apply fails (using git stash store <hash>
)。因此,也没有自动方法找到自动存储提交以在 post-rewrite
挂钩中使用 git stash apply --index
重新应用。
然而,自动存储的短哈希被打印到控制台。这样就可以通过以下步骤手动重新应用它:
- 使用
git reset --hard
再次清除状态
- 使用
git stash apply --index <shorthash>
重新应用自动存储提交
将自动存储散列作为参数的 git alias 包装起来可以使该过程更愉快一些:
git config --global alias.reapply '![ ! -z "" ] && git stash && git stash apply --index "^0" && git stash drop || echo "usage: git reapply <autostash-hash>"'
这使得命令 git reapply <autostash-hash>
可用。它使用一系列 git stash
、应用自动存储、git stash drop
而不是 git reset --hard
来使意外运行更容易恢复。它还使用了将 ^0
添加到散列的技巧,避免将其解释为隐藏编号 like the autostash code does for its apply call.
我在我的全局配置中设置了 rebase.autostash=true
,能够重新设置脏工作树的基线很棒,但似乎没有 --index
选项来制作自动弹出窗口重新暂存我之前暂存的更改,就像您通过 git apply/pop --index <StashID>
手动存储和弹出时所做的那样。相反,在变基和自动弹出之后,所有更改现在都未暂存。
有没有办法将 --index
添加到自动存储?
没有。代码硬编码应用命令 in the current rebase implementation:
argv_array_pushl(&stash_apply.args,
"stash", "apply", autostash.buf, NULL);
尝试使用 pre-rebase
and post-rewrite
挂钩手动执行自动存储失败有两个原因:
- 如果自动存储被禁用并且有未提交的更改,rebase 将提前中止并且
pre-rebase
挂钩永远不会被调用 - 如果启用了自动存储,
pre-rebase
挂钩会在本地更改已经重置后运行,因此没有任何东西可以存储
不幸的是,自动存储机制在内部使用 git stash create
to create an unrecorded stash commit and only stores it to the regular stash list when the apply fails (using git stash store <hash>
)。因此,也没有自动方法找到自动存储提交以在 post-rewrite
挂钩中使用 git stash apply --index
重新应用。
然而,自动存储的短哈希被打印到控制台。这样就可以通过以下步骤手动重新应用它:
- 使用
git reset --hard
再次清除状态
- 使用
git stash apply --index <shorthash>
重新应用自动存储提交
将自动存储散列作为参数的 git alias 包装起来可以使该过程更愉快一些:
git config --global alias.reapply '![ ! -z "" ] && git stash && git stash apply --index "^0" && git stash drop || echo "usage: git reapply <autostash-hash>"'
这使得命令 git reapply <autostash-hash>
可用。它使用一系列 git stash
、应用自动存储、git stash drop
而不是 git reset --hard
来使意外运行更容易恢复。它还使用了将 ^0
添加到散列的技巧,避免将其解释为隐藏编号 like the autostash code does for its apply call.