In git, how can one find out which files in directory have NOT changed since some commit?
To find out which files changed in a given commit, use the git log --raw command.
You can run the git diff HEAD command to compare the both staged and unstaged changes with your last commit.
IMO a far easier way to generate your list would be the following command chain:
git ls-files --full-name | grep -v "$(git diff --name-only <REF>)"
Where <REF>
is the hash of the commit from which you want the unchanged files since.
git ls-files
list, as you could expect, all versioned files and then you grep all files which aren't in the list of changed files since the specified commit.
Use git diff --name-only $REV
to get the list of files that have changed. Use git -C $(git rev-parse --show-toplevel) ls-tree -r HEAD --name-only
to get the list of all files. Use grep
to separate the sets:
git diff ${REV?must specify a REV} --name-only > /tmp/list
git -C $(git rev-parse --show-toplevel) ls-tree -r HEAD --name-only |
grep -f /tmp/list -v
Prior to executing those commands, you'll need to specify a rev in the variable REV. eg, REV=HEAD~6
or REV=branch-name~~
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With