Как просмотреть изменения между началом и окончанием в файле, который подвергся многочисленным коммитам? - PullRequest
0 голосов
/ 25 февраля 2020

Допустим, файл подвергается ряду модификаций и изменений.

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

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

 - Start Here.
 - Edit & Commit 1
 - Edit & Commit 2
 - Edit & Commit 3
   :
   :
 - Edit & Commit n
 - Final Commit

Используя gitk, он перечисляет каждый отдельный коммит. Обычно это хороший инструмент, но в этом конкретном сценарии c каждый Edit & Commit может добавить новый код и удалить код, выполненный из предыдущего коммита. Работа в сценарии для извлечения кода является громоздкой, поскольку вы можете обнаружить, что тот же самый код добавляется / удаляется / перемещается / добавляется где-то еще ......

Все, что я хочу увидеть, - это До (Начать здесь) и после (Final Commit) и не заботятся о различных коммитах.

Имеется ли инструмент, позволяющий мне просто просмотреть изменения между «Start HERE» и «Final Commit»?

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

gitk имеет действие «Пометить этот коммит»,

После того, как вы пометили первый коммит, вы увидите дополнительные действия при втором коммите, такие как: «Сравнить с помеченным коммитом».


В более общем плане: вы ищете способ просмотра различий между двумя коммитами («Start HERE» и «Final Commit»).

Существует множество других способов сделать это:

  • в терминале:

    git diff <commitA> <commitB> -- some/file
    
  • открытие графического инструмента сравнения:

    git difftool <commitA> <commitB> -- some/file
    # look for 'diff.tool' in 'git help config' for details on difftool
    
  • все gui интерфейсы для git (например, gitk, но также git gui, git-kraken, git-extensions et c ...) имеют возможность сравнить два коммита,

    либо с помощью «mark first commit» / «diff with second commit» (как в gitk),
    или путем выбора двух коммитов (ctrl + Click) и действия «diff selected commits»


Чтобы указать gitk сосредоточиться на определенном наборе файлов (или отдельном файле):

вы можете запустить gitk с параметрами фильтрации:

gitk -- some/files

или, онк e gitk открыто, вы можете выполнить действие «Вид> Новый вид ...»,
откроется диалоговое окно с текстовым полем «Введите файлы и каталоги для включения, по одному на строку» в нижней части.

0 голосов
/ 26 февраля 2020

Вот что я должен был сделать. Не уверен, что это то, о чем упоминали вышеупомянутые посты или нет.

 - My Final Edit & Commit 
 - My Edit & Commit 2
 - My Initial Edit & Commit 1    <----Don't use this.
 - Someone Else Edit & Commit    <----Use this as the first commit
 - Original File 

Первоначально я делал следующий diff, и он не показывал мне все изменения.

 git diff <My Initial Edit & Commit 1> <My Final Edit & Commit> <myFile>

Что мне нужно было сделать:

 git diff <Someone Else Edit & Commit> <My Final Edit & Commit> <myFile>

Как только я сделал коммит до моего первого коммита, я смог увидеть все изменения в одной сводке.

Не уверен, действительно ли это было сказано выше.

Кроме того, если файл содержит только мои 3 изменения и никаких изменений ранее или не ссылается, я обнаруживаю исходную проблему - не вижу все изменения.

...