В Git, как я могу сравнить один и тот же файл между двумя разными коммитами (не смежными) в одной и той же ветке (например, master)?
Я ищу функцию сравнения, например, в Visual SourceSafe (VSS) или Team Foundation Server (TFS).
Возможно ли это в Git?
..
самом деле в этом нет необходимости, хотя он будет работать с ним (за исключением довольно старых версий, может быть). Вы также можете использоватьgit log
или,gitk
чтобы найти SHA1 для использования, если два коммита будут очень далеко друг от друга.gitk
также имеет «diff selected -> this» и «diff this -> selected» в контекстном меню.--
полезно, например, когда у вас есть файл с именем-p
. Хорошо использовать в сценариях, только в редких случаях, необходимых на практике.Вы также можете сравнить два разных файла в двух разных ревизиях, например так:
git diff <revision_1>:<file_1> <revision_2>:<file_2>
источник
<file_1>
и<file_2>
находились в текущем каталоге, а не в верхнем уровне каталога, управляемого git, в./
Unix нужно добавить :<revision_1>:./filename_1
Если вы настроили «difftool», вы можете использовать
Пример: сравнение файла из его последнего коммита с его предыдущим коммитом в той же ветке: при условии, что если вы находитесь в корневой папке вашего проекта
У вас должны быть следующие записи в вашем ~ / .gitconfig или в файле проекта / .git / config. Установите p4merge [Это мой любимый инструмент сравнения и слияния]
источник
Проверьте
$ git log
, скопируйте идентификатор SHA-1 двух разных коммитов и выполнитеgit diff
команду с этими идентификаторами. например:источник
git diff (sha-id-one) (sha-id-two) -- filename.ext
без имени файла он будет отображать различия всех файлов в этих двух коммитах.Если вы хотите увидеть все изменения в файле между двумя коммитами на основе коммитов, вы также можете сделать
git log -u $start_commit..$end_commit -- path/to/file
источник
Вот скрипт Perl, который выводит команды Git diff для данного файла, как это указано в команде журнала Git.
Например
Урожайность:
который затем может быть вырезан и вставлен в сеансе окна оболочки или передан по трубопроводу
/bin/sh
.Ноты:
Код:
источник
Если вы хотите сделать diff с более чем одним файлом, используя метод, указанный в @mipadi:
Например, diff между
HEAD
и yourmaster
, чтобы найти все.coffee
файлы:Это будет рекурсивно искать
your_search_folder/
все ваши.coffee
файлы и проводить различие между ними и ихmaster
версиями.источник
Если у вас есть несколько файлов или каталогов и вы хотите сравнить непостоянные коммиты, вы можете сделать это:
Создайте временную ветку ( в этом примере "revision" )
Перемотать на первую цель коммита
Вишня ковыряется заинтересованным
Применить diff
Когда вы сделали
источник
Просто еще один способ использовать удивительность Git ...
источник
difftool-file = "!git difftool HEAD@{\"$2\"} HEAD \"$1\" #"
Если вам нужно простое визуальное сравнение в Windows, например, в Visual SourceSafe или Team Foundation Server (TFS), попробуйте следующее:
Примечание: после обновления до Windows 10 я потерял опции контекстного меню Git. Тем не менее, вы можете добиться того же, используя «gitk» или «gitk filename» в командном окне.
Как только вы вызовете «Git History», запустится инструмент Git GUI с историей файла в верхней левой панели. Выберите одну из версий, которую вы хотите сравнить. Затем щелкните правой кнопкой мыши на второй версии и выберите либо
Diff this -> selected
или
Diff selected -> this
Различия с цветовой кодировкой появятся в нижней левой панели.
источник