Is there a way to list only the directories that were changed?
If I'm at the git root say, ~/project
Files I changed are
~/project/subtool/file1
~/project/subtool/file2
~/project/subtool3/file1
I just want
~/project/subtool
~/project/subtool3
Is there a way to list only the directories that were changed?
If I'm at the git root say, ~/project
Files I changed are
~/project/subtool/file1
~/project/subtool/file2
~/project/subtool3/file1
I just want
~/project/subtool
~/project/subtool3
You could use git-diff
with the --dirstat
parameter.
In your scenario, let's say you have the following commit:
$ git diff --name-status HEAD~1
M subtool/file1
M subtool/file2
M subtool3/file1
It would produce the following output:
$ git diff --dirstat=files,0 HEAD~1
66.6% subtool/
33.3% subtool3/
Make sure to add ,0
, otherwise git diff
will by default only show directories with at least 3% changes. I also chose files
as this is the computationally cheapest option and you do not seem to care about specific changes anyway.
If you are able to use sed
you can get rid of the percentage values (you may want to tweak the regular expression a bit to fit your needs):
$ git diff --dirstat=files,0 HEAD~1 | sed 's/^[ 0-9.]+% //g'
subtool/
subtool3/