如何保存/应用带有名称的存储?我不想在git存储列表中查找它的索引号。我尝试了git存储保存“my_stash_name”,但这只会更改存储描述,相应的git-apply“my_stash_name”不起作用。
当前回答
Stashes并不是你想要的永久性的东西。在提交时使用标记可能会更好。构造你想要隐藏的东西。从中进行提交。为该提交创建标记。然后将你的分支回滚到HEAD^。现在,当您想重新应用该存储时,可以使用gitcherry-pick-n标记名(-n是--no commit)。
其他回答
自2.15.x/2.16起,git stash save已被弃用,您可以使用git stass push-m“message”
您可以这样使用:
git stash push-m“消息”
其中“message”是你的留言。
为了检索存储,您可以使用:git存储列表。这将输出如下列表,例如:
stash@{0}: On develop: perf-spike
stash@{1}: On develop: node v10
然后,只需使用apply为其提供存储@{index}:
git stash apply 1
工具书类git存储手册页
所以,我不知道为什么在这个话题上会有如此多的恐慌。我可以用push和不推荐的save来命名git stash,也可以使用正则表达式通过apply将其拉回:
使用名称应用的Git存储方法
$ git stash push -m "john-hancock"
$ git stash apply stash^{/john-hancock}
如前所述,save命令已被弃用,但它仍然有效,因此您可以在无法通过推送调用更新它们的旧系统上使用它。与push命令不同,save不需要-m开关。
// save is deprecated but still functional
$ git stash save john-hancock
这是Git 2.2和Windows 10。
视觉证明
这里有一个漂亮的动画GIF演示了这个过程。
事件顺序
GIF运行速度很快,但如果你看,过程如下:
ls命令显示目录中的4个文件touch example.html添加第五个文件git stash push-m“john hancock”-a(-a包括未跟踪的文件)ls命令在stash之后显示4个文件,这意味着stash和隐式硬重置工作正常git stash apply stash ^{/john hancock}运行ls命令列出了5个文件,显示example.html文件已返回,这意味着git stash apply命令有效。
这有道理吗?
坦率地说,我不确定这种方法的好处是什么。给储藏物起个名字是有价值的,但不包括检索。也许编写搁置和取消搁置过程的脚本会有所帮助,但只需按名称弹出一个存储库还是要容易得多。
$ git stash pop 3
$ git stash apply 3
这看起来比正则表达式容易得多。
Stash可以使用以下命令自定义注释。
PS D:\git-example> git stash -m "your comment"
列出藏匿物品
PS D:\git-exapmle> git stash list
stash@{0}: On master: first stash
stash@{1}: On master: second stash
我们可以选择任何一个储藏物,我们必须传递储藏物@{x},下面我选择第二个储藏物是1。
PS D:\git-example> git stash pop 1
要保存带有消息的存储:
git stash push -m "my_stash_name"
或者(自v2.16起已弃用):
git stash save "my_stash_name"
要列出隐藏内容:
git stash list
所有的储藏物都存储在一个堆栈中。
要弹出(即应用并删除)第n个存储:
git stash pop stash@{n}
使用git stash pop无法按名称弹出(即应用和删除)存储(请参见脚注1)。
要应用第n个存储:
git stash apply stash@{n}
要按名称应用隐藏:
git stash apply stash^{/my_stash_name}
脚注1:
有关申请,请参阅man git stash部分:与pop不同,可以是任何看起来像是由stash push或stash create创建的提交。可能的解决方法(在git版本2.27和2.31上测试):git stash pop$(git stash-list--prey=“%gd%s”|grep“my_stash_name”|head-1|gawk“{print$1}”)
如果你使用的是ZSH,这个别名组合非常致命:
zstyle ':completion:*' completer _expand_alias _complete _ignored
alias gs="git stash push -u -m "
alias gsp='git stash pop'
基本上,您可以使用tab自动完成别名,然后可以按名称轻松命名和搜索您的git存储。这个推送别名还将包括任何未跟踪的文件,我发现这些文件作为默认值很有用。
推荐文章
- 在单个文件中重新启动/撤消冲突解决方案
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '
- 如何拉特定的目录与git
- 本地存储库中的文件与源文件之间的差异
- 将Git存储库内容移动到另一个存储库,保存历史记录