Reputation: 4373
Is there a way in Git to stage and commit files in one command? For example in my local repository I created files index.html, styles.css located in css folder and script.js located in js folder. Now I want to run one command to stage and commit all this files. I tried code below but it didn't work
git commit -a -m "my commit message"
Upvotes: 43
Views: 58534
Reputation: 1240
What you want to do is:
git commit -am "Message for my commit"
This will automatically add all tracked files and you can type your message in one command.
-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.
-m <msg> --message=<msg>
Use the given as the commit message. If multiple -m options are given, their values are concatenated as separate paragraphs.
https://git-scm.com/docs/git-commit
If you want to stage and commit untracked files, you can:
git add -A && git commit -am 'message'
Upvotes: 42
Reputation: 5480
git commit -a ...
will automatically add and commit files that have already been commited previously and are modified or deleted now. As you found out it does not affect new files.
You could use an alias to combine the git add ...
and git commit ...
into one command line. But if you do, take the time to script it to not need to use git add .
or git add -A
as that will inevitably lead to commiting files you really don't want to.
Upvotes: 23
Reputation: 14023
You can do this by using an alias.
Define an alias like this:
git config --global alias.your-alias '!git add -A && git commit'
Then you can use it like a normal git command: git your-alias -m 'commit message'
Upvotes: 11