是否可以将某个文件的索引状态与其工作树内容交换?
答案 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
之前不会删除它。