If I understand correctly, if I do
git diff master devel ./my_file
I get the diff between the two HEADs of the branches. However, if I have made changes in, say, master and staged them, I thought I could get the diff between the unstaged file and the corresponding file in the other branch with
$ git diff --cached master devel ./my_file
but I get the following error:
usage: git diff [<options>] [<commit> [<commit>]] [--] [<path>...]
So what is the correct way to get the diff between staged changes in a file and the corresponding file in another branch?
Try the following syntax:
git diff --cached devel -- my_file.ext
This should compare my_file.ext as it is at the HEAD of the devel branch against the current stage in master (assuming you run this command on the master branch).
There is a lot going on in this command, but note that --cached does not refer to devel, which is a commit where the concept of stage does not apply. Instead, --cached refers to the file my_file.ext which follows the -- separator.
This command corresponds to the following pattern from the manual:
git diff [--options] --cached [<commit>] [--] [<path>…]
Here devel is the commit and my_file.ext is the file path.
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