我能做点什么吗

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不添加。什么?


当前回答

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

#!/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"

其他回答

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

下面的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的作品。

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

#!/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"

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

# 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

呼应“Enter commit message:”&&读取MSG部分,灵感来自Sojan V Jose

我想在那里得到一个if else语句,这样我就可以让aacv问我,如果我想部署时,如果我键入'y',为我这样做,但我想我应该把它放在我的.zshrc文件

只使用:

git commit -m "message" .     

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

要保持在一行中使用:

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

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