How to add multiple files to Git at the same time
To add all the changes you've made:
git add .
To commit them:
git commit -m "MY MESSAGE HERE"
#-m is the message flag
You can put those steps together like this:
git commit -a -m "MY MESSAGE HERE"
To push your committed changes from your local repository to your remote repository:
git push origin master
You might have to type in your username/password for github after this. Here's a good primer on using git. A bit old, but it covers what's going on really well.
As some have mentioned a possible way is using git interactive staging.This is great when you have files with different extensions
$ git add -i staged unstaged path 1: unchanged +0/-1 TODO 2: unchanged +1/-1 index.html 3: unchanged +5/-1 lib/simplegit.rb*** Commands *** 1: status 2: update 3: revert 4: add untracked 5: patch 6: diff 7: quit 8: helpWhat now>
If you press 2
then enter
you will get a list of available files to be added:
What now> 2 staged unstaged path 1: unchanged +0/-1 TODO 2: unchanged +1/-1 index.html 3: unchanged +5/-1 lib/simplegit.rbUpdate>>
Now you just have to insert the number of the files you want to add, so if we wanted to add TODO
and index.html
we would type 1,2
Update>> 1,2 staged unstaged path* 1: unchanged +0/-1 TODO* 2: unchanged +1/-1 index.html 3: unchanged +5/-1 lib/simplegit.rbUpdate>>
You see the *
before the number? that means that the file was added.
Now imagine that you have 7 files and you want to add them all except the 7th? Sure we could type 1,2,3,4,5,6
but imagine instead of 7 we have 16, that would be quite cumbersome, the good thing we don't need to type them all because we can use ranges,by typing 1-6
Update>> 1-6 staged unstaged path* 1: unchanged +0/-1 TODO* 2: unchanged +1/-1 index.html* 3: unchanged +5/-1 lib/simplegit.rb* 4: unchanged +5/-1 file4.html* 5: unchanged +5/-1 file5.html* 6: unchanged +5/-1 file6.html 7: unchanged +5/-1 file7.htmlUpdate>>
We can even use multiple ranges, so if we want from 1 to 3 and from 5 to 7 we type 1-3, 5-7
:
Update>> 1-3, 5-7 staged unstaged path* 1: unchanged +0/-1 TODO* 2: unchanged +1/-1 index.html* 3: unchanged +5/-1 lib/simplegit.rb 4: unchanged +5/-1 file4.html* 5: unchanged +5/-1 file5.html* 6: unchanged +5/-1 file6.html* 7: unchanged +5/-1 file7.htmlUpdate>>
We can also use this to unstage files, if we type -number
, so if we wanted to unstage file number 1 we would type -1
:
Update>> -1 staged unstaged path 1: unchanged +0/-1 TODO* 2: unchanged +1/-1 index.html* 3: unchanged +5/-1 lib/simplegit.rb 4: unchanged +5/-1 file4.html* 5: unchanged +5/-1 file5.html* 6: unchanged +5/-1 file6.html* 7: unchanged +5/-1 file7.htmlUpdate>>
And as you can imagine we can also unstage a range of files, so if we type -range
all the files on that range would be unstaged. If we wanted to unstage all the files from 5 to 7 we would type -5-7
:
Update>> -5-7 staged unstaged path 1: unchanged +0/-1 TODO* 2: unchanged +1/-1 index.html* 3: unchanged +5/-1 lib/simplegit.rb 4: unchanged +5/-1 file4.html 5: unchanged +5/-1 file5.html 6: unchanged +5/-1 file6.html 7: unchanged +5/-1 file7.htmlUpdate>>