更正git存储库而不读取目录的正确方法

时间:2011-05-23 09:36:02

标签: git

如果我的问题是关于一个非常简单的话题我很抱歉,并且在其他地方也有答案,但我是 git 的菜鸟,我无法回答它既不读git文档,也不在网上搜索。

我为一个简单的测试项目创建了一个git存储库。我初始化了存储库,使用一些git add命令添加了一些文件和目录,并进行了我的第一次提交。

例如,假设我添加了一个README和两个目录src1src2,其中包含一些文件。然后假设我不只是编辑了文件内容,但我在这些目录中添加了 /删除了文件。为了使回购更新,我现在正在做:

git add --update
git add src1 src2
git commit -m "something"

请注意我正在更新已编辑的文件,并使用git add --update删除已删除的文件,然后重新添加这两个目录,以便让git跟踪创建的新文件!有没有一种简单的方法(没有重新添加)这样做?我试过了:

git add --update
git commit -m "something"

但这不会添加在src1src2目录下创建的新文件。 那是因为git不“记住”我正在跟踪整个目录,而只是跟踪其中的文件。 git似乎没有跟踪目录。

显然我已经使用你在上面的例子中看到的行创建了一个bash脚本,但它有点麻烦,我想知道是否有更简单的方法。

3 个答案:

答案 0 :(得分:2)

而不是--update,请使用--all。见man git-add

git add --all .
  

那是因为git没有“记住”我正在跟踪整个目录,而只是跟踪其中的文件。 git似乎没有跟踪目录。

这很容易解释:是的,你是对的:) Git根本不跟踪目录,因为目录不是git-world中的对象。目录没有任何内容,并且永远不会对它们进行更改(因为缺少内容),可以进行git跟踪。如果你打电话给git add path/to/directory,这将不会添加目录,但会以递归方式添加每个包含文件。

只是一个提示:TIG帮助我开始使用git:)

答案 1 :(得分:2)

要添加所有内容,您只需运行git add --all即可。 Git跟踪内容而不是文件或目录。

如果您正在使用--all,请注意不要添加任何不需要的内容并使用.gitignore。

答案 2 :(得分:1)

git不会因某种原因添加新文件。由于默认情况下并非所有新文件都应位于存储库中。所以你要么自己添加它们,要么创建一些为你做的机制,但无论哪种方式都在你的控制之下。

这适用于大多数版本控制系统。