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

时间:2010-11-28 20:40:39

标签: git

我有什么办法吗

git add -A
git commit -m "commit message"

在一个命令中?

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

git commit具有-a修饰符,但它与提交前执行git add -A的操作完全不同。 git add -A添加了新创建的文件,但git commit -am没有。是什么?

27 个答案:

答案 0 :(得分:349)

您可以使用git别名,例如

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

并将其与

一起使用
git add-commit -m 'My commit message'

编辑:恢复为ticks('),否则在Linux上进行shell扩展会失败。 在Windows上,应该使用双引号(“)(在评论中指出,但未验证)。

答案 1 :(得分:216)

git commit -a -m "message"

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

git add .
git commit -m "message"

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

git add app
git commit -m "message"

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

答案 2 :(得分:47)

要将其保存在一行中使用:

git add . && git commit -am "comment"

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

答案 3 :(得分:18)

只需合并命令:

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

答案 4 :(得分:17)

仅针对 linux bash 调整Ales's答案和courtsimas's评论:

要将其保存在一行中使用:

git commit -am "comment"

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

确保git尚未提取新文件。否则你需要使用:

git add . ; git commit -am "message"

答案 5 :(得分:13)

最简单的方法是:

git commit -am "Your commit message"

我不明白我们为什么要这么做。

答案 6 :(得分:13)

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

git commit -a -m "commit message"

另外你有一个别名:

[alias]
    ac = commit -a -m

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

git ac "commit message"

答案 7 :(得分:11)

非常确定你可以使用:

git commit -am "commit all the things"

答案 8 :(得分:8)

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

  • 创建/找到您的.bashrc - refer SO thread
  • 将以下行添加到文件

    alias gacp='echo "enter commit message : " && read MSG && git add . && git commit -m "$MSG" && git push'
    

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

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

  • 现在您可以使用gacp命令完成整个过程。

答案 9 :(得分:5)

只需使用:

git commit -m "message" .     

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

答案 10 :(得分:4)

我在.bash_profile.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"
}

答案 11 :(得分:4)

如果输入:

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

一次,您只需输入

即可
git a

每次:

git a 'your comment'

答案 12 :(得分:4)

我做了一个shell

#!/bin/sh

clear

git add -A 
git commit -a -m "'$*'"

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

sh git.sh your commit message

答案 13 :(得分:2)

您可以使用-a

git commit -h

...
Commit contents options
    -a, -all    commit all changed files
...

git commit -a # It will add all files and also will open your default text editor.

答案 14 :(得分:1)

我使用 add all和commit 的以下别名:

git config --global alias.ac '!git add -A && git commit -a'

然后,输入:

git ac

我得到一个vim窗口,可以为我的提交消息获取更多编辑工具。

答案 15 :(得分:1)

我使用以下内容(两者都在进行中,因此我会尝试记住更新此内容):

# Add All and Commit
  aac = !echo "Enter commit message:" && read MSG && echo "" && echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"$MSG\" && echo "" && echo "New status:" && echo "===========" && git status

# Add All and Commit with bumpted Version number
  aacv = !echo "Status before chagnes:" && echo "======================" && git status && echo "" && echo "Adding all..." && echo "=============" && git add . && echo "" && echo "Committing..." && echo "=============" && git commit -m \"Bumped to version $(head -n 1 VERSION)\" && echo "" && echo "New status:" && echo "===========" && git status

echo "Enter commit message:" && read MSG部分受到Sojan V Jose的启发

我很乐意在那里收到if else声明,所以我可以告诉我是否要在部署完成后进行部署,如果我输入&#,请为我执行此操作39; y',但我想我应该把它放在我的.zshrc文件中

答案 16 :(得分:1)

  1. 在bash中创建别名: alias gac="git add -A && git commit -m"

    (我选择将快捷方式称为“ gac”,但您不必这样做)

  2. 使用它:gac 'your commit message here'

答案 17 :(得分:1)

对于习惯于Subversion之类的人群中的白银背...在旧词的意义上进行“提交”(即-或用git语言-添加,提交和推送) ),通常我会在我的项目的根目录中添加以下内容(作为Windows中的bat文件,例如git-commit.bat)。然后,当我要添加,提交和推送时,只需键入类似git-commit "Added some new stuff"的内容,然后所有内容都将发送到远程仓库。

