如果您想象在 Github 上的存储库中维护一个日志文件,则更容易理解 git 命令 add 和 commit 的使用。
对我来说,一个典型的项目日志文件可能如下所示:
---------------- Day 1 --------------------
Message: Completed Task A
Index of files changed: File1, File2
Message: Completed Task B
Index of files changed: File2, File3
-------------------------------------------
---------------- Day 2 --------------------
Message: Corrected typos
Index of files changed: File3, File1
-------------------------------------------
...
...
...and so on
我通常以 git pull 请求开始我的一天,并以 git push 请求结束。因此,一天的记录中的所有内容都对应于它们之间发生的事情。每天,我都会完成一项或多项需要更改一些文件的逻辑任务。在该任务期间编辑的文件列在索引中。
每个子任务(这里的任务 A 和任务 B)都是单独的提交。 git add 命令将文件添加到“已更改文件索引”列表中。此过程也称为暂存,实际上记录更改的文件和执行的更改。 git commit 命令记录/最终确定更改和相应的索引列表以及可用于以后参考的自定义消息。
请记住,您仍然只是更改存储库的本地副本,而不是 Github 上的副本。在此之后,只有当您执行 git push 时,所有这些记录的更改以及每次提交的索引文件都会登录到主存储库(在 Github 上)。
例如,要获得该虚构日志文件中的第二个条目,我会这样做:
git pull
# Make changes to File3 and File4
git add File3 File4
# Verify changes, run tests etc..
git commit -m 'Corrected typos'
git push
简而言之,git add 和git commit 可让您将主存储库的更改分解为系统的逻辑子更改。正如其他答案和 cmets 所指出的那样,它们当然还有更多用途。然而,这是最常见的用法之一,也是 Git 背后的驱动原理,它是一个不同于 Svn 等其他流行的多阶段修订控制系统。