git diff
может показать вам разницу между двумя коммитами:
git diff mybranch master -- myfile.cs
Или, что эквивалентно:
git diff mybranch..master -- myfile.cs
Используя последний синтаксис, если любая из сторон является, HEAD
это может быть опущено (например, master..
сравнивается master
с HEAD
).
Вы также можете быть заинтересованы в mybranch...master
(из git diff
документов ):
Эта форма предназначена для просмотра изменений на ветви, содержащей и вплоть до второй <commit>
, начиная с общего предка обоих <commit>
. git diff A...B
эквивалентно git diff $(git-merge-base A B) B
.
Другими словами, это приведет к разным изменениям, master
поскольку оно отличается от mybranch
(но без новых изменений с тех пор mybranch
).
Во всех случаях --
разделитель перед именем файла указывает на флаги конца командной строки. Это необязательно, если только Git не запутается, если аргумент ссылается на коммит или файл, но включение в него не является плохой привычкой. См. Https://stackoverflow.com/a/13321491/54249 для нескольких примеров.
Те же аргументы могут быть переданы, git difftool
если у вас есть один настроенный.
git diff branch1 branch2 myfile.cs
. (В--
этом больше нет необходимости, поскольку он может принимать до двух аргументов ревизии.)--
. Распространенную и простую ошибку.)git diff --name-status branch1..branch2
(вероятно, очевидно, но подумал, что упомяну об этом на случай, если у кого-то еще возникнут те же проблемы, что и у меня).Ты можешь сделать это:
git diff branch1:path/to/file branch2:path/to/file
Если у вас настроен difftool, вы также можете:
git difftool branch1:path/to/file branch2:path/to/file
Смежный вопрос: Как просмотреть вывод git diff с помощью программы diff
источник
branch1:./file
). Это также полезно, если файл находится в отдельном месте между ветвями (напримерgit diff branch1:old/path/to/file branch2:new/path/to/file
).git diff branch1 branch2 path/to/file
.Более современный синтаксис:
git diff ..master path/to/file
Префикс с двойной точкой означает «из текущего рабочего каталога в». Вы также можете сказать:
master..
т.е. обратное вышеописанному. Это так же, какmaster
.mybranch..master
, явно ссылаясь на состояние, отличное от текущего рабочего дерева.v2.0.1..master
ссылка на тег.[refspec]..[refspec]
в основном все, что можно идентифицировать как состояние кода для git.источник
Есть много способов сравнить файлы из двух разных веток:
Вариант 1. Если вы хотите сравнить файл из n определенной ветви с другой конкретной веткой:
Пример:
Вариант 2: Простой способ:
Пример:
Вариант 3: Если вы хотите сравнить ваш текущий рабочий каталог с какой-то веткой:
Пример:
источник
Я просто делаю
git diff branch1 branch2 path/to/file
Это проверяет различия между файлами. Изменения
branch1
будут в красном. Измененияbranch2
будут в зеленом.Предполагается, что
branch1
это прошлое иbranch2
будущее. Вы можете изменить это, изменив порядок ветвей в diff:git diff branch2 branch1
источник
Если вы хотите сделать сравнение с текущей веткой, вы можете пропустить его и использовать:
git diff $BRANCH -- path/to/file
таким образом он будет отличаться от текущей ветви к указанной ветви (
$BRANCH
).источник
Согласиться с ответом, предложенным @dahlbyk. Если вы хотите, чтобы diff записывался в файл diff для проверки кода, используйте следующую команду.
источник
В моем случае я использую следующую команду:
Эта команда может помочь вам сравнить один и тот же файл в двух разных ветках
источник
Лучший способ сделать это с помощью
git diff
следующее:git diff <source_branch> <target_branch> -- file_path
Он проверит разницу между файлами в этих ветках. Взгляните на эту статью для получения дополнительной информации о командах git и их работе.
источник
Используйте хеши коммитов так:
где hash1 может быть любым коммитом из любой ветви, то же самое для hash2 .
источник
Существует два сценария сравнения файлов:
Сценарий 1. Сравнение файлов в удаленных ветвях (обе ветки должны существовать в удаленном хранилище)
Сценарий 2: Сравните локальные файлы (в локальной копии рабочей области) с файлами в удаленном хранилище.
Логика проста. Если вы предоставите для diff два имени филиала, он всегда будет сравнивать удаленные ветви, а если вы предоставите только одно имя ветви, он всегда будет сравнивать вашу локальную рабочую копию с удаленным репо (который вы указали). Вы можете использовать диапазон для предоставления удаленных репозиториев.
напр. оформить заказ
в этом случае, если вы укажете имя файла, он сравнит вашу локальную копию имени файла с удаленной веткой с именем « branch2 ».
в этом случае он будет сравнивать имя файла из удаленных веток с именем " branch1 " против " branch2 "
в этом случае он также сравнивает имя файла из удаленных веток с именем " branch1 " и " branch2 ". Итак, так же, как и выше. Однако, если вы только что создали ветку из другой ветки, скажем «master», а ваша текущая ветка не существует в удаленном хранилище, она будет сравнивать удаленный « master » с удаленным « branch2 ».
Надеюсь, что это полезно.
источник
Чтобы сравнить два файла в git bash, вам нужно использовать команду:
Эта команда покажет разницу между двумя файлами в самом bash.
источник