Git: Как различать два разных файла в разных ветвях?

У меня есть два разных файла в разных ветвях. Как я могу разделить их по одной команде?

Что-то вроде

# git diff branch1/foo.txt branch2/foo-another.txt

Я могу проверить другой файл, выполнить его и восстановить, но это довольно грязное решение.

Ответ 1

git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt

Вы также можете использовать относительные пути:

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt

Ответ 2

Sidenote: нет необходимости в полных путях, вы можете начать с ./ для относительных путей. Иногда это может быть полезно.

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt

Ответ 3

Есть много способов сравнить файлы из двух разных веток. Например:

  • Если имя одно и то же или другое:

     git diff branch1:file branch2:file
    

    Пример:

     git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
    
  • Только если имя совпадает и вы хотите сравнить текущий рабочий каталог с какой-либо веткой:

    git diff ..someBranch path/to/file
    

    Пример:

    git diff ..branch2 full/path/to/foo.txt
    

    В этом примере вы сравниваете файл из вашей фактической ветки с файл в основной ветке.

Вы можете проверить этот ответ:

Сравните файл из двух разных веток в Git

Ответ 4

Ответ не по теме - см. комментарии

Просто добавлю, я нахожу очень простой синтаксис:

git diff <branch1> <branch2> <filepath>

Также работает с относительными ссылками, например:

# compare the previous committed state from HEAD with the state branch1 was 3 commits ago
git diff HEAD^ <branch1>~3 <filepath>

Ответ 5

Вы можете указать начало и диапазон для git diff, к которому будет применяться. Диапазон обозначается обозначением ...

branch1=somebranch
branch2=someotherbranch
git diff ${branch1}..${branch2} -- file_path