簡體   English   中英

Git 索引文件在重置后不完全相同 - 為什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM