Текущая рабочая копия файла с другой переданной копией

У меня есть репо с файлом 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

также должен работать