如何使用单个命令暂存和提交所有文件,包括新添加的文件?

时间:2010-03-10 17:53:04

标签: git

如何使用单个命令暂存和提交所有文件,包括新添加的文件?

14 个答案:

答案 0 :(得分:490)

git add -A && git commit -m "Your Message"

算作“单一命令”?

根据@thefinnomenon的答案编辑

要将其作为git alias,请使用:

git config --global alias.coa '!git add -A && git commit -m'

并使用以下消息提交包括新文件在内的所有文件:

git coa "A bunch of horrible changes"

解释(来自git add documentation):

  

-A, - all, - no-ignore-removal

     

不仅更新索引工作树具有文件匹配的索引,还更新索引已有索引的位置   条目。 添加,修改和删除索引条目以匹配   工作树。

     

如果在使用-A选项时没有给出<pathspec>,则表示所有文件   整个工作树都更新了(旧版本的Git用来限制   更新到当前目录及其子目录。)

答案 1 :(得分:404)

此命令将添加并提交所有已修改的文件,但不是新创建的文件

git commit -am  "<commit message>"

来自man git-commit:

   -a, --all
       Tell the command to automatically stage files that have been modified
       and deleted, but new files you have not told Git about are not
       affected.

答案 2 :(得分:22)

我使用这个功能:

gcaa() { git add --all && git commit -m "$*" }

在我的zsh配置文件中,我可以这样做:

> gcaa This is the commit message

自动暂存和提交所有文件。

答案 3 :(得分:22)

单行播放所有文件(已修改已删除)并提交评论:

git add --all && git commit -m "comment"

http://git-scm.com/docs/git-add
http://git-scm.com/docs/git-commit

答案 4 :(得分:13)

不确定为什么这些答案都围绕着我认为合适的解决方案而跳舞,但是我在这里使用的是什么:

创建别名:

git config --global alias.coa '!git add -A && git commit -m'

添加所有文件&amp;提交消息:

git coa "A bunch of horrible changes"

注意:coa是提交所有内容的缩写,可以替换为您心中所需的任何内容

答案 5 :(得分:9)

git中的提交可以是多步骤过程,也可以是一步,具体取决于具体情况。

  1. 这种情况是你有多个文件更新和想要的地方 提交:

    您必须在提交任何内容之前添加所有已修改的文件。

    git add -A
    

    git add --all
    
  2. 之后您可以使用提交所有添加的文件

    git commit
    

    使用此功能,您必须为此提交添加消息。

答案 6 :(得分:4)

如果您只想要一种“快速而肮脏”的方式来隐藏当前分支上的更改,您可以使用以下别名:

git config --global alias.temp '!git add -A && git commit -m "Temp"'  

运行该命令后,您只需键入git temp即可让git自动将所有更改提交到当前分支,作为名为“Temp”的提交。然后,您可以稍后使用git reset HEAD~“取消提交”更改,以便继续处理这些更改,或git commit --amend向提交添加更多更改和/或为其指定正确的名称。

答案 7 :(得分:3)

我在配置中有两个别名:

alias.foo=commit -a -m 'none'
alias.coa=commit -a -m

如果我太懒,我只用

提交所有更改
git foo

只是为了快速提交

git coa "my changes are..."

coa代表“全部提交”

答案 8 :(得分:3)

很棒的答案,但是如果你寻找一条单线,你可以连接,别名并享受便利:

git add * && git commit -am "<commit message>"

这是一行但有两个命令,如上所述,您可以为这些命令添加别名:

alias git-aac="git add * && git commit -am "(最后的空格很重要),因为你要参数化新的短手命令。

从此刻开始,您将使用此别名:

git-acc "<commit message>"

你基本上说:

git,为我添加所有未跟踪的文件,并使用此给定的提交消息提交它们。

希望你使用Linux,希望这有帮助。

答案 9 :(得分:0)

尝试使用:

git add . && git commit -m "your message here"

答案 10 :(得分:0)

运行给定命令

git add . && git commit -m "Changes Committed"

但是,即使看起来是单个命令,也要一个接一个地运行两个单独的命令。在这里,我们仅使用&&来组合它们。和跑步没什么不同 git add .git commit -m "Changes Committed"。您可以一起运行多个命令,但是顺序很重要。如果您希望将更改与登台和提交一起推送到远程服务器,如何按照给定的方式进行操作,

git add . && git commit -m "Changes Committed" && git push origin master

相反,如果您更改顺序并将push放在首位,它将首先执行,并且在暂存和提交后不会给出期望的推送,只是因为它已经先运行了。

&&在第一个命令成功返回或错误级别为0时在行上运行第二个命令。&&的反面是||,它将运行第二个命令当第一个命令不成功或错误级别为1时使用该命令。

答案 11 :(得分:0)

我认为这是暂存和提交所有更改的最优雅的方式:

git commit . -m "message"

答案 12 :(得分:0)

这是一个 shell script,它做了一些接近的事情。目前它不提交新添加的文件(添加此功能应该很容易),但它确实提交了其他所有文件。此外,它会递归访问 Git 子模块。预期的使用场景很简单

$ git powercommit

答案 13 :(得分:-1)

您可以编写一个名为git-commitall的小脚本(查看Ian Clelland的答案),该脚本使用几个git命令来执行您想要执行的操作。
将此脚本放在$PATH的任意位置。你可以通过git commitall来称呼它......非常方便!

找到here(不幸的是,问题和所有答案都被删除,只有声誉很高)