为什么我们需要git add命令中的文件名?

时间:2016-06-10 02:35:28

标签: git

我正在学习Git命令。

我对git add和git commit的理解如下:git add'file name'获取项目的快照(整个工作目录)并暂存它。 git commit将暂存的快照保存到存储库。

我也理解git与SVN等在保存文件的基本方式上有所不同。当SVN在单个文件中保存增量更改时,git会保存整个工作目录的快照。如果文件未更改,git snapshot将包含上一个快照中该文件的引用。

我在这里有一个问题。如果git add获取整个工作目录的快照,为什么我们需要在命令中提供单独的文件名?无论如何,Git会拍摄整个项目的快照。

3 个答案:

答案 0 :(得分:2)

因为您可能想要添加已添加或更改的每个文件。

例如,假设您已修改了xyzzy.c文件,但您还将一张非常漂亮的图片taylor_swift.jpg下载到当前目录(并且还没有机会移动它其它地方)。

希望后一个文件找到进入仓库的方式,所以你只需这样做:

git add xyzzy.c

abd只添加你想要添加的文件。

在任何情况下,如果您想要当前目录中的每个文件,您只需执行以下操作:

git add .

我倾向于将其视为三个方面。

首先,检查您的特定“快照”的工作区域,以及您所做的任何更改。

然后是保存下一次提交文件的暂存区域。

最后,git-proper区域包含所有已提交的更改。

如果您考虑这些术语,add然后将单个事物从工作复制到分段,commit复制从分段到git-proper的所有内容。

答案 1 :(得分:1)

你对git快照的理解是错误的。如git网站文档[Snapshots, Not Differences]所示,项目的快照是您在存储库中添加的每个文件的快照聚合。这就是您需要在git add命令中指定文件名的原因。

告诉git哪个文件应由git add <filename>管理后,您可以使用git add -u进行修改,在这种情况下,不需要文件名。

答案 2 :(得分:0)

查看有关git add

的git文档

只需你可以使用。

您可以使用git add .这将获取整个目录/新文件/已修改文件 - 准备提交。