如何使用相同的隐藏消息撤消意外的git stash pop?

时间:2018-04-22 16:35:46

标签: git

我知道git存储只是本地的,并且消息不会暴露给任何远程方,因此消息与提交消息的相关性要小得多。

我似乎无法找到一种方法来获取已明确传递给git stash save的消息或以任何其他方式检索它,因为git stash pop未记录在git reflog中}。

我经常在隐藏信息中写入信息,为什么我要藏匿以及隐藏的实施有多远,所以它们对我来说非常有价值。

我知道使用分支比使用git stash几乎没有任何缺点有很多优点。我已经习惯于不再使用git stash来支持分支,但是我已经丢失了消息,并希望澄清一次。

我的git stash pop输出看起来像

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   test

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (958d4b921e7f3e8faa9fd2ecb12af13250e1f739)

1 个答案:

答案 0 :(得分:2)

首先,自Git 2.16 +(2017年第4季度)以来git stash save is now called git stash push

您可以使用roott/t3903-stash.sh中看到测试的消息(但之前的 git stash list

git stash pop仍为shell script,您可以看到when it creates the stash, it actually creates a commit

git stash

然后, # create the stash if test -z "$stash_msg" then stash_msg=$(printf 'WIP on %s' "$msg") else stash_msg=$(printf 'On %s: %s' "$branch" "$stash_msg") fi w_commit=$(printf '%s\n' "$stash_msg" | git commit-tree $w_tree -p $b_commit -p $i_commit $untracked_commit_option) || die "$(gettext "Cannot record working tree state")" 能够返回该提交消息。