如何将工作目录中文件的内容与此文件以前暂存的版本的内容交换?

时间:2011-05-18 12:47:45

标签: git git-index

是否可以将某个文件的索引状态与其工作树内容交换?

1 个答案:

答案 0 :(得分:5)

您可以使用git show object-name 从索引到任意位置获取内容,其中 object-name 是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之前不会删除它。