svn-每次我要提交时都必须将文件添加到git吗?

我是git的新手,来自SVN世界。 到目前为止,它似乎更有用,但我仍在研究方面。

目前,我的工作流程是这样的:

进行更改> git add。 > git commit>输入日志消息

我不明白的是为什么我似乎必须在提交前添加所有文件。 他们已经在版本控制之下了吗? 为什么git commit告诉我没有对提交进行任何更改,但还指出我已修改了文件? 它说“已更改但未更新:”。 这是什么意思??

抱歉,这很容易,我觉得我缺少一些关键点

Hamy asked 2019-11-08T10:31:05Z
3个解决方案
47 votes

这使您可以通过编辑来分隔提交。 如果您只想现在一次提交一次来提交这些文件,然后又一次第二次提交来立即提交这些下一个文件,则可以执行以下操作:

git add files_under_one_topic
git commit -m "this is about one thing"

git add files_left_over_to_commit_about_a_completely_different_topic
git commit -m "this is about another thing."
Justin L. answered 2019-11-08T10:31:24Z
20 votes

Git通过使用“暂存”区域进行工作,在该区域中准备将要捆绑在一起的内容作为提交。 因此,您确定了要提交的更改集(例如全部或子集),将其添加到登台区域,然后提交登台区域中的内容。

当您调用git commit -a -m "Comment for modified files already under source control."时,它会向您显示已添加到暂存区域中的内容(即“要提交的更改”),git正在跟踪的文件中已修改的内容(即“已更改但未更新”)以及任何新文件 您从未添加过(即未跟踪的文件)。

如果您只想提交已更改的内容,但不包括新创建的文件,则可以使用git commit -a -m "Comment for modified files already under source control."

Derek Greer answered 2019-11-08T10:32:02Z
12 votes

您并不是在将文件置于git控制下,而是在将它们添加到更改列表中。 其他一些SCM(例如perforce)也可以这样做。 这对于建立尚不准备提交但要在单独的块中提交的不同更改集非常方便。

您可以通过执行git diff来以更颠覆的方式提交-它将提交git知道的所有已更改的内容,就像git diff所做的一样。

(PS。由于您来自svn世界,所以我会提到另一个陷阱,让我有点循环了-当您git diff时,它只会向您显示当前状态与当前状态之间的差异 更改列表,而不是当前状态和上一次提交之间的差异。如果在添加所有更改的文件(例如git add -u)后立即运行git diff,即使有差异要提交,您也会看到一个空的差异!)

Ether answered 2019-11-08T10:32:42Z
translate from https://stackoverflow.com:/questions/3160976/should-i-have-to-add-files-to-git-every-time-i-want-to-commit