単一のコマンドを使用して、新しく追加されたファイルを含むすべてのファイルをステージングしてコミットするにはどうすればよいですか?


425

単一のコマンドを使用して、新しく追加されたファイルを含むすべてのファイルをステージングしてコミットするにはどうすればよいですか?


3
イライラするのは、これは以前は可能であり、新しいファイルをコミットして追加するための標準の構文であったことです。既存のユーザーを混乱させ(そしてスクリプトを壊し)、有用な機能を排除し、不要なフラグに置き換えました。
fijiaaron、2015

1
git add -Aにこれの複製があります、1つのコマンドでgit commit?。ここで受け入れられた回答は、ここで受け入れられた回答と似ていますが、関連する入力を短縮するためにgitエイリアスを作成することをお勧めします(その方法を示します)。
Mark Amery

回答:


568

する

git add -A && git commit -m "Your Message"

「単一のコマンド」として数える?

以下の@thefinnomenonの回答に基づいて編集してください

としてgit alias使用するには、次を使用します。

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

新しいファイルを含むすべてのファイルを次のメッセージでコミットします。

git coa "A bunch of horrible changes"

説明git addドキュメントから):

-A、-all、-no-ignore-removal

作業ツリーでファイルが一致している場所だけでなく、インデックスにすでにエントリがある場所でもインデックスを更新します。これにより、作業ツリーと一致するようにインデックスエントリが追加、変更、および削除されます。

<pathspec>-Aオプションの使用時にno を指定すると、作業ツリー全体のすべてのファイルが更新されます(古いバージョンのGitは、更新を現在のディレクトリとそのサブディレクトリに制限するために使用されていました)。


3
コミットメッセージはどうですか?
Narendra Jaggi

11
@NarendraJaggi git add -A && git commit -m "Your Message"
Dr.jacky

1
それを独自の.shまたは.batファイルに入れて、1つのコマンドとして使用することもできます。メッセージはparam1の可能性があります
BlueWizard

また、基本的なgitコマンドのショートカットを.bashrcに追加することもできます。alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git commit' alias gs = 'git status' alias gd = 'git diff' alias ga = 'git add' alias gck = 'git checkout' alias gb = 'git branch' alias gl = 'git log' alias lcp = 'git format-patch -1 HEAD' alias resetToMaster = 'git reset --hard origin / master '
ni3

3
PowerShellでは、「&」を「;」に置き換えます。このように、両方のコマンドを実行するgit add -A ; git commit -m "Your Message"
ラファエルMiceli

415

このコマンドは、すべての変更されたファイルを追加してコミットしますが、新しく作成されたファイルはコミットしません

git commit -am  "<commit message>"

man git-commitから:

   -a, --all
       Tell the command to automatically stage files that have been modified
       and deleted, but new files you have not told Git about are not
       affected.

101
これは実際には質問に答えるものではありません。実際、具体的に(太字で)求められている解決策の重要な部分の1つを除外しています。
Arunas 2015

6
追跡されていないファイルを追加またはコミットしません。
b15

3
しかし、 "git add -A"の後にコミットしてコードの小さな何かを変更するのを忘れたことに気付くとき、それは最も典型的な状況をカバーします。私は同じコミットメッセージを最初から何度も書くのが嫌いです
KorbenDallas

しかし、スレッドスターターはすべてのファイルを言っているので、これはカウントされないと思います
フレデリックG.サンダロ2017

また、基本的なgitコマンドのショートカットを.bashrcに追加することもできます。alias gpl = 'git pull' alias gps = 'git push' alias gc = 'git commit' alias gs = 'git status' alias gd = 'git diff' alias ga = 'git add' alias gck = 'git checkout' alias gb = 'git branch' alias gl = 'git log' alias lcp = 'git format-patch -1 HEAD' alias resetToMaster = 'git reset --hard origin / master '
ni3

26

私はこの関数を使用します:

gcaa() { git add --all && git commit -m "$*" }

私のzsh設定ファイルで、私はただ行うことができます:

> gcaa This is the commit message

すべてのファイルを自動的にステージングしてコミットします。


1
bash-likeの場合function gcaa() { git add --all && git commit -m "$*" && git push }
Damilola

1
@Damilola- bash-likeとはどういう意味ですか?回答の構文はbashでも機能します
Eliran Malka

これは私が以前のようにエイリアスを使用し、いいですgaa && gc -m "my commit"。<変更のbashrcにオフscurries ...> ...しかし、これはそれほど進歩して
アンディ・マッカロー


24

なぜこれらの答えがすべて正しい解決策であると私が信じるものの周りを踊るのかわかりませんが、ここで価値があるのは私が使用するものです:

エイリアスを作成します。

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

すべてのファイルを追加し、メッセージでコミットします。

git coa "A bunch of horrible changes"

注:coaすべてのコミットの略であり、あなたの心が望むものに置き換えることができます


1
これ以外に回答がないと、メッセージを使用してすべてをコミットするプロセスが単純化されます。
Seph Reed、

2
これは素晴らしいです、git alias方法を探していました、残りは退屈です。
Qortex、

9

