2017-09-14 106 views
0

我注意到,git的允许提交一个跟踪文件(在本地修改)的情况下直接使用分段,例如:Git的承诺,而分期

$ git status -s . 
M myfile.txt 
$ git commit myfile.txt -m"1 way" 

是它更好地使用,取而代之的是,“经典”两脚步 ? :

$ git add myfile.txt 
$ git commit myfile.txt -m"2 way" 

回答

1

尝试你还没有告诉Git的约不受影响git commit -a -m [message]

-a

告诉命令自动阶段已修改和删除的文件,但新文件。

不适用于新文件,您仍然需要明确地添加它们。

这只是阶段,接着是在一个单一的步骤提交。我觉得这很方便,因为使用status时可以看到所有更改的状态,我们通常会进行小的增量提交。

4

是它更好地使用,取而代之的是,“经典”两个步骤?

git commit说明文档中提到不低于5种方式通知Git你想要什么,在未来,包括承诺:

添加可以通过多种方式来指定的内容:

  1. 通过使用git add在使用commit命令之前递增地“添加”对索引的更改(注意:即使修改后的文件也必须“添加”);
  2. 使用git rm从工作树和索引中删除文件,再次使用commit命令之前;
  3. 将文件列出为提交命令的参数(没有--interactive--patch开关),在这种情况下,提交将忽略在索引中执行的更改,而是记录列出文件的当前内容(必须已知GIT);
  4. 通过使用-a开关与commit命令自动“添加”从所有已知的文件(即在索引已经列出即所有文件)的变化,并在索引自动“RM”文件已经从被除去的工作树,然后执行实际提交;
  5. 通过使用--interactive--patch开关,使用commit命令可以在完成操作之前,逐个决定除索引中的内容之外哪些文件或块应该是提交的一部分。请参阅git-add的“交互模式”部分,了解如何操作这些模式。

有这么多的选择,不是因为他们中的一些是“好”,而另一些“更好”。 ,Git提供了这么多的选择,让你你喜欢的一个,或者最适合在特定情况下的一个。

例如,如果您发现修改后的文件应该是之前提交的一部分(但您忘记提交它),并且索引当前包含为下一次提交准备的文件,请使用第一个命令问题(上面列表中的选项#3)允许您仅提交该文件而不更改索引。通过这种方式,您错过的文件将跳过该行,并在之前的提交后立即落实到它所属的位置,而不会干扰您正在准备的下一个提交。

+0

请注意,'git commit '有两种口味:'git commit - 只有'和'git commit --include '。 Git真正做的是使用*临时*索引/分段区域; '--only'表示“从HEAD'设置临时文件,然后将列出的文件放入其中”,“--include”表示“从当前索引设置临时文件,然后将列出的文件放入其中”。 – torek