Git: Как различать два разных файла в разных ветках? - PullRequest
156 голосов
/ 15 ноября 2011

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

Что-то вроде

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

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

Ответы [ 5 ]

202 голосов
/ 15 ноября 2011
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
21 голосов
/ 10 июня 2013

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

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt
1 голос
/ 17 июля 2018

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

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>
1 голос
/ 04 апреля 2018

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

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

     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

0 голосов
/ 29 марта 2019

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

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