2010-07-30 4 views
97

Я использую Git на Ubuntu 10.04 (Lucid Lynx).Показать разницу между фиксациями

Я сделал некоторые поручения моему хозяину.

Однако я хочу получить разницу между этими коммитами. Все они находятся на моей главной ветке.

Например:

commit dj374 
made changes 

commit y4746 
made changes 

commit k73ud 
made changes 

Я хочу, чтобы получить разницу между k73ud и dj374. Однако, когда я сделал следующее, я не видел изменений, внесенных мной в k73ud.

git diff k73ud..dj374 > master.patch 

ответ

101

Попробуйте

git diff k73ud^..dj374 

, чтобы убедиться, что включает в себя все изменения k73ud в результате дифф.

git diff сравнивает две конечные точки (instead of a commit range). Поскольку OP хочет увидеть изменения, внесенные k73ud, ему необходимо разделить между first parent commit of k73ud: k73ud^ (или k73ud^1 or k73ud~).

Таким образом, эти результаты будут diff включать в себя изменения, так как k73ud родителя (смысл включая изменения от самого k73ud), а не изменений, внесенных , так какk73ud (до dj374).

+1

Уверены ли вы? мерзавец дифф 275e8922ab4e995f47a753b88b75c3027444a54c..a8d9d944c32e945cbb9f60b3f724ecc580da86ae работает, но мерзавец дифференциал 275e8922ab4e995f47a753b88b75c3027444a54c^.. a8d9d944c32e945cbb9f60b3f724ecc580da86ae получить сообщение об ошибке - «неизвестную версию или путь не в рабочем дереве» – demas

+0

@demas: работает на моей машине;) Вы также можете использовать 'мерзавец дифф 275e8^a8d9d9', так как это то же самое, что и '' ..' '. – VonC

+3

@VonC В моей машине нет необходимости использовать^ –

38

Если вы хотите, чтобы увидеть изменения, внесенные с каждой фиксации, попробуйте «мерзавец журнал -p»

9

Я использую gitk, чтобы увидеть разницу:

gitk k73ud..dj374 

Он имеет графический режим, так что при рассмотрении легче.

67

Чтобы увидеть разницу между:

вашей рабочей копии и постановка области:

% git diff 

плацдармом и последний коммит:

% git diff --staged 

вашу рабочую копию и совершить 4ac0a6733:

% git diff 4ac0a6733 

Commit 4ac0a6733 и последний коммит:

% git diff 4ac0a6733 HEAD 

Commit 4ac0a6733 и совершить 826793951

% git diff 4ac0a6733 826793951 

Для более подробного объяснения см the official documentation.

+0

Все возможные сценарии? –

+2

также, если вы действительно хотите увидеть различия между файлами в этих коммитах, 'git diff {x} {y} - filename' где' {x} 'и' {y} '- это любой из приведенных примеров. См. Также 'git log -p', так как существует некоторое перекрытие. – michael

3

Чтобы увидеть разницу между двумя различными фиксаций (назовем их a и b), используйте

git diff a..b 
  • Обратите внимание, что разница между a и b противоположно b и a.

Чтобы увидеть разницу между последним коммитом и еще не совершенными изменениями, используйте

git diff 

Если вы хотите, чтобы иметь возможность вернуться к разнице позже, вы можете сохранить его в файл.

git diff a..b > ../project.diff 
8
  1. gitk --all
  2. Выберите первый фиксации
  3. правой кнопкой мыши на другой, то Diff Selected → это
+0

Я начинаю доверять gitk немного меньше, потому что он показывает другого commiter Author, чем фактический. –

-1

Используйте эту команду для разницы между фиксации и нестабилизированный:

git difftool --dir-diff 
Смежные вопросы