У меня есть репо с файлом foo в главной ветке. Я переключился на ветвь бар и внес некоторые изменения в foo. Как я могу запустить git diff между этой копией (которая еще не выполнена) и копией главной ветки?
Текущая рабочая копия файла с другой переданной копией
Ответ 1
Для меня работает следующее:
 git diff master:foo foo
В прошлом это могло быть:
 git diff foo master:foo
Ответ 2
Вы пытаетесь сравнить свое рабочее дерево с определенным именем ветки, поэтому вы хотите:
git diff master -- foo
Что из этой формы git -diff (см. git -diff manpage)
   git diff [--options] <commit> [--] [<path>...]
       This form is to view the changes you have in your working tree
       relative to the named <commit>. You can use HEAD to compare it with
       the latest commit, or a branch name to compare with the tip of a
       different branch.
FYI, есть опция --cached (aka --staged) для просмотра разницы с тем, что вы поставили, а не всего в рабочем дереве:
   git diff [--options] --cached [<commit>] [--] [<path>...]
       This form is to view the changes you staged for the next commit
       relative to the named <commit>.
       ...
       --staged is a synonym of --cached.
Ответ 3
Также: git diff master..feature foo
Так как git diff foo master:foo не работает для каталогов для меня.
Ответ 4
git difftool -v tag/branch filename
Ответ 5
git diff mybranch master -- file
также должен работать
