Відповіді:
Ви можете зробити:
git diff master~20:pom.xml pom.xml
... для порівняння вашого поточного pom.xml
з поточним з master
20 версій тому через перший батьків. master~20
Звичайно, ви можете замінити ім'я об'єкта (SHA1sum) комітету або будь-яким з багатьох інших способів визначення перегляду .
Зауважте, що це насправді порівняння старої pom.xml
версії у вашому робочому дереві, а не версії, допущеної в master
. Якщо ви цього хочете, ви можете зробити наступне:
git diff master~20:pom.xml master:pom.xml
git diff <revision> <path>
Наприклад:
git diff b0d14a4 foobar.txt
Якщо ви хочете побачити різницю між останньою фіксацією одного файлу, ви можете зробити:
git log -p -1 filename
Це дасть вам різницю файлу в git, не порівнює ваш локальний файл.
-1
крок за кроком, поки не отримаєте зміни.
gitlog () { git log -${3:-p} -${2:-1} $1; }
Використовується як: gitlog Rakefile
або gitlog Rakefile 5
і gitlog Rakefile 10 s
. Перший показує одну різницю; другий показує п'ять різниць; третій показує десять --no-patch
.
Щоб побачити, що було змінено у файлі в останньому комітеті:
git diff HEAD~1 path/to/file.
Ви можете змінити число (~ 1) на n-ту комісію, з якою ви хочете відрізнятись.
HEAD~1
вона замінена <revision>
, що робить цю відповідь дублікатом.
Загальний синтаксис:
$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
для всіх файлів з назвою "FileName.xml" в будь-якій точці репо.
Помітьте пробіл між "-" та "**"
Відповідь на ваше запитання:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
як завжди з git, ви можете використовувати тег / sha1 / "HEAD ^" для ідентифікації комісії.
Тестований на git 1.9.1 на Ubuntu.
Якщо жодна фіксація не є вашою HEAD, тоді розширення дужок баша виявиться дійсно корисним, особливо якщо ваші імена файлів довгі, наведений вище приклад:
git diff master~20:pom.xml master:pom.xml
Став би
git diff {master~20,master}:pom.xml
Детальніше про розширення Brace з bash.
git diff -w походження HEAD / головний шлях / до / файл
git diff master~20 -- pom.xml
Працює, якщо ви теж не в головній галузі.
Якщо ви добре використовуєте графічний інструмент (або навіть віддаєте перевагу), ви можете:
gitk pom.xml
Потім у gitk ви можете натиснути будь-яку фіксацію (щоб "вибрати" її) та клацніть правою кнопкою миші будь-яку іншу комісію, щоб у спливаючому меню вибрати "Diff this -> selected" або "Diff selected -> this", залежно від того, який порядок ви віддаєте перевагу.
Для людей, зацікавлених зробити те саме з GitHub, див. Порівняння комітетів за час .
Якщо вам потрібно розімкнути один файл у скрині, наприклад, ви можете це зробити
git diff stash@{0} -- path/to/file
Якщо ви шукаєте різницю на певній комісії і хочете використовувати інтерфейс github замість командного рядка (скажімо, ви хочете пов’язати його з іншими людьми), ви можете зробити:
https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
Наприклад:
Зверніть увагу на попередні та наступні посилання вгорі праворуч, які дозволяють вам переходити по всіх файлах комітету.
Це працює лише для конкретного комітету, але не для порівняння між будь-якими двома довільними версіями.
git diff <revision>:foo/ HEAD:foo/
.