1つのコマンドでGitの追加とコミット


392

私にできる方法はありますか

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

1つのコマンドで?

私はこれらの2つのコマンドを頻繁に実行しているようでgit commit -Am "commit message"、Gitにのようなオプションがあった場合、それは生活をはるかに便利にします。

git commit持っている-a修飾子を、それはかなりやっと同じことをしていませんgit add -Aコミットする前に。git add -A新しく作成されたファイルを追加しますが、追加git commit -amしません。なに?



1
時間の節約とすべての変更をコミットする方が良いので、私はgit commit -am"yes the code in committed"
Rizo

git add .すべてを追加するためのより速いオプションです
Ryan

回答:


419

たとえば、gitエイリアスを使用できます。

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

そしてそれを使って

git add-commit -m 'My commit message'

編集:ティック( ')に戻しました。それ以外の場合は、Linuxでのシェル拡張に失敗します。Windowsでは、代わりに二重引用符( ")を使用する必要があります(コメントで指摘されているが、検証されなかった)。


24
git config --global --unset alias.<your_alias>エイリアスの設定を解除するために使用します。
TMOTTM 2013

11
@MrFusionこれは、コマンドを内部gitコマンドのショートカットではなく外部シェルコマンドにします。つまり、行全体を個別のプロセスとして実行します。
マーティンC.

8
私が好むgit config --global alias.add-commit '!git add -A && git commit -m'、私は入力する必要はありませんので、-m毎回。
白熱

21
毎回「add-commit」と「-m」を入力するのが面倒です。その結果、私は次のように入力します。git config --global alias.ac '!git add -A && git commit -m' 毎回入力するたびに git ac 'comment' :)
Navid Vafaei

5
git config --global alias.add-commit "!git add -A && git commit"(つまり、単一引用符の代わりに二重引用符)は、Windowsで機能します。
Saheed 2017年

269
git commit -am "message"

は、削除したファイルをgitに削除するように指示する簡単な方法ですが、私は通常、このような包括的なワークフローをお勧めしません。Gitコミットは、ベストプラクティスではかなりアトミックであり、数個のファイルにのみ影響を与えます。

git add .
git commit -m "message"

新規または変更されたすべてのファイルを追加する簡単な方法です。また、キャッチオールの資格が適用されます。上記のコマンドは、git rmコマンドなしで削除されたファイルを削除しません。

git add app
git commit -m "message"

単一のディレクトリ(この場合はappディレクトリ)からすべてのファイルをインデックスに追加する簡単な方法です。


41
または単にgit commit -am "message"-gitがまだ取得していない新しいファイルがないことを確認してください。それ以外の場合はgit add . &&、その前で使用する必要があります.... 1行で実行するには、
コートシマ2012

2
申し訳ありませんが、元の質問は、まさにこの程度だった-回避git add .ケースファイルには、追加されました
ゴーン

50

それを1行に保つには、以下を使用します。

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

この行は、変更および追加されたすべてのファイルをリポジトリに追加およびコミットします。


12
これはLinuxシェル(bashおよび場合によってはその他)に固有のものであることに注意してください。
R.マルティーニョフェルナンデス2011

6
git commit -am "comment"完璧です
アビシェクベディ

2
あなたが使用している場合: git add . 次に、あなたは利用オプションを必要としない-a:、ちょうど必要性git commit -m "comment"
ドクチー

18

コマンドを組み合わせるだけです:

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

18

Alesの回答と法廷でのコメントをLinux bashにのみ適合させます。

それを1行に保つには、以下を使用します。

git commit -am "comment"

この行は、変更されたすべてをリポジトリに追加してコミットします。

gitがまだ取得していない新しいファイルがないことを確認してください。それ以外の場合は、使用する必要があります。

git add . ; git commit -am "message"


方法はありgit commit -am "comment"ますが、1つのファイルのみですか?file.txtとしましょう。
Santosh Kumar

git commit -am "comment"変更されたすべてのファイルを追加およびコミットするためのショートカットです。実行する必要があるよりも1つのファイルだけを追加してコミットする場合:git add file.txt ; git commit -m "comment"
danilo

2番目のケースでは、-aをmとともに追加する必要はありません。git addにする必要があります。; Git commit -m "message"
Manish Bansal

12

gitの新しいバージョンでは、次のように追加してコミットできます。

git commit -a -m "commit message"

さらに、エイリアス:

[alias]
    ac = commit -a -m

その後、次のように使用できます。

git ac "commit message"

6
このコマンドは新しいファイルをコミットせず、更新されたファイルのみをコミットします。
ruvim

11

私のWindowsマシンでは、この.bashrcエイリアスを設定して、プロセス全体をより簡単にしています。

  • 作成/あなたの探し.bashrc- SOスレッドを参照してください。
  • 次の行をファイルに追加します

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

    git add commitおよびpushします。何らかの方法で調整します。プッシュコマンドでその部分を削除したくない場合は、

  • .bashrcシェルをリロード/閉じて再度開く

  • これで、gacpコマンドでプロセス全体を実行できます。

ちなみに、そのスクリプトにはgit pushそれが含まれています。コピーして貼り付けないでください。
ヤール

11

あなたが使用できることをかなり確認してください:

git commit -am "commit all the things"

1
このコマンドは、必要な結果を得るには、最も短く、おそらく最も簡単な方法です。gitバージョン2.6.3.windows.1でテストします。
Ithar

5
ただし、新しく追加されたファイルはコミットされません。「更新された」ファイルのみがコミットされます。
user13107

