7

git commit プロセスを簡素化する単純なシェル スクリプトを作成しようとしています。

それ以外の

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

私はやってみたいですcommit.sh "my commit message"

ここに私が持っているものがあります:

#!/bin/bash
commit_message="$1"
git add . -A
git commit -m $commit_message
git push

これには 2 つの問題があります。

  1. コミット メッセージに「my commit message」のようにスペースが含まれている場合、次の出力が得られます。

    error: pathspec 'commit' did not match any file(s) known to git.

    error: pathspec 'message' did not match any file(s) known to git.

    したがって、使用するコミット メッセージの唯一の部分は「my」であり、他の部分の「コミット メッセージ」は省略されます。

  2. git add .現在のプロジェクト ディレクトリではなく、シェル スクリプトの場所を参照していると思います。git add .ターミナルで現在いる場所を参照するようにするにはどうすればよいですか?

4

6 に答える 6

20

スクリプト内で変数を引用符で囲む必要があります。

#!/bin/bash -e
commit_message="$1"
git add . -A
git commit -m "$commit_message"
git push

また、「-e」を設定して、エラーが発生した場合、スクリプトは後続のコマンドを処理せずに終了します。

2 番目の質問については、意図したとおり.、スクリプト内の は現在の作業ディレクトリを参照する必要があります。ただし、-Aこれにより、リポジトリで変更されたすべてのファイルが追加されます。

于 2013-07-29T17:52:39.687 に答える
12

引数でエイリアスを作成できます。何かのようなもの:

[alias]
  cap = "!git add . && git commit -m '$1' && git push origin"
于 2013-07-29T18:11:04.073 に答える
5

with と Alias 文の途中に変数を入れることはできませんでしたが、関数を作成して .bashrc に次のように配置できます

commit(){
  git add --all . && git commit -m '$1' && git push origin master
}
于 2014-02-19T01:26:45.420 に答える