Настоящая разница между двумя историями GIT (или хэши / коммиты SHA)

Я вытащил и объединил код.

Я хочу увидеть изменения, которые будут применены к коду.

К сожалению, все перечисленные ниже также показывают изменения, которые выполняет другой разработчик (эти изменения были перенесены некоторое время назад)

 git diff origin / ContactList ... ContactList
 git diff origin / ContactList..ContactList
 git diff origin / ContactList ... HEAD
 git diff origin / ContactList..HEAD

Другими словами, я клонировал репо. Я потянул во время процесса разработки (я действительно хотел быть в курсе последних событий). Теперь я хочу видеть только мои изменения.

PS: Я не создал другую ветку

Solutions Collecting From Web of "Настоящая разница между двумя историями GIT (или хэши / коммиты SHA)"

git diff показывает вам именно то, что вы просите показать, что является разницей между двумя коммитами, которые вы им даете.

Чтобы узнать, как увидеть «только ваши собственные изменения», вам нужно понять, где в истории слияния происходят входящие изменения. Это легко сделать, когда вы смотрите на свою историю в каком-то графическом представлении, например, используя gitk или git log --graph --oneline --decorate или какой-либо другой браузер истории, который вам нравится.

Предполагая, что у вас есть «простая» ситуация, когда две параллельные линии развития (ваш и восходящий) сливаются, ваша история будет выглядеть примерно так:

 ... <- A <- B <- U1 <- U2 <- ... <- Un <-+- C <-- D <-- .... ^ | `--- Y1 <- Y2 <- ... <- Ym <-' 

В этом представлении стрелки идут от дочерних коммитов к их родителям, поэтому на левой стороне старшие коммиты, а с правой стороны – более новые. (Ваш кончик ветки находится где-то справа от C). Обозначения U* представляют собой восходящие изменения, а Y* фиксирует ваши собственные, хотя это не очень важно.

Имена, используемые для этих коммитов, являются символическими; когда вы на самом деле называете diff в своем репо, вам нужно будет использовать фактические имена ссылок (теги или ветви, если они существуют в нужном месте, или передать SHA в противном случае).

Чтобы просмотреть все накопленные изменения, которые произошли в вашей собственной части слияния ( Y* совершает), вы можете использовать

 git diff B Ym 

То есть, разница между базой слияния (последняя общая фиксация) и вашей последней фиксацией перед слиянием .

То, как вы его пытались, включало фактическое слияние ( C в этом примере), которое уже содержит все восходящие изменения , потому что к этому моменту слияние уже произошло (это буквально точка слияния).

Разница где-то перед слиянием и где-то после него (включая фиксацию слияния) будет включать все изменения обеих сторон слияния.