代码之家  ›  专栏  ›  技术社区  ›  Nick Stamas

使用git-add的更好方法?

git
  •  8
  • Nick Stamas  · 技术社区  · 15 年前

    作为一个GitNoob在一个Rails项目上尝试它,我想知道这样做是否是一种坏做法 git add . (添加当前目录)在每次提交之前。我看到的介绍教程显示了最初添加当前目录,然后使用 git add new_file 在此之后添加文件。如果我要添加一堆来自不同目录的文件,这看起来太难了。

    基本上,如果要添加多个文件,是否可以使用 加特。 每次我想承诺?正在使用 加特。 与显式操作相同 git添加新的_文件 对于自上次提交以来创建的每个文件?

    6 回复  |  直到 11 年前
        1
  •  11
  •   James Cassell    15 年前

    git add . 将添加继承关系中的所有内容,包括新文件。如果要跟踪目录中的所有文件,可以这样做。

    另一种(也许更常见)用法是 git commit -a 只添加自提交前最后一次提交后更改的文件,不包括任何新文件。

    编辑: 加特。 不会删除自上次提交以来删除的任何文件。如果你要删除文件,我会用 git rm <myfile> 这样就可以通知Git删除的文件,并且您不会忘记确保Git知道该文件已被删除。如另一条评论所述, Git提交-A 请注意已删除的文件。

        2
  •  8
  •   CB Bailey    15 年前

    使用没有问题” git add . 如果你 .gitignore 是最新的,您确信它不会添加任何您不想跟踪的内容。做一个“ git status “首先检查这个。

    不过,我不建议在每次提交之前都这样做,因为大多数时候(至少在大多数用例中),您将修改现有文件,只添加一个或两个完全新的文件。在这些情况下, git add -u “和” git add <file> “通常不如与一起工作” 加特。 “或” git add -A “您总是需要检查是否无意中添加了实际上是临时文件的新文件,这些文件应该被忽略或删除。

    加特。 “当您知道从当前目录开始在层次结构中添加了许多新文件,并且不希望全部显式指定时,这将非常有用。您需要确保所有不想添加的内容都被正确忽略。

        3
  •  4
  •   yawn    15 年前

    也许吧 Git提交-A 你想要什么?它将阶段化并提交所有在版本控制下修改和/或删除的文件。

        4
  •  4
  •   knittl    15 年前

    你可以使用 git commit -a 将所有更改提交到已在sourcecontrol下的文件(这类似于subversion_s commit命令)

        5
  •  2
  •   ewall    11 年前

    此外,您可能会欣赏 交互模式 (' Git AD-I '),这可以加快速度,如果你需要有选择地添加一堆文件。你可以看到它在 this GitCast .

        6
  •  0
  •   mabraham Frahm    12 年前

    如果您的进度是“单线程”或单分支的,那么就没有内在的问题,尽管其他各种选项都有其他人建议的优点。但是,如果您在这个分支中有多个“特性”,您可能希望有选择地将它们合并到某个相关的分支中,那么这种“每次提交所有内容”方法将使您在那个时候获得更多的工作。可能还有其他这样的优势(例如使用 git bisect )如果对正在发生的工作有多个逻辑线索,那么在提交时将它们分离可以在以后获得可观的回报。