gitでのコミットは、状況に応じて複数のステップのプロセスまたは1つのステップになります。

  1. この状況では、複数のファイルが更新されていて、コミットする必要があります。

    何かをコミットする前に、変更されたすべてのファイルを追加する必要があります。

    git add -A
    

    または

    git add --all
    
  2. その後、追加されたすべてのファイルをコミットすることができます

    git commit
    

    これにより、このコミットのメッセージを追加する必要があります。


6

現在のブランチで変更を隠しておくための「迅速かつダーティー」な方法が必要な場合は、次のエイリアスを使用できます。

git config --global alias.temp '!git add -A && git commit -m "Temp"'  

そのコマンドを実行した後、git temp「Temp」という名前のコミットとして、gitに現在のブランチへのすべての変更を自動的にコミットさせるように入力するだけです。その後、git reset HEAD~後で変更を「コミット解除」して、変更を続けたりgit commit --amend、コミットに変更を追加したり、適切な名前を付けたりすることができます。


4

私の設定には2つのエイリアスがあります:

alias.foo=commit -a -m 'none'
alias.coa=commit -a -m

私が怠惰すぎる場合は、すべての変更をコミットします

git foo

クイックコミットをするだけです

git coa "my changes are..."

coaは「commit all」の略です


9
私は、「なし」というコミットメッセージで満たされたリポジトリを使用するのは嫌いです。それに基づいて、PRもすべて拒否します。残念ながら、適切なコミットメッセージの重要性を知る唯一の方法は、昔に書かれたものを監査する必要がある場合です(「この行はバグの原因になっています...なぜ追加されたのか、何でもします変更/削除すると壊れますか?」)。
gregmac、2015

1
「なし」のコミットは、長期間とどまることを決して意図していません。通常、私は自分の機能ブランチを開始し、マイクロコミットを実行して、マージ前にそれらをより妥当なものに押しつぶします。明らかに、変更された関数ごとにコミットを行い、本格的なgitログを気にしない人は、これを必要としません。
SystematicFrank

1
私はこの目的のために 'none'ではなく 'wip'( "work in progress"の略)を使用し、そのようなコミットのみをプライベートブランチにプッシュします。
SergejKoščejev2016年

最終的にこれらの「wip」または「none」のコミットは、他の人が見るブランチになり、メッセージログを汚染するため、それでもまだ役に立ちません。プッシュする前にすべてのコミットを押しつぶしている場合、それは許容されますが、それ以外の場合はチームにとって迷惑です。
ジョーダン

これはすりおろしのアイデアであり、次の回答と組み合わせると、実際にOPの100%正確な回答を得ることができます。私は実際に必要な手順(git-bashを使用)を私の回答で概説しました。(stackoverflow.com/a/43442269/869239
ベロ

3

指定されたコマンドを実行します

git add . && git commit -m "Changes Committed"

ただし、単一のコマンドのように見えても、2つの個別のコマンドが1つずつ実行されます。ここでは&&、それらを組み合わせるために使用しました。これは、実行git add .してgit commit -m "Changes Committed"個別に行う場合と大差ありません 。複数のコマンドを一緒に実行できますが、ここではシーケンスが重要です。ステージングとコミットに加えてリモートサーバーに変更をプッシュする場合は、指定された方法で行うことができます。

git add . && git commit -m "Changes Committed" && git push origin master

代わりに、シーケンスを変更してpushを最初に配置すると、それが最初に実行され、ステージングおよびコミット後に望ましいプッシュが行われません。

&&最初のコマンドが正常に戻ったとき、またはエラーレベル0で、行で2番目のコマンドを実行します。反対の&&isは||、最初のコマンドが失敗したとき、またはエラーレベル1で2番目のコマンドを実行します。

または、aliseをasとして作成しgit config --global alias.addcommit '!git add -a && git commit -m'て使用することもできますgit addcommit -m "Added and commited new files"


2

すばらしい回答ですが、1行ですべてを実行すると、連結、エイリアス、および便利な機能を利用できます。

git add * && git commit -am "<commit message>"

これは1行ですが2つのコマンドであり、前述のとおり、これらのコマンドのエイリアスを設定できます。

alias git-aac="git add * && git commit -am " (最後のスペースは重要です)新しいショートハンドコマンドをパラメーター化するためです。

この時点から、このエイリアスを使用します。

git-acc "<commit message>"

あなたは基本的に言う:

git、すべての追跡されていないファイルを追加して、この指定されたコミットメッセージでコミットします。

Linuxをご利用いただき、ありがとうございます。


0

小さなスクリプト(Ian Clellandの回答を参照)を記述して、git-commitallいくつかのgitコマンドを使用して目的の操作を実行できます。
このスクリプトをの任意の場所に配置します$PATH。あなたはそれを呼び出すことができますgit commitall...非常に便利です!

ここで見つかりまし(質問とすべての回答は残念ながら削除されましたが、高い評価を得た場合にのみ表示されます)


全体のスレッドは良い読み物です...それが私がそれをリンクした理由です^^
tanascius

@Dimitri-残念ながら、何人かの研究者がこの便利なスレッドを削除することを決めました。まだ高い評価で目に見えるので、ここにリンクを貼っておきます。
tanascius

0

使ってみてください:

git add . && git commit -m "your message here"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.