[英]Git index file not identical after resetting back - why?
我試圖了解 git 索引文件是如何工作的。
我有一個包含一些文件的本地存儲庫,其中一個是test.txt
。 我在提交X
並將該提交的索引文件保存到臨時目錄。
然后我編輯了test.txt
添加並提交了它,它創建了提交Y
。 之后,我運行git reset --hard X
並在從提交Y
重置后保存了提交X
的索引文件。
然后我比較了兩個索引文件(從提交X
和從提交X
重置后從提交Y
),它們並不相同。 怎么會這樣? 文件中有時間戳嗎? 據我所知,索引應該已重置為其以前的內容(?)
之后我跑了
git reset --hard X
就是這樣做的:索引條目具有用於簽出內容的 hash 代碼以及工作樹中生成的文件系統時間戳。 當您git reset --hard
時,它更新了工作樹,因此這些文件具有相同的內容,但比之前簽出相同內容的時間戳更新。
索引文件是什么樣的有什么關系? 重要的是它列出的文件的版本。 您可以使用ls-files
找到它。
例子:
$ git init
$ echo "howdy" > howdy.txt
$ git add .
$ git commit -m "root"
$ echo "bonjour" >> howdy.txt
$ echo "byebye" > byebye.txt
$ git add .
$ git commit -m "first"
$ git ls-files --stage
100644 3abe061d90cd975b4bef1fa702caec7c0f320b29 0 byebye.txt
100644 e1f6537eb149ccead2e53cbf2da40291c07d904a 0 howdy.txt
好的,這些是索引的“內容”。 現在讓我們進行更改和新的提交:
$ echo "extra line" >> howdy.txt
$ git add .
$ git commit -m "second"
$ git ls-files --stage
100644 3abe061d90cd975b4bef1fa702caec7c0f320b29 0 byebye.txt
100644 1ad49f2d780a4b46f68dd9bb1571c65ffc1dc660 0 howdy.txt
現在讓我們重置:
$ git reset --hard HEAD^
$ git ls-files --stage
100644 3abe061d90cd975b4bef1fa702caec7c0f320b29 0 byebye.txt
100644 e1f6537eb149ccead2e53cbf2da40291c07d904a 0 howdy.txt
如您所見,索引與它原來的索引“相同”,這是唯一重要的意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.