2016-05-21 2 views
0

Мы имеем совершает 1-> 2-> 3-> 4-> 5Git: Показать дифф из коллекции фиксаций

Do см диф, так как (включительно) совершить 3 мы можем сделать git diff 3~1.

Это будет показывать коллективные различия с деревом источников из diff 3, включая 3/4/5.

Вопрос: как мы можем видеть различия в результате только 3 и 5, но не 4?

Commit 4 - это фиксация в другой части источника. 3 и 5 связаны друг с другом, и мы хотим видеть только разницу, возникающую в результате этих коммитов.

+1

'git checkout -b tmp 3; git cherry-pick 5' теперь вы получаете 1-> 2-> 3-> 5 '. Вы также можете сделать это с помощью 'git rebase --onto 3 4 5'. – ElpieKay

+0

Для этого вам даже не требуется название ветки, просто сделайте это. 'git checkout 3; git cherry-pick 5; git diff 3 ~; git checkout @ {- 1} ' – jthill

ответ

0

Я не думаю, что вы можете исключить конкретные коммиты в диапазоне, но я думаю, что ключ к вашему вопросу - это то, что вы делаете, когда Commit 4 находится в другой части исходного дерева.

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

git diff <commit3> <commit1> -- <path> <path> <path> 

где перечислите <path> аргументы из 1 или нескольких каталогов верхнего уровня содержащие файлы, которые вас интересуют.

Кроме того, см. Exclude a directory from git diff для некоторых механизмов на основе оболочки, чтобы исключить только один каталог.

Смежные вопросы