此外,这样,项目中的任何人都可以使用相同的内容,而不必在本地进行任何更改。

我通常也运行一次git config credential.helper store,所以运行时不需要输入uid / pwd。

::
:: add, commit, and push to git
::

@echo off
echo.
echo.
echo 
echo Doing commit...
git add -A && git commit -m %1
echo.
echo.
echo Doing push...
git push
echo.
echo.
echo Done.
echo.

答案 18 :(得分:1)

这始终对我有用,请运行以下命令:

1.git add .
2.git commit -m "no bugs please"
3.git push origin *

其中*是基于您要推送到的分支的,而且提交消息始终可以根据上下文进行更改。

答案 19 :(得分:0)

你可以用 git commit -am" [comment]" //最佳解决方案 要么 git add。 &安培;&安培; git commit -m" [评论]"

答案 20 :(得分:0)

首先检查您拥有什么别名...

git config --get-regexp alias

如果不存在,则可以创建自己的(参考:https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases

// git add

git config --global alias.a '!git add -A'

// git commit

git config --global alias.c '!git commit'

// git commit -m

git config --global alias.cm '!git commit -m'

// git add commit

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

// git add commit -m

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

例如,如果您使用的是最后一个...

git acm 'My commit'

答案 21 :(得分:0)

万一有人想为一个文件“添加并提交”,我就是这样,我创建了下面的脚本来做到这一点:

#!/bin/bash

function usage {
    echo "Usage: $(basename $0) <filename> <commit_message>"    
}

function die {
    declare MSG="$@"
    echo -e "$0: Error: $MSG">&2
    exit 1
}

(( "$#" == 2 )) || die "Wrong arguments.\n\n$(usage)"

FILE=$1
COMMIT_MESSAGE=$2

[ -f $FILE ] || die "File $FILE does not exist"

echo -n adding $FILE to git...
git add $FILE || die "git add $FILE has failed."
echo done

echo "commiting $file to git..."
git commit -m "$COMMIT_MESSAGE" || die "git commit has failed."

exit 0

我将其命名为“ gitfile.sh”,并将其添加到我的$ PATH中。然后,我可以在一个命令中为单个文件运行git add和commit:

gitfile.sh /path/to/file "MY COMMIT MESSAGE"

答案 22 :(得分:0)

我希望这对某人有帮助,请随时进行编辑或改进。我不确定最快的方式是什么,但是通过为Git使用“ ohmyzsh” ,无疑可以简化我的代码提交过程。

https://ohmyz.sh/

  • git add .缩短为ga .
  • git commit -m "message"缩短为gc -m "message"
  • git push缩短为gp

enter image description here

答案 23 :(得分:0)

有人说 git commit -am 可以解决问题。这将不起作用,因为它只能提交对跟踪文件的更改,但不会添加新文件。 Source

经过一些研究,我认为没有这样的命令可以执行此操作,但您可以根据您的操作系统在 .bashrc.bash_profile 上编写脚本。

我将分享我使用的:

function gac {
  if [[ $# -eq 0 ]]
    then git add . && git commit
  else
    git add . && git commit -m "$*"
  fi
}

这样,您的所有更改都将被添加和提交,您只需输入 gac,系统就会提示您编写提交消息

或者你可以直接输入你的提交信息gac Hello world,你的所有更改都会被添加并且你的提交信息将是Hello world,注意""没有被使用< /p>

答案 24 :(得分:-1)

  1. 输入git add . && git commit -am并输入
  2. 输入history并输入
  3. 记住上述命令的编号,比如数字为543
  4. 从现在开始,对于每个提交类型!543 "your comment here",即  感叹号+数字和空格以及你的评论。

答案 25 :(得分:-1)

This Result -尝试以下操作:一个简单的脚本命令,用于git add,git commit和git push

在Windows上打开您的CMD并粘贴答案

git commit -m "your message" . && git push origin master

  

这个例子我的图片截图:   https://i.stack.imgur.com/2IZDe.jpg

答案 26 :(得分:-3)

要将其保存在一行中使用:

gacm "your comment"