代码之家  ›  专栏  ›  技术社区  ›  Hamy

我是否需要每次提交时都向Git添加文件?

  •  51
  • Hamy  · 技术社区  · 14 年前

    我刚加入Git,来自SVN世界。到目前为止,它似乎更有用,但我仍在解决这些问题。

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

    进行更改>git add。>Git提交>输入日志消息

    我不明白的是为什么我必须在提交之前添加所有文件。他们已经在版本控制下了?为什么git commit告诉我没有添加到commit中的更改,但同时指出我已经修改了文件?上面写着“已更改但未更新:”。这是什么意思??

    对不起,如果这很简单,我觉得我遗漏了一些要点

    3 回复  |  直到 6 年前
        1
  •  44
  •   Justin L.    14 年前

    这允许您通过编辑分离提交。如果您现在只想提交这些文件,在一次提交下,然后在第二次提交下,现在提交这些下一个文件,您可以这样做:

    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."
    
        2
  •  19
  •   David Birks Zane Bien    6 年前

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

    当你调用 git status ,它将向您显示添加到临时区域的内容(即“要提交的更改”),Git正在跟踪文件中修改的内容(即已更改但未更新),以及以前从未添加过的任何新文件(即未跟踪的文件)。

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

        3
  •  12
  •   Ether    14 年前

    您没有在将文件置于Git控制之下的意义上添加文件,而是将它们添加到更改列表中。其他一些SCM(如Perfonce)也会这样做。对于构建尚未准备好提交但希望在单独块中提交的不同更改集来说,这很方便。

    你可以用一种更颠覆性的方式简单地做 git commit -a --它将承诺Git知道的所有已更改的内容,就像 svn commit 做。

    (附:既然你来自SVN世界,我会提到另一个让我有点晕头转向的问题——当你 git diff 它只显示当前状态和变更列表中的内容之间的差异,而不显示当前状态和上一次提交之间的差异。如果你跑 差异比较 添加所有更改的文件(例如 git add -u )您将看到一个空的diff,即使需要提交差异!)