Reputation: 23661
I have two branches in my repository which I want to diff for some files.
I want to list only newly added migrations between those two branches.
Something like:
git diff branch1 branch2 | grep /db/migrate
How can I do it?
Upvotes: 40
Views: 25694
Reputation: 11678
It's even easier if you want to compare the current branch to another. While those familiar with git will think this obvious, I'm including this for people that are starting out with git.
git diff other_branch_name --name-only
Upvotes: 3
Reputation:
This command will diff their whole history:
git diff branch1..branch2 --name-only
If you want to compare from their last common ancestor, then:
git diff branch1...branch2 --name-only
And now you can grep files that you want. From there it's easy to write a little shell script that diffs two branches, file by file.
filenames=$(git diff branch1...branch2 --name-only | grep /db/migratons) IFS=' ' read -r -a filearr <<< "$filenames" for filename in "${filearr[@]}" do echo $(git diff branch1...branch2 -- "$filename") done
Create the git-command-name
file and put it into the user/bin
folder (you should parametrize input - branches as variables).
Git will recognise it as a command that you can call with:
git command-name branch1 branch2
Upvotes: 55