关于GIT命令用法

时间:2012-08-05 08:05:08

标签: git

我的仓库里有一个目录树。我是第一次git add -A

现在我错误地删除了包含文件的目录并执行:

git add -A

我也失去了我的仓库中的整个目录。或者有办法检索丢失的目录吗?

另外假设我做git add .我不会丢失我的目录,我是否正确? 所以我认为没有办法跟踪使用git删除文件?

例如我昨天提交时删除了3个文件,如果我想回到昨天所有文件和目录的版本,我会看到删除的文件吗?

1 个答案:

答案 0 :(得分:2)

我对你的问题的理解是:

  1. 您有一个git存储库,其中包含一些文件和目录。
  2. 您最初添加了所有内容(git add -A)。大概你也承诺了。
  3. 从存储库中删除目录(rm -rf dir),然后添加更改(git add -A)。我假设你然后提交。
  4. 如果是这种情况,那么是的,您已从存储库中删除了该目录。从git-add手册页:

    
    -A, --all
       Like -u, but match  against files in the working tree in addition
       to the index. That means that it will find new files as well as staging modified
       content and removing files that are no longer in the working tree. 
    

    git add -A会将所有更改添加到存储库 - 添加,删除,批次。

      

    所以我认为没有办法使用git跟踪文件的删除?

    我不确定你的意思。您可以从git跟踪文件的删除。阅读git-rm的手册页。或者,删除文件,然后运行git add -Agit将删除的文件添加到索引,允许您提交删除。因此跟踪删除。

      

    还假设我做了一个git add。我不会丢失我的目录,我是否正确?

    您不会将目录删除到git索引,这是正确的。但是,目录仍然从git工作目录中消失,因为您删除了该目录。

      

    例如我昨天提交时删除了3个文件,如果我想回到昨天所有文件和目录的版本,我会看到删除的文件吗?

    您将文件添加到存储库。 git add file; git commit -m "added file"。我们称之为提交A 接下来删除该文件,并将更改提交到存储库:rm file; git add -A; git commit -m "Deleted file"(另一种方式是git rm file)。我们称之为提交B

    如果您签出提交B,则文件不存在。你删除了它们,并且提交反映了这一点 如果您签出提交A,那么文件就在那里。该提交包含文件。

    回答你的问题:

      

    例如我昨天提交时删除了3个文件,如果我想回到昨天所有文件和目录的版本,我会看到删除的文件吗?

    没有。您将不会在昨天提交中看到文件,因为您已提交删除。但是,如果您在昨天提交之前签出提交,那么文件就在那里。