为什么要在 git 中添加和提交?

Why add and commit in git?

我是 的新手,我问我为什么必须使用“git add”和“git commit”将文件提交到我的存储库中。


所有 IDE 我都试过了,只需单击一下即可提交文件。这意味着 IDE 结合了 'add' 和 'commit',对吧?!

所以我找不到对这两个命令进行编程的任何理由。

There are subtle differences between and other cloud-based / repository systems. One of which is the fact has a so-called "staging area".

git add

  • 中,在您的存储库中更新文件之前,首先将其添加到所谓的 staging area。 正如函数名称所暗示的那样,这是通过 git add 命令完成的。

  • 暂存阶段,您告诉您要更新哪些文件。 这也意味着,如果您改变主意,可以删除临时区域中的某些更新。


git commit

  • 生成版本后,您认为可以将其发布到存储库中,您可以提交更改,以便您和其他人可以看到它们。

  • 再一次,命名的命令派生自所描述的操作,因此在本例中它将是 git commit,它会提交您提出的更改在您的暂存区 (通过 git add.


所以不同之处在于,如果您使用互联网浏览器将文件直接上传到存储库中,您实际上跳过了 git add 阶段,您 git commit 文件直接上传到存储库中。

现在,如果您有一个 git 项目,您只能自己管理,那么是的,git add 对您来说基本上是无用的。然而,在一个有多人工作的大型项目中,你想确保你不会覆盖别人的代码,或者只是想确保你进行了正确的版本管理,正确利用暂存区。

其中一个主要优点是,在提交阶段,您通常不会提交单个文件,而是提交多个更改,这样可以更容易地跟踪谁做了什么,而不是查找每个文件一个一个。

For more info (not only on) git add and git commit I would thoroughly recommend studying this guide. At least personally speaking, I became fluent in from this resource alone

git中的索引就像一个预检区域,一个可以准备下一次提交内容的地方。

如果您使用某些 IDE 或者如果您一直使用 -a,您 可以 基本上忽略它的存在。有些人这样做。在最简单的情况下,这可能是一个不错的选择。

然而,随着复杂性的增加,越来越难不与其进行更有效的交互,而这始于更好的理解。

此处有更多详细信息:

What does the git index contain EXACTLY?

也许在那里?

Understanding git - Index

更改可以分布在多个文件中,您可以将所有这些更改捆绑在一次提交中,并清楚地说明您所做的工作。

例如,在 Web 开发中,当您完成创建新页面时,您可能更改了多个文件。 您的提交信息可能是:Add index page 其中包含文件:

  • index.html

  • script.js

  • ...

将此推送到远程后,下一个拉取的人将得到一个稍微完成的索引页面,而不仅仅是一个文件。