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没有。什么?

497697 次浏览
git commit -am "message"

是告诉git删除已删除文件的一种简单方法,但我通常不推荐这种一刀切的工作流程。在最佳实践中,Git提交应该是相当原子的,并且只影响少数文件。

git add .
git commit -m "message"

是添加所有新建或修改过的文件的简单方法。此外,适用于所有限定条件。上面的命令不会删除没有使用git rm命令删除的文件。

git add app
git commit -m "message"

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

您可以使用git别名,例如:

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

用在

git add-commit -m 'My commit message'

编辑:恢复为ticks('),否则在Linux上shell扩展将失败。在Windows上,应该用双引号(“)代替(在评论中指出,没有验证)。

要保持在一行中使用:

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

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

我做一个壳层

#!/bin/sh


clear


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

例如保存为git.sh,然后调用:

sh git.sh your commit message

把你的命令组合起来:

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

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

  • 创建/定位.bashrc - 参考SO螺纹
  • 将以下行添加到文件中

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

    # EYZ0 < / p >

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

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

我使用这个git别名:

# EYZ0

所以,不是打电话

# EYZ0

我只会:

# EYZ0

我使用以下方法(这两种方法都在进行中,所以我会尽量记得更新):

# 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语句在那里,所以我可以得到aacv问我,如果我想部署时,如果我键入'y',为我这样做,但我想我应该把它放在我的.zshrc文件

如果你输入:

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

一次,你只需要打字

git a

每一次:

git a 'your comment'

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

git commit -a -m "commit message"

另外你还有一个别名:

[alias]
ac = commit -a -m

然后你可以这样使用它:

git ac "commit message"

我使用以下别名为添加全部并提交:

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

然后,输入:

git ac

我得到了一个vim窗口来为我的提交消息获得更多的编辑工具。

你可以使用

git commit -am "[comment]" # best solution

git add . && git commit -m "[comment]"

很确定你可以用:

git commit -am "commit all the things"

我有这个函数在我的.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"
}

只适应爱丽斯的的答案和courtsimas的的评论linux bash:

要保持在一行中使用:

# EYZ0

这一行将添加并提交所有改变了到存储库。

只是要确保git还没有拾取新文件。否则你需要使用:

# EYZ0

只使用:

git commit -m "message" .

注意结尾的"."…也可以是文件/目录的路径

首先检查你有哪些别名……

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提交

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

// git提交-m

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

// git添加提交

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'

您可以使用-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.

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

#!/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并提交单个文件:

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

我希望这能帮助到一些人,请随意编辑或改进。我不确定最快的方式是什么,但这肯定简化了我的代码提交过程使用“ohmyzsh"对于Git

< a href = " https://ohmyz.sh/ " rel = " noreferrer > 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

enter image description here

    在bash中创建别名: # EYZ0 < / p >

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

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

对于人群中的银背,他们习惯了Subversion……我通常在我的项目的根目录中添加如下内容(在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.

最简单的方法是:

git commit -am "Your commit message"

我不明白我们为什么要搞得这么复杂。

有些人说git commit -am可以达到目的。这将不起作用,因为它只能提交对跟踪文件的更改,但它不能添加新文件。# EYZ1。

经过一些研究,我发现没有这样的命令可以做到这一点,但您可以根据您的操作系统在.bashrc.bash_profile上编写脚本。

我将分享我使用的一个:

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

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

或者你可以直接输入你的提交消息gac Hello world,你所有的更改将被添加,你的提交消息将是你好世界,注意""没有被使用

这回答了标题中的问题。不是描述里的问题,但我想在座的各位可能会觉得这个问题很有用。

下面的bash脚本在一个命令中添加并提交文件。如果命令行上没有指定文件,可以很容易地修改为添加所有文件。然而,这对我来说似乎有点危险,所以我没有这么做。

#!/bin/bash


if [[ $# -lt 2 ]]
then
echo "Usage:  $(basename $0) FILENAME+ \"COMMIT_MESSAGE\""
echo
echo 'Shorthand for "git add FILENAME_0 FILENAME_1 .. FILENAME_n && git commit -m "COMMIT MESSAGE".'
echo 'You must specify at least one filename, and supply one single commit message.'
echo
else
git add ${*: 1: $#-1} && git commit -m "${*: -1}"
fi

将它保存在一个名为gac的文件中,然后像这样使用它

gac file_a file_b file_c "adding three files because.. reasons"

在这个帖子中引用@LuisEnMarroquin的作品。