Git在一个命令中添加和提交

Che*_*tan 345 git

我有什么方法可以做

git add -A
git commit -m "commit message"
Run Code Online (Sandbox Code Playgroud)

在一个命令?

我似乎经常做这两个命令,如果Git有一个选项git commit -Am "commit message",它会让生活变得更方便.

git commit-a修饰符,但它与git add -A提交之前的做法并不完全相同.git add -A添加新创建的文件,但git commit -am不添加.什么

Mar*_* C. 383

你可以使用git别名,例如

git config --global alias.add-commit '!git add -A && git commit'
Run Code Online (Sandbox Code Playgroud)

并使用它

git add-commit -m 'My commit message'
Run Code Online (Sandbox Code Playgroud)

编辑:恢复为ticks('),否则它将无法在Linux上进行shell扩展.在Windows上,应该使用双引号(")代替(在注释中指出,没有验证).

  • 使用`git config --global --unset alias.<your_alias>`取消设置别名. (19认同)
  • 我懒得每次都输入'add-commit'和'-m'.因此,我键入:`git config --global alias.ac'!git add -A && git commit -m'`一次,每次我输入:`git ac'comment'`:) (13认同)
  • @MrFusion它使命令成为外部shell命令,而不是内部git命令中的快捷方式,即使整行作为一个单独的进程执行. (11认同)
  • 感叹号是什么?(在`git add -A`之前) (6认同)
  • 我更喜欢`git config --global alias.add-commit'!git add -A && git commit -m'`所以我不必每次都输入`-m`. (5认同)
  • `git config --global alias.add-commit"!git add -A && git commit"`(即双引号而不是单引号)适用于Windows. (3认同)
  • 在这种情况下“!”会做什么? (2认同)
  • @GabrielStaples 是的,“!”是一个将其作为外部程序运行的触发器。另请参阅 https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases (2认同)

Jed*_*der 239

git commit -am "message"
Run Code Online (Sandbox Code Playgroud)

是一种告诉git删除已删除文件的简单方法,但我通常不建议这样的全部工作流程.git提交在最佳实践中应该是相当原子的,只会影响一些文件.

git add .
git commit -m "message"
Run Code Online (Sandbox Code Playgroud)

是一种添加新文件或修改过的所有文件的简便方法.此外,上述全能资格适用.不会删除没有git rm命令删除的文件.

git add app
git commit -m "message"
Run Code Online (Sandbox Code Playgroud)

是一种从单个目录将所有文件添加到索引的简单方法,在本例中为app dir.

  • 或者只是`git commit -am"message"` - 只是确保没有git尚未提取的新文件.否则你需要使用`git add.&&`在那之前......在一行中做到这一点. (37认同)
  • 对不起,但最初的问题正是关于这个 - 避免`git add .`以防添加文件 (4认同)

小智 48

要将它保持在一行中使用:

git add . && git commit -am "comment"
Run Code Online (Sandbox Code Playgroud)

此行将添加并将所有已更改和添加的文件提交到存储库.

  • 应该注意的是,这是特定于Linux shell(bash和可能的其他). (11认同)
  • `git commit -am"comment"`是完美的 (5认同)
  • 如果你使用:`git add .` 那么你不需要使用选项 **-a**,只需要:`git commit -m "comment"` (5认同)

Anu*_*mar 35

最简单的方法是:

git commit -am "Your commit message"
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我们要搞得这么棘手。

  • 这不会添加新文件。“a”代表“all”,而不是“add”。 (3认同)

Yar*_*rin 18

只需组合您的命令:

git add -A && git commit -m "comment" 
Run Code Online (Sandbox Code Playgroud)


dan*_*ilo 18

只调整Ales的答案和courtimaslinux bash 评论:

要将它保持在一行中使用:

git commit -am "comment"

此行将添加并提交所有已更改为存储库.

只要确保没有git尚未提取的新文件.否则你需要使用:

git add . ; git commit -am "message"

  • `git commit -am "comment"` 是添加和提交所有更改文件的快捷方式。如果您只想添加并提交 1 个文件,则需要执行: `git add file.txt ; git commit -m“评论”` (2认同)

小智 12

在更高版本的git中,您可以像这样添加和提交

git commit -a -m "commit message"
Run Code Online (Sandbox Code Playgroud)

另外你有一个别名:

[alias]
    ac = commit -a -m
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

git ac "commit message"
Run Code Online (Sandbox Code Playgroud)

  • 此命令不会提交新文件,只提交更新的文件. (5认同)

Bla*_*son 11

非常确定你可以使用:

git commit -am "commit all the things"
Run Code Online (Sandbox Code Playgroud)

  • 但是,这不会提交新添加的文件,仅提交“已更新”的文件! (5认同)
  • 正确,它不会开始跟踪未跟踪的文件 (3认同)

Soj*_*ose 10

在我的Windows机器上,我设置了这个.bashrc别名,使整个过程更简单.

  • 创建/定位你的.bashrc- 参考SO线程
  • 将以下行添加到文件中

    alias gacp='echo "enter commit message : " && read MSG && git add . && git commit -m "$MSG" && git push'
    
    Run Code Online (Sandbox Code Playgroud)

    它确实添加了提交和推送.以任何方式调整它,假设您不希望push命令删除该部分

  • 重新加载.bashrc/关闭并重新打开shell

  • 现在你可以用gacp命令完成整个过程.


dha*_*ahn 8

我希望这对某人有所帮助,请随时编辑或改进。我不确定最快的方法是什么,但这肯定会通过对 Git使用“ohmyzsh”来简化我的代码提交过程。

https://ohmyz.sh/

  • git add . 缩短为 ga .
  • git commit -m "message" 缩短为 gc -m "message"
  • git push 缩短为 gp
  • git fetch 缩短为 gf
  • git pull origin master 缩短为 ggl master
  • git push origin master 缩短为 ggp master
  • git checkout -b 缩短为 gcb
  • git merge 缩短为 gm
  • git remote 缩短为 gr
  • git status 缩短为 gst

在此处输入图片说明


Nav*_*aei 6

如果输入:

git config --global alias.a '!git add -A && git commit -m'
Run Code Online (Sandbox Code Playgroud)

一次,您只需要输入

git a
Run Code Online (Sandbox Code Playgroud)

每次:

git a 'your comment'
Run Code Online (Sandbox Code Playgroud)

  • 这应该是最好的答案,非常容易,并且包括UNTRACKED文件,这与大多数其他建议不同。 (4认同)

Jos*_*son 6

只需使用:

git commit -m "message" .     
Run Code Online (Sandbox Code Playgroud)

注意"." 最后......也可以是文件/目录的路径


ade*_*190 5

我做一个贝壳

#!/bin/sh

clear

git add -A 
git commit -a -m "'$*'"
Run Code Online (Sandbox Code Playgroud)

保存例如git.sh并稍后调用:

sh git.sh your commit message
Run Code Online (Sandbox Code Playgroud)

  • @ naught101很明显git可以自己完成,关键是这个shell可以简化人们在Linux上使用git的过程,更简单地运行sh git.sh您的提交消息,而不是可移植的并不意味着它将正常工作。 (2认同)

Len*_*oyt 5

我的.bash_profileor .profile或/ .zprofile或从登录shell中获取的任何内容中都有此函数:

function gac () {
  # Usage: gac [files] [message]
  # gac (git add commit) stages files specified by the first argument
  # and commits the changes with a message specified by the second argument.
  # Using quotes one can add multiple files at once: gac "file1 file2" "Message".
  git add $1 && git commit -m "$2"
}
Run Code Online (Sandbox Code Playgroud)