2011-05-18 48 views
3

是否可以將某個文件的索引狀態與其工作樹內容進行交換?如何將工作目錄中文件的內容與此文件的先前版本的內容交換?

+0

你的意思是將文件的內容添加到索引中嗎?在那種情況下,'git add'就是這樣。否則,我不知道你的意思 – rlc 2011-05-18 12:53:10

+1

@rlc:我會理解「交換」作爲交換。將版本從工作樹放入索引,同時將版本從索引放入工作樹。 – 2011-05-18 13:19:59

+0

@rlc,@Jan:如果你在組裝一個提交的時候做了一些最後的修改,特別是如果提交沒有提交所有的工作樹更改,那麼很容易就會出現交換的需求。你可能會說「oops,那個版本我上演了另一半變更的提交,並且工作樹中的版本應該上演。「 – Cascabel 2011-05-18 13:22:59

回答

5

您可以從指數獲取內容的任何地方你祝使用git show對象名稱,其中對象名稱是SHA1或:filename(這意味着從指數的版本)或revision:filename(這意味着從給出的版本修訂版)。因此,要麼:

git show :filename > filename.tmp 
git add filename 
mv filename.tmp filename 

OBJECT=$(git rev-parse :filename) 
git add filename 
git show $OBJECT > filename 

前修改索引,而後者只是詢問它有對象名稱索引,改變它,不是從獲取對象之前將數據保存到磁盤對象存儲。那時,什麼都不是指對象,但直到你運行git gc纔會被刪除。

相關問題