git add only modified changes and ignore untracked files
Solution 1:
Ideally your .gitignore
should prevent the untracked (and ignored) files from being shown in status, added using git add
etc. So I would ask you to correct your .gitignore
You can do git add -u
so that it will stage the modified and deleted files.
You can also do git commit -a
to commit only the modified and deleted files.
Note that if you have Git of version before 2.0 and used git add .
, then you would need to use git add -u .
(See "Difference of “git add -A
” and “git add .
”").
Solution 2:
This worked for me:
#!/bin/bash
git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'`
Or even better:
$ git ls-files --modified | xargs git add
Solution 3:
To stage modified and deleted files
git add -u
Solution 4:
git commit -a -m "message"
-a : Includes all currently changed/deleted files in this commit. Keep in mind, however, that untracked (new) files are not included.
-m : Sets the commit's message
Solution 5:
I happened to try this so I could see the list of files first:
git status | grep "modified:" | awk '{print "git add " $2}' > file.sh
cat ./file.sh
execute:
chmod a+x file.sh
./file.sh
Edit: (see comments) This could be achieved in one step:
git status | grep "modified:" | awk '{print $2}' | xargs git add && git status