2011-03-01 44 views
29

閱讀Git pre-commit hook : changed/added files後後,下面的問題出現了:混帳:顯示文件的內容,因爲它看起來就像是犯

鑑於我有兩個文件被演出和不分階段的變化,我怎麼能顯示該文件的預覽升級後的內容?

例子:

echo "foo" >> file 
git add file 
echo "bar" >> file 

通緝輸出:

[previous contents of file] 
foo 
+1

'cat file'不會顯示'file'的當前工作副本嗎? – 2011-03-01 10:27:46

+0

是的,這是正確的解決方案 - 或者這是一個錯誤的問題? – silvio 2011-03-01 10:30:52

+0

可能重複[如何從git索引獲取文件的內容?](http://stackoverflow.com/questions/5032188/how-can-i-get-content-of-a-file-from-git -index) – user123444555621 2011-03-01 10:38:54

回答

84

使用:前綴可訪問當前索引中的對象(已暫存但尚未提交)。

git show :file 

gitrevisions(重點煤礦):

<rev>:<path>, e.g. HEAD:README, :README, master:./README 

後跟路徑名在樹中上下的對象之前由部分命名爲給定的路徑斑點或樹的後綴:冒號。 :path(在冒號前有一個空的部分)是下面描述的語法的特例:在給定路徑的索引中記錄的內容。

+0

+1:非常整齊 - 比我找到的解決方案更好 – 2011-03-01 10:45:49

+0

+1:非常好,必須記住一個! – 2011-03-01 10:56:37

+0

非常好,但我更喜歡與相對路徑一起工作的東西。即使文檔聲明「以./或../開頭的路徑與當前工作目錄相關,」這對我不起作用。 – user123444555621 2011-03-01 12:15:05

-1

只要看看上面的回答這個問題:How do I show the changes which have been staged?

--cached選項是你想要的。

+0

這將顯示舞臺文件的***區別,但它不會告訴你文件看起來如果你只是打開它編輯或「貓」它。 – 2013-08-10 18:33:23

+0

downvote道歉,但這是一個完全不同的問題完美的答案! :微笑: – pvandenberk 2014-10-14 19:12:24

6

更新說明:answer from grawity具有jleedev's answer to another question了一個非常巧妙的解決方案

這個配方是:

git cat-file blob $(git ls-files -s file | awk '{print $2}') 

您可能希望創建一個git alias如果你要經常使用它。

+0

正是我想要的。不幸的是,我的搜索沒有提出這個問題。 – user123444555621 2011-03-01 10:38:17

+0

@ Pumbaa80:謝謝,但我認爲grawity的回答更好,應該接受:) – 2011-03-01 10:48:59

+3

請注意,'cat-file'也接受':file'。 – 2011-03-03 11:48:19

0

你可以做git diff --cached,但這不完全是你想要的。

git grep -h --cached^-- file

適合我。