Git新手问题

时间:2015-03-09 17:31:00

标签: git

对某些git命令有点困惑

  1. " git commit"之间有什么区别?和" git commit -a"?我的想法是" git commit"我们已经提交了所有跟踪的文件,为什么我们需要" -a"选项?

  2. 单个短划线与双击的选项有何不同,例如" git commit -a" vs" git commit --all"?文档说它们是相同的,为什么不只是像#34; git commit -all"?

  3. 我看到了一些使用' git commit -am "a msg"'的例子。但无法找到关于这个" -am"的文档。选项。它看起来像一个组合的" -a"和" -m"选项。一般情况下,选项可以像那样组合,还是只是一个特例?

6 个答案:

答案 0 :(得分:2)

  1. 不同之处在于git只会将提交git add的文件提交给提交。在执行git commit -a时,它包含所有文件。使用git addgit commit,您可以提交所有已修改文件的一部分。

  2. 一个只是另一个git commit -a的简写,而git commit --all正在做同样的事情。

  3. git commit -am"msg"的使用正确地是git commit -agit commit -m"msg"的组合。这也是为了方便提交不同的选项,这样你就不必一遍又一遍地输入整个内容。

  4. 你可以在这里找到关于git以及如何使用它的更多信息: git documentation

答案 1 :(得分:1)

  1. git commit -a将暂存所有跟踪的文件,然后提交它们。 git commit只会提交已暂存的文件。 (暂存文件意味着使用git add)。请阅读Git Basics了解详情;

  2. 具有短名称的单破折号选项主要用于交互式shell,因为它们更容易键入。具有长名称的双破折号选项主要用于脚本,以便为想要了解脚本功能的人简化工作。 Unix命令行程序提供这两者是传统的。至于长名称选项不是-all的原因,请参阅第3点;

  3. 是的,为简洁起见,可以组合单破折号命令行标志。这就是为什么-all不起作用的原因 - 它与输入-a -l -l的意思相同。同样,这对于Unix命令行标志来说也是传统的。

答案 2 :(得分:1)

  1. -a用于在提交之前不必使用git add。但适用于已经跟踪过的文件。
  2. 双击更多是Linux的事情,长选项使用 - ,快捷键 - 。
  3. 选项可以像Linux程序中那样使用。

答案 3 :(得分:1)

  

" git commit"之间的区别是什么?和" git commit -a"?我的想法是" git commit"已提交所有跟踪文件,为什么我们需要" -a"选项?

$ git commit提交所有分阶段的更改。如果您只是进行了更改,然后运行$ git commit,则不会提交任何内容,因为您的舞台区域为空。

要将更改的文件添加到下一次提交,通常使用$ git add <path>。但是,如果您有多个文件,这可能很烦人。

-a(或--all)选项告诉命令自动暂存已修改和删除的文件,但是没有告诉Git的新文件不会受到影响。

  

单个短划线与双击的选项有何不同,例如&#34; git commit -a&#34; vs&#34; git commit --all&#34;?该文档说它们是相同的,所以为什么不只是像#34; git commit -all&#34;?

没有区别。选项通常采用--all的形式,但某些常见选项的相应简短版本以单个短划线开头,例如-a

  

我看到了一些使用&#39; git commit -am&#34;一个msg&#34;&#39;但无法找到关于这个&#34; -am&#34;选项。它看起来像一个组合的&#34; -a&#34;和&#34; -m&#34;选项。一般情况下,选项可以像那样组合,还是只是一个特例?

当他们不需要选项值时,您可以将短选项组合在一起。 $ git commit -am等于$ git commit -a -m

答案 4 :(得分:0)

阅读此http://git-scm.com/docs/git-commit

git commit keys -a -m equal -am

答案 5 :(得分:0)

git commit -a为您执行所有跟踪文件的添加步骤。不使用-a只会提交已提交的文件。您可以通过git status查看这些文件的内容。

至于您的其他问题,-a vs --all,大多数脚本都会使用此选项的简写或使用--拼写整个单词。

是的,-am是两个选项的组合。这在许多unix脚本中都很常见。