在git中暂存一个暂存文件?

在git中暂存一个暂存文件?,git,commit,stage,Git,Commit,Stage,我正在使用git来管理我的项目。我对git在暂存文件时的工作流程感到困惑 如果我暂存文件并忘记提交,然后我修改了该文件并再次暂存并提交,我如何回滚到第一个暂存?如“”中所述,每次更改文件内容并将其添加到缓存时,您都要执行以下操作: git hash-object -w test.txt 将其存储到存储的对象 我刚刚为一个文件连续添加了两个git,然后添加了一个: C:\Users\VonC\prog\go\src\github.com\VonC\asciidocgo\.git>gfind

我正在使用git来管理我的项目。我对git在暂存文件时的工作流程感到困惑

如果我暂存文件并忘记提交,然后我修改了该文件并再次暂存并提交,我如何回滚到第一个暂存?

如“”中所述,每次更改文件内容并将其添加到缓存时,您都要执行以下操作:

git hash-object -w test.txt
将其存储到存储的对象

我刚刚为一个文件连续添加了两个
git
,然后添加了一个:

C:\Users\VonC\prog\go\src\github.com\VonC\asciidocgo\.git>gfind -mmin -10 -print
.
./index
./objects/4f
./objects/4f/76d586459ec6ffc42257bb4c61d5422051cb10
./objects/61
./objects/61/24401794e7fee613f5a56593a0a8a059b2627a
(请注意
-mmin
参数,以查找仅在过去10分钟内修改过的文件)

我本可以在每个
git add
之后列出相同的sha1,并加上:

git rev-parse :0:abstractNode_test.go
请参见(和“”):在索引中添加文件仅为阶段0(在合并过程中使用阶段1、2和3,以记录仍在索引中的公共祖先、源和目标版本)

如果我存储这两个blob的内容:

C:\Users\VonC\prog\go\src\github.com\VonC\asciidocgo>
git cat-file -p 4f76d586459ec6ffc42257bb4c61d5422051cb10 > a
git cat-file -p 6124401794e7fee613f5a56593a0a8a059b2627a > b
(注意我是如何将blob路径的“
4f/
”部分与路径的其余部分连接起来以获得完整的sha1)

a
b
之间的差异确实为我提供了添加到同一文件索引中的额外位


还提到:

另一种(我认为更简单)方法:。
悬挂的水滴对象在
.git/lost-found/other/
中结束,并且已经是
cat文件-p-ed

您确实可以找到在最后一个git add提交之前所做的所有git add。
就我而言,只有一个出现了:

C:\Users\VonC\prog\go\src\github.com\VonC\asciidocgo\.git\lost-found\other>dir
 Volume in drive C has no label.
 Volume Serial Number is D866-48E1

 Directory of C:\Users\VonC\prog\go\src\github.com\VonC\asciidocgo\.git\lost-found\other

25/01/2014  17:31    <DIR>          .
25/01/2014  17:31    <DIR>          ..
25/01/2014  17:31            16 873 4f76d586459ec6ffc42257bb4c61d5422051cb10
C:\Users\VonC\prog\go\src\github.com\VonC\asciidocgo\.git\lost-found\other>dir
驱动器C中的卷没有标签。
卷序列号为D866-48E1
C:\Users\VonC\prog\go\src\github.com\VonC\asciidocgo\.git\lost-found\other目录
25/01/2014  17:31              .
25/01/2014  17:31              ..
2014年1月25日17:31 16 873 4f76d586459ec6ffc42257bb4c61d5422051cb10

@BleedingFingers:谢谢@流血的人不是真的。暂存文件被添加到对象存储中,如果未提交,它们将变得不被引用。他们可能会被追回,但问题是你是否想惹上麻烦(即你的生活/工作是否取决于此)@Nevkrehnel:我们如何才能追回呢?另一种(我认为更容易)方法:
git fsck——失物招领
。悬挂的水滴对象在
.git/lost-found/other/
中结束,并且已经
cat-file-p
-ed.@torek很好,为了更直观,我将其包含在答案中。