gpt4 book ai didi

git stash clear,除了特定的存储

转载 作者:太空狗 更新时间:2023-10-29 14:43:44 25 4
gpt4 key购买 nike

有时我使用 git stash 来快速摆脱我认为我可能想要重新访问的任何尖峰或实验。很多时候,我不会重新访问它们,我的 stash list 就会被污染。

我想删除我的 git stash 中的所有内容,除了一个特定的 stash。

示例:我的 git stash list 如下所示:

stash@{0}: On test-branch: try something
stash@{1}: WIP on spiked-branch: 2cc4751 another spike attempt
stash@{2}: On master: 2cc4751 experimental refactoring
stash@{3}: WIP on spiked-branch: 3ccfc4d first spike attempt

我只想保留 stash@{2}。有没有简单的方法可以做到这一点?

我知道我可以通过采取以下步骤实现我的结果:

git reset --hard origin/master #=> ensure I have clean branch
git stash pop stash@{2} #=> put stash on current branch
git stash clear #=> clear all stashes
git stash #=> re-stash what I popped in step 2

这看起来很乏味。有没有更有效的方法?

最佳答案

让它不那么乏味的一种方法是将命令放在脚本中。我已经这样做了,并进行了一些修改以使其更健壮:

#!/bin/sh

git reset --hard HEAD && git stash pop stash@{$1} && git stash clear && git stash

您的版本的变化:

  1. 使用 HEAD 而不是分支名称,这样您就不会意外地移动分支指针。
  2. 根据第一个参数选择要 pop 的存储。
  3. 使用 && 将命令链接在一起,因为如果一个失败,您可能不想继续下一个。

然后您可以将其称为例如:

mystashclear.sh 2

你想保存 2 号 stash 的地方。

或者,您可以只使用别名:

git alias.clear-except "! git reset --hard HEAD && git stash pop stash@{$1} && git stash clear && git stash"

同样,您可以将其用作:

git clear-except 2

关于git stash clear,除了特定的存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41291788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com