2010-07-01 153 views
36

我是git新手,来自SVN世界。到目前为止,它看起来更有用,但我仍在摸索中。每次我想提交时,我是否必须将文件添加到git?

目前,我的工作流程如下:

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

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

很抱歉,如果这是很容易的,我觉得我缺少一些首要一点

+2

好问题我发现这个也很混乱,很明显,你没有“添加”到项目中,你添加到提交! – Kokodoko 2016-03-09 12:01:42

回答

34

这样就可以通过编辑不同的提交。如果你只是想现在提交这些文件,下一个现在提交,然后将这些文件旁边,在第二承诺,你可以这样做:

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." 
+0

啊所以就是这样! – Hamy 2010-07-01 19:50:55

+3

它很糟糕她甚至比那。使用'git add -p',你可以在文件中进行一些修改,但不能修改其他文件。 – Novelocrat 2010-07-01 20:11:56

+0

哇。这真的很强大。很高兴知道这是可能的,它可能会在我需要它的几次时变得非常方便! – Hamy 2010-07-02 19:50:29

11

你不能在你的意识中添加文件把它们置于git控制之下,但是你将它们添加到更改列表中。一些其他SCM,如perforce也可以做到这一点。这对于构建您尚未准备好提交的不同组更改很方便,但您希望在单独的块中进行提交。

你可以通过简单的做git commit -a来承诺 - 它会提交git知道的一切,就像svn commit一样。 (PS。既然你是来自svn世界,我会提到另一个让我回想一下的问题 - 当你git diff时,它只会显示你当前状态和如果您在添加完所有更改的文件(例如git add -u)后立即运行git diff,即使有差异要提交,您也会看到一个空的差异! )

+0

啊,谢谢PS!这绝对是我一直在努力的事情! – Hamy 2010-07-01 19:50:34

15

Git通过使用“暂存”区域来工作,在此区域中,您准备将要捆绑在一起作为提交的内容。因此,您决定要提交哪些更改(例如全部或子集),将其添加到暂存区域,然后确定暂存区域中的内容。当您调用“git status”时,它会显示已添加到暂存区域的内容(即“要提交的更改”),git正在跟踪的文件中已修改的内容(即已更改但未更新的文件“ )以及之前从未添加过的任何新文件(例如未扫描的文件)

如果您只想提交已更改的内容,但不包含新创建的文件,则可以使用git commit -a - m“评论修改后的文件已经在源代码管理下了”

+0

真棒,谢谢! – Hamy 2010-07-01 19:51:15

+4

另外,请注意,'git stage'可以用来代替'git add',如果它有助于将事情保持在头脑中。 – 2010-07-02 06:59:07

+0

啊,很酷!谢谢 – Hamy 2010-07-02 20:00:47

相关问题