Как я вижу чистый git diff несмотря на коммит слияния? - PullRequest
0 голосов
/ 01 марта 2012

Вот сценарий:

Разработчик А вносит изменения в свой локальный репозиторий, а затем, прежде чем сделать эти изменения доступными для просмотра, выполняет выборку, а не выборку и перебазирование, поэтому он в итоге получает гигантский коммит слияния, содержащий его изменения плюс изменения, внесенные в удаленный репозиторий с тех пор, как он сделал последний рывок.

Я хочу получить его изменения и посмотреть только то, что он изменил .

Допустим, мы работаем над веткой с именем master, и после извлечения из его репозитория я делаю это:

git diff master deva / master

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

Итак, как мне получить полную информацию о том, что на самом деле изменил разработчик А, и есть ли у меня способ очистить вещи, чтобы при слиянии его изменений коммит слияния исчезал и у меня была чистая история?

1 Ответ

1 голос
/ 01 марта 2012

Вы хотите git diff master...deva/master, что в соответствии с man-страницей для git diff совпадает с git diff $(git merge-base master deva/master) deva/master, или разницей между точкой, где ваши ветви расходились, и кончиком "его" ветви.

Конечно, вывод git diff master deva/master действительно в некотором смысле "то, что он изменил", в том смысле, что это разница между вашим текущим HEAD и его ... Это не вранье.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...