首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git秘密隐藏/删除已进行的更改。

Git秘密隐藏/删除已进行的更改。
EN

Stack Overflow用户
提问于 2017-06-07 22:52:53
回答 1查看 219关注 0票数 1

问题:

代码语言:javascript
复制
$ git status -s
MM myfile
$ git stash save
$ git show stash@{0}
# Only shows unstaged changes NOT staged changes

# To debug:
$ GIT_TRACE=2 git stash show
trace: exec: 'git-stash' 'show'
trace: run_command: 'git-stash' 'show'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
trace: built-in: git 'config' '--get-color' 'color.interactive.help' 'red bold'
trace: built-in: git 'config' '--get-color' '' 'reset'
trace: built-in: git 'rev-parse' '--no-flags' '--symbolic' '--sq'
trace: built-in: git 'rev-parse' '--symbolic-full-name' 'refs/stash'
trace: built-in: git 'diff' '--stat' 'aaaa' 'bbbb'
trace: run_command: 'pager'
trace: exec: 'pager'
$ git diff --stat aaaa bbbb
# Shows both staged and unstaged changes
$ git stash apply --index
$ git status -s
MM myfile

为什么git不显示stash@{0}不显示应该是存储部分的阶段性更改?看来git-藏在一个藏物中,默默地隐藏着阶段性的变化。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-07 23:00:14

这是因为git show stash@{0}是错误的命令。你想要git stash show stash@{0}

不幸的是,对于存储使用来说,git show是一个非常好的命令,当您要求它显示合并提交时,它会显示一个合并的差异。而且,在内部,stash提交具有合并提交的形式(但不是正常的实质),因此组合的差异很少有好处--因此git show很乐意显示它们,但显示它们为空。

由于git stash show实际上很容易将-o输入为git show stash,所以您会有非常糟糕的行为。只要记住,当你什么也看不见的时候,它可能是一个倒序的情况。

(这里还值得注意的是,git stash show将隐藏的工作树与存储的父树进行了比较。没有git stash命令来显示存储的索引与任何内容。若要查看索引与父索引,请使用git diff stash@{number}^1 stash@{number}^2.)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44424005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档