3

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

4

1 回答 1

5

git show您可以使用object-name将 index 中的内容获取到您希望的任何位置,其中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

于 2011-05-18T13:19:09.207 回答