8

How do I exclude files & directories from git diff --no-index?

For example, I want to show the differences between two directories project1 & project2 while ignoring their top-level .git directories (project1/.git & project2/.git) and all their .DS_Store files.

ma11hew28
  • 121,420
  • 116
  • 450
  • 651

1 Answers1

1

This is not exactly what you asked for, but it might give you the results you want: Add project2 as a remote of project1 and just git diff their HEADs.

git remote add other ../project2/.git
git fetch other

# Perform the diff
git diff other/HEAD

If your project2 is not already a Git repo, you can temporarily make it one (hat tip to Josiah Yoder for his comments):

# Set up project2 repo
cd ../project2
git init
git add .

# Add as remote from project1
cd ../project1
git remote add other ../project2/.git
git fetch other

# Perform the diff
git diff other/master

# Clean up
git remote remove other
cd ../project2
rm -r .git
Michael
  • 8,362
  • 6
  • 61
  • 88
  • 1
    Can't you just do a temporary `git init; git add .` in the non-repo and then `rm -r .git` in the non-repo dir when you are done with the diff? – Josiah Yoder Aug 11 '20 at 14:39
  • By the way, the add is done with `git remote add other path/to/project2/.git`, then `git fetch other`, and `git diff other/master`. In the case of a non-repo, I would perform these commands from the non-repo. – Josiah Yoder Aug 11 '20 at 14:42