繁体   English   中英

“git stash create x” - 它在哪里?

“git stash create x” - Where is it?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

如果我使用git stash create whatever创建一个提交,那么我会得到一个提交的哈希值,但是我找不到使用git reflog提交哈希。

git log stash也不起作用,不是git stash list

如何列出我使用git stash create的提交

3 个回复

虽然https://stackoverflow.com/a/6589093/39155中的答案在技术上有效,但是从Git 2.9.0开始,该解决方案已经过时,并且有一种内置方式来存储danglish stash refs( git stash store )。

git stash create创建一个悬空提交,不会将ref存储在任何地方。 如果你想保存它,你需要使用git stash store进行跟进。 git-stash页:

创建一个存储(这是一个常规提交对象)并返回其对象名称,而不将其存储在ref命名空间中的任何位置

为了将它存储在ref命名空间中并将其与缓存引用相关联,您需要运行git stash store <commit> 例如

$ git stash create
09eb9a97ad632d0825be1ece361936d1d0bdb5c7
$ git stash store 09eb9a97ad632d0825be1ece361936d1d0bdb5c7
$ git stash list
stash@{0}: Created via "git stash store".

如果要将名称与存储引用关联,只需将-m / --message传递给git stash store

$ git stash store -m "my stash" 09eb9a97ad632d0825be1ece361936d1d0bdb5c7
$ git stash list
stash@{0}: my stash

如果您使用此答案中的脚本 ,则可以执行git stash list

#!/bin/sh
#
# git-stash-push
# Push working tree onto the stash without modifying working tree.
# First argument (optional) is the stash message.
if [ -n "$1" ]; then
        git update-ref -m "$1" refs/stash "$(git stash create \"$1\")"
else
        HASH=`git stash create`
        MESSAGE=`git --no-pager log -1 --pretty="tformat:%-s" "$HASH"`
        git update-ref -m "$MESSAGE" refs/stash "$HASH"
fi

那么你可能真的希望在某个时候得到这个提交。 要做到这一点,你可以使用git stash list stashes,它给你这样的东西(记住,这些可能是愚蠢的提交消息):

stash@{0}: WTF? Nothing is working
stash@{1}: it's all working perfectlY!
stash@{2}: blah2

然后你可以通过运行恢复,例如, blah2

 git stash pop stash@{2}

或者@Eliot指出,你可以使用它来破坏你的藏匿:

 git stash apply stash@{2}

编辑

thx告诉我一个新功能(?)

手册页说明了这一点:

创建一个存储(这是一个常规提交对象)并返回其对象名称,而不将其存储在ref命名空间中的任何位置。

存储在ref命名空间中的任何位置。 你必须跟踪它。 如果你输了,

git fsck --unreachable 

或许可以提供一个提示。 小心过期,所以不要做git gc --prune=...就在那时

1 我放错了一些工作,但我知道它在我的git-stash堆栈中的某个位置

当另一个优先级更高的问题出现时,我正处于修复某个功能的过程中。 我没有像通常那样创建新分支,提交并移回主分支,而是使用git stash 。 我忘记了我从未完成修复,只是将其留在了我的藏匿处。 我经常使用git stash在设置有不同项目配置的分支之间移动更改,以针对多个构建环境进行测试, ...

2 当 Git 删除或移除一个文件时,它会去哪里?

当 Git 通过软重置或硬重置删除文件时 - 这些文件去哪里了? 有什么办法可以回到混合重置之前的状态吗? 通常,当一个文件在操作系统上被删除时,它会进入垃圾桶。 当通过 Git 删除或删除文件时,它们似乎进入了以太。 这些文件去哪里了? 我有一堆没有正确添加的新文件,我愚蠢地运行了混合重置,现 ...

4 Git和Stash之间有什么关系?

我可以访问我的公司Stash项目存储库。 我通过Eclipse IDE将项目克隆到我的本地Git存储库中。 为此,我在Eclipse中安装了必需的Git插件。 我的问题是: Git只是与Stash沟通的促进者? 我们不能使用Git作为分布式存储库而不是Stash吗? ...

5 Git:模拟没有stash命令的git stash

Git stash是一个非常有用的命令系列,但是它不会向命令添加任何内容(即,没有commit命令就无法提交,而没有stash命令则可以隐藏起来)。 如果您必须隐藏工作但没有stash命令,该怎么办? ...

7 git-stash 与 git-branch

在之前的 Git 问题中,Daniel Benamy 谈到了 Git 中的工作流程: 我在 master 上工作并提交了一些东西,然后决定我想搁置这项工作。 我备份了一些提交,然后在开始我的垃圾工作之前分支。 他想在不丢失当前更改的情况下将他的工作状态恢复到之前的时间点。 所有的答案都以各 ...

2008-09-02 14:22:44 4 36036   git
9 git pull / stash与git过滤器冲突

这个问题是关于将git与nbstripout过滤器一起使用,它在将它存储在git之前从jupyter笔记本(JSON文件)中删除了一些字段。 剥离过滤器用于在几个开发人员处理同一个笔记本时最小化冲突。 所以repo配置开始于: 在git diff或git commit期间使用此配 ...

10 git-stash 更改而不恢复

我在一个使用 Git 的项目上工作。 每隔一段时间,我发现自己想要保存我的更改,而不是提交它们,只是作为备份,然后继续工作。 我通常做的是git stash然后立即git stash apply使代码恢复到与隐藏之前相同的状态。 我遇到的问题是 git stash 恢复了我的工作目录,因此即使我立即 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM