【问题标题】:Is it possible to skip the staging area and (also) commit untracked, new files to git?是否可以跳过暂存区域并(也)将未跟踪的新文件提交到 git?
【发布时间】:2013-04-10 17:49:05
【问题描述】:

是否可以在单个内置命令行命令中跳过暂存区域和(也)提交未跟踪的新文件到 git?如果没有,有什么替代方案?

http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository

为 git commit 命令提供 -a 选项使 Git 在执行之前自动暂存已跟踪的每个文件 提交,让你跳过 git add 部分:

$ git commit -a -m 'added new benchmarks'

谢谢。

【问题讨论】:

  • 你也可以在命令行中commit后面指定文件名。
  • @Richard 这不会提交未跟踪的文件。您将收到错误消息did not match any file(s) known to git

标签: git git-add git-untracked


【解决方案1】:

使用单个内置命令行命令?没有。

使用两个命令:

git add -A
git commit

使用自定义别名:

将此添加到 .gitconfig:

[alias]
   commituntracked = "!git add -A; git commit"

那你就可以了

git commituntracked

【讨论】:

  • 请问如何扩展该自定义别名以包含(“变量”)提交消息?谢谢!
  • 取决于您运行的操作系统。这个问题有一些很好的例子stackoverflow.com/questions/3321492/…
  • Linux。抱歉,但我(至少乍一看)似乎无法将该链接上的示例串在一起并在此处应用它们,以便包含 git commit 消息。我可以添加-mgit commituntracked -m "some message" 吗?
  • 是的,在别名之后添加参数,如您的示例 git commituntracked -m "some message",将与我建议的别名一起使用。
  • 我更喜欢使用&& 而不是;,这样如果(不知何故)add 失败,您将不会继续执行commit
【解决方案2】:

这对大师来说可能看起来很微不足道,但对我来说是一个小启示(我承认) - 至少我现在第一次使用它并且它有效(没有自定义别名) : 只需使用分号 ; 即可作为单行符:

git add --all; git commit -m "some informative commit message"

【讨论】:

    【解决方案3】:

    是的。至少有两种主要的方法可以做到这一点。首先,您不必使用“the”暂存区,您可以拥有任意数量的暂存区——设置GIT_INDEX_FILE=/path/to/private/index,随心所欲;其次,您可以直接自己构建提交。一点都不难。

    Git 的存储库核心处理 blob、树和提交对象(这里也不太相关,注释和注释标签)。转储对象的 git 命令是git cat-file -p

    一个blob只是一个bag-o-bits。使用git hash-object -wfilename 向存储库添加一个,它将打印该文件中 blob 的 ~true name~ 并将 blob 添加到存储库。树将对象与文件系统名称联系起来。使用git mktree 向存储库添加一个;要查看要喂它什么,请打印一棵树,例如git cat-file -p HEAD^{tree}。使用git commit-tree 向存储库添加提交,基本上,你说git commit-tree -pmom-pdad sometree,设置一些环境变量,然后提供它标准输入上的提交消息。

    这就是真正需要的;如果您想进一步了解对树木进行切片和切块,并且暂存 read-treewrite-tree 可能非常有用,如果这对您很有吸引力,git core tutorial 是一个很好的概述。

    【讨论】:

      【解决方案4】:

      使用下面的命令跳过暂存区并直接从工作目录提交。

      git commit -a
      

      请注意,您仍然需要添加新的未跟踪文件。

      【讨论】:

        猜你喜欢
        • 2011-02-27
        • 1970-01-01
        • 2017-12-30
        • 2019-05-06
        • 2016-02-04
        • 2019-06-16
        • 2016-12-19
        • 2018-09-08
        • 2021-10-10
        相关资源
        最近更新 更多