每次我想提交时,我是否必须向git添加文件?

Ham*_*amy 58 svn git git-svn

来自SVN世界,我是git的新手.到目前为止,它似乎更有用,但我仍然在解决问题.

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

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

我不明白的是为什么我似乎必须在提交之前添加所有文件.他们已经受版本控制了吗?为什么git commit告诉我没有添加到提交的更改,但是也指出我修改了文件?它说"已更改但未更新:".这是什么意思??

对不起,如果这很容易,我觉得我错过了一些重要的观点

Jus*_* L. 48

这允许您通过编辑分隔提交.如果您现在只想提交这些文件,在一次提交下,然后现在提交这些文件,在第二次提交下,您可以执行以下操作:

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."
Run Code Online (Sandbox Code Playgroud)

  • 甚至比这更进一步.使用`git add -p`,您可以在文件中进行一些更改,但不能在其他文件中进行更改. (4认同)

Der*_*eer 20

Git通过使用"临时"区域来工作,您可以在其中准备要作为提交捆绑在一起的内容.因此,您决定要提交哪些更改集(例如,全部或子集),将它们添加到暂存区域,然后提交暂存区域中的内容.

当您调用时git status,它会显示已添加到暂存区域的内容(即"要提交的更改"),git正在跟踪的文件(即已更改但未更新)中已修改的内容,以及您的任何新文件从来没有添加过(即Untracked文件).

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

  • 另外,请注意'git stage'可以代替'git add',如果它有助于让事情保持平稳. (4认同)

Eth*_*her 12

你没有添加文件,因为你将它们置于git控件之下,但是你将它们添加到更改列表中.其他一些SCM(如perforce)也可以这样做.它可以很方便地构建您尚未准备好提交的不同更改集,但您希望在单独的块中提交.

你可以通过简单的方式以更加颠覆性的方式git commit -a提交 - 这将提交git知道的所有已经改变的东西,就像那样svn commit做.

(PS.因为你是从svn世界来的,所以我会提到另一个让我陷入一个循环的问题 - 当你git diff,它只会向你展示你当前状态与变更清单中的内容之间的差异,不是你当前状态和最后一次提交之间的区别.如果你git diff在添加所有更改的文件后立即运行(例如git add -u),你会看到一个空的差异,即使有差异要提交!)