2017-06-07 34 views
1

問題:的Git藏匿默默隱藏/刪除暫存的變更

$ git status -s 
MM myfile 
$ git stash save 
$ git show [email protected]{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 

爲什麼不混帳顯示藏匿@ {0}不能表明被認爲是藏匿的部分階段性變化?看起來,git-stash默默地隱藏了隱藏的階段性變化。

回答

2

這是因爲git show [email protected]{0}是錯誤的命令。你想要git stash show [email protected]{0}

不幸的是,對於隱藏用法,git show是一個非常好的命令,並且當您要求它顯示合併提交時,它會顯示組合差異。而且,在內部,存儲提交具有合併提交的格式(但不是正常的實體),因此合併差異幾乎不會有任何好處 - 因此git show很樂意向他們展示它們,但將它們顯示爲空。

由於git stash show真的很容易打字錯誤,因爲git show stash,你得到非常不良行爲。只要記住,當你什麼都看不到的時候,這可能是一個倒序的詞序。

(這也是這裏值得注意的是git stash show對藏匿的父藏工作樹進行比較。沒有git stash命令顯示藏匿指數 VS東西。要查看索引VS父,使用git diff [email protected]{number}^1 [email protected]{number}^2)。