1
正しくない追跡されていないファイルの追跡は開始されません
ブレアアンダーソン

@BlairAnderson-追跡されていないファイルを追加およびコミットするためのコマンドはありますか?
MasterJoe2

6

入力した場合:

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

一度、あなたはただタイプする必要があります

git a

毎回:

git a 'your comment'

4
これは、他のほとんどの提案とは異なり、非常に簡単で、追跡されていないファイルを含む、最高の答えになるはずです。
JesseBoyd 2017年

6

ただ使用する:

git commit -m "message" .     

「。」に注意してください 最後に...これはファイル/ディレクトリへのパスにもなります


これは、新しく作成されたファイルでも、変更された既存のファイルでも機能しますか?
MasterJoe2

5

私はシェルをします

#!/bin/sh

clear

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

たとえばgit.shを保存し、後で呼び出します。

sh git.sh your commit message

1
他のOSには移植できません、そしてgitはこれをそれ自体で行うことができるので、何がポイントですか?
naught101

2
@ naught101 gitが自分でこれを実行できることは明らかです。要点は、このシェルはLinuxでgitを使用するユーザーのプロセスを合理化し、sh git.shコミットメッセージを実行するのがはるかに簡単で、移植性がないことです正常に動作することを意味しません。
ademar111190

5

私は、この機能を私の、.bash_profileまたは.profile.zprofileまたは何でもログインシェルで調達されています:

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"
}

3

あなたは使うことができます -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.

2

これが誰かのお役に立てば幸いです。自由に編集または改善してください。私は確信したものではないよ最速の方法ですが、これは確かに私のコードを使用してプロセスをコミット簡素化Gitのための「ohmyzshを」

https://ohmyz.sh/

  • git add . に短縮されます ga .
  • git commit -m "message" に短縮されます gc -m "message"
  • git push に短縮されます gp

ここに画像の説明を入力してください


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 MSGSojan V Joseに触発された部分

if elseそこにステートメントを入れたいので、aacvで、完了時にデプロイするかどうかを尋ねられ、「y」と入力した場合はそれを.zshrc実行できますが、それを自分のファイルに入れる必要があると思います


1

次のエイリアスを使用して、すべて追加してコミットします。

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

次に、次のように入力します。

git ac

コミットメッセージを編集するためのvimウィンドウが表示されます。


盗作であなたを訴えます。:)
Navid Vafaei

Navidによる著しく古い回答と比較したときに、回答が提供するさまざまな追加の洞察を説明してください。
ユンノシュ

@Yunnosch彼は "あまりにも怠惰"なので、投稿する前にNavidの回答を見なかったと思います:P完全な回答として投稿します。実際、同じです。実際、私はこのエイリアスをずっと前から持っていて、同僚から借りてきました。だから、これを盗用連鎖と呼ぶことができると思います。気になる場合はごめんなさい。
ガスは

1

誰かが単一のファイルに対して「追加してコミット」したい場合(これは私の場合です)に、次のスクリプトを作成しました。

#!/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に追加しました。その後、1つのコマンドで1つのファイルに対してgit addおよびcommitを実行できます。

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

0

私はこのgitエイリアスを使用します。

git config --global alias.cam '!git commit -a -m '

だから、電話する代わりに

git add -A && git commit -m "this is a great commit"

私はただします:

git cam "this is a great commit"


0

あなたが使用することができます gitのは、「[コメント]」-amコミット //最善の解決策やgitのアドオン。&& git commit -m "[コメント]"


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'

0
  1. bashでエイリアスを作成します。 alias gac="git add -A && git commit -m"

    (私はショートカットを「gac」と呼ぶことを選びましたが、あなたはそうする必要はありません)

  2. これを使って: gac 'your commit message here'


0

Subversionのようなものに慣れている群衆の中の銀の背中のために...シングルステップ私は通常、プロジェクトのルートに次のようなものを追加します(git-commit.batなどのWindowsのbatファイルとして)。次に、追加、コミット、およびプッシュする場合は、次のように入力しますgit-commit "Added some new stuff"で、すべてリモートリポジトリに移動します。

また、この方法では、プロジェクトの誰もがローカルで何かを変更しなくても同じように使用できます。

通常はgit config credential.helper store1回も実行するため、これを実行するときに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.

0

これは私にとっては常に動作します次のコマンドを実行してください:

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

ここで、*はプッシュ先のブランチに基づいており、コミットメッセージは常にコンテキストに合わせて変更できます。


-1
  1. 入力git add . && git commit -amして入力
  2. 入力historyして入力
  3. 上記のコマンドの番号を覚えておいてください。 543
  4. これからは、すべてのコミットタイプ、!543 "your comment here"つまり感嘆符+番号、スペース、コメント。

4
私が反対票を投じたのは、これが本当に奇妙な解決策であり、履歴が期限切れになり、その543番目のコマンドが別のものになると、恐ろしい方法で事態を壊す可能性があるためです。
bfontaine 2018年


-4

それを1行に保つには、以下を使用します。

gacm "your comment"

2
これについての背景やリンクなどを教えていただけますか?
Gershom 2016年

7
私はこのポスターがエイリアスで働いていると思います、そしてそれを理解していません。上記の作業を行うには、次のようなシェルエイリアスを追加します。alias gacm="git add .; git commit -m"または(できれば私はそう思う)のようなgitエイリアスgit config --global alias.gacm '!git add .;git commit -m'
単なる開発
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.