可以检索添加到索引的文件吗?

时间:2013-01-24 00:52:11

标签: git

当我阅读有关如何使用git的许多来源时,我没有看到任何文章,它表明何时可以在需要时回滚。例如,我在我的工作目录中初始化了一个git目录,即git init

然后我将文件添加到git的索引,即git add .。这已将所有文件添加到git的索引中。现在,不是将文件提交到git的存储库,即git commit,而是对我添加到索引中的一个文件进行更改。我意识到我弄错了。我可以回滚到以前的状态,还是仅在我提交文件时才可以这样做?我的理解是,当我运行命令git add .时,在git的对象库中创建一个或多个文件的副本。我相信对象存储中的文件是压缩的。这是否意味着我可以从对象存储库回滚?

4 个答案:

答案 0 :(得分:2)

是的,你可以。尝试

git checkout-index -f foo

从结帐中结帐foo。或者通过

结帐所有文件
git checkout-index -fa

答案 1 :(得分:2)

使用

git checkout -- <file>

在保留对索引的更改时放弃工作目录中的更改。

答案 2 :(得分:1)

在不指定树的情况下使用git checkout将从索引结帐。

答案 3 :(得分:1)

我对这个问题很感兴趣,答案似乎是&#34;是&#34;,git add将文件的副本放在存储库中,即使没有提交,也可以回滚文件存储库,使用以下示例进行测试。

% mkdir test && cd test
% git init .
% echo "1" > test.txt
% git add test.txt
  - git status shows now "added" file
% echo "2" > test.txt
  - git status shows "added" and "modified" file, test.txt contains number 2
% git checkout test.txt
  - git status shows only "added" again, and test.txt contains the number 1