How to add multiple files to Git at the same time
GitPushCommitGit Problem Overview
This will be my first git use. I have added new files ( a lot ) to the folder/project ( git local repository).
I went through online tutorials and forums and see i can do
git commit -a
So I go to the base folder of the repository and do a
sudo git commit -a
But then, some screens comes up and asks me to add a comment which i do. i do not know how to proceed or exit. I do not want to mess up so i did ctrl + Z and did not do anything.
Can you guys please outline the commands I need to use?
git commit -a
and
git push?
Git Solutions
Solution 1 - Git
Use the git add
command, followed by a list of space-separated filenames. Include paths if in other directories, e.g. directory-name/file-name
.
git add file-1 file-2 file-3
(please pay attention that the file-names are considered as case sensitive and must include the ".extension")
Solution 2 - Git
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.
Solution 3 - Git
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: help
What 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.rb
Update>>
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.rb
Update>>
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.html
Update>>
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.html
Update>>
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.html
Update>>
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.html
Update>>
Solution 4 - Git
You can also select multiple files like this
git add folder/subfolder/*
This will add all the files in the specified subfolder. Very useful when you edit a bunch of files but you just want to commit some of them...
Solution 5 - Git
If you want to add multiple files in a given folder you can split them using {,}
. This is awesome for not repeating long paths, e.g.
git add long/path/{file1,file2,...,filen}
Beware not to put spaces between the ,
.
Solution 6 - Git
Simply use single quotations around each file name to ensure any with spaces work as expected
git add 'file1' 'file2' 'file3'
Solution 7 - Git
When you change files or add a new ones in repository you first must stage them.
git add <file>
or if you want to stage all
git add .
By doing this you are telling to git what files you want in your next commit. Then you do:
git commit -m 'your message here'
You use
git push origin master
where origin is the remote repository branch and master is your local repository branch.
Solution 8 - Git
step1.
git init
step2.
a) for all files
git add -a
b) only specific folder
git add <folder1> <folder2> <etc.>
step3.
git commit -m "Your message about the commit"
step4.
git remote add origin https://github.com/yourUsername/yourRepository.git
step5.
git push -u origin master
git push origin master
if you are face this error than
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/harishkumawat2610/Qt5-with-C-plus-plus.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Use this command
git push --force origin master
Solution 9 - Git
To add all the changes you've made:
git add .
To add single folder:
git add directory path
To add multiple folders:
git add folder1 folder2 folder3 foldern
To commit all the changes:
git commit -m "message"
To push your committed changes from your local repository to your remote repository:
git push origin branch name
Solution 10 - Git
It sounds like git is launching your editor (probably vi
) so that you can type a commit message. If you are not familiar with vi
, it is easy to learn the basics. Alternatives are:
-
Use
git commit -a -m "my first commit message"
to specify the commit message on the command line (using this will not launch an editor) -
Set the
EDITOR
environment variable to an editor that you are familiar with
Solution 11 - Git
If you want to stage and commit all your files on Github do the following;
git add -A
git commit -m "commit message"
git push origin master
Solution 12 - Git
Try this:
git add file1
git commit file1
git push
git add file2
git commit file2 --amend
git push
Note: git commit without -m option will open an editor for your commit message.
Solution 13 - Git
I use the command: git add *CMakeLists.txt
, in order to add all the CmakeLists.txt files across the sub-directories:
> z:\Temp\proj_I2.21.09.24\CMakeLists.txt
> z:\Temp\proj_I2.21.09.24\tools\t1\src\CMakeLists.txt
> z:\Temp\proj_I2.21.09.24\tools\TAF\VV\CMakeLists.txt
> z:\Temp\proj_I2.21.09.24\tools\TAF\Executable\CMakeLists.txt
> z:\Temp\proj_I2.21.09.24\tools\TAF\Recording\CMakeLists.txt
> z:\Temp\proj_I2.21.09.24\Design\original\CMakeLists.txt