How can I stage and commit all files, including newly added files, using a single command?
How can I stage and commit all files, including newly added files, using a single command?
Solution 1:
Does
git add -A && git commit -m "Your Message"
count as a "single command"?
Edit based on @thefinnomenon's answer below
To have it as a git alias
, use:
git config --global alias.coa "!git add -A && git commit -m"
and commit all files, including new files, with a message with:
git coa "A bunch of horrible changes"
Explanation
From git add
documentation:
-A, --all, --no-ignore-removal
Update the index not only where the working tree has a file matching but also where the index already has an entry. This adds, modifies, and removes index entries to match the working tree.
If no
<pathspec>
is given when -A option is used, all files in the entire working tree are updated (old versions of Git used to limit the update to the current directory and its subdirectories).
Solution 2:
This command will add and commit all the modified files, but not newly created files:
git commit -am "<commit message>"
From 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.
Solution 3:
Not sure why these answers all dance around what I believe to be the right solution but for what it's worth here is what I use:
1. Create an alias:
git config --global alias.coa '!git add -A && git commit -m'
2. Add all files & commit with a message:
git coa "A bunch of horrible changes"
NOTE: coa
is short for commit all and can be replaced with anything your heart desires
Solution 4:
I use this function:
gcaa() { git add --all && git commit -m "$*" }
In my zsh config file, so i can just do:
> gcaa This is the commit message
To automatically stage and commit all files.