Анонимный пользователь
Дополнительно
Как увидеть изменения между двумя коммитами без промежуточных коммитов?
Как сделать так, чтобы git diff
показывал только разницу между двумя коммитами, исключая другие коммиты между ними?
602
12
вы можете просто передать 2 коммита в git diff, как:
Запрос разницы /между/ двумя коммитами без включения промежуточных коммитов не имеет смысла. Коммиты - это просто снимки содержимого репозитория; запрос о разнице между двумя коммитами обязательно включает их. Поэтому вопрос заключается в том, что же вы на самом деле ищете?
Как предложил Уильям, выборка "вишни" может дать вам дельту одного коммита, наложенного поверх другого. То есть:
Берётся коммит 'abcdef', сравнивается с его непосредственным предком, затем применяется эта разница поверх '012345'. Затем отображается это новое отличие - единственное изменение заключается в том, что контекст исходит от '012345', а не от 'abcdef' непосредственного предка. Конечно, могут возникнуть конфликты и т.д., так что в большинстве случаев это не очень полезный процесс.
Если вас интересует только сам abcdef, вы можете сделать следующее:
Это сравнит abcdef с его непосредственным предком, в одиночку, и обычно это то, что вам нужно.
И конечно
дает вам все различия между этими двумя коммитами.
Это поможет лучше понять, чего вы пытаетесь достичь - как я уже говорил, запрос разницы между двумя коммитами без того, что находится между ними, на самом деле не имеет смысла.
Чтобы сравнить два git-коммита 12345 и abcdef как патчи, можно использовать команду diff как
Пример:
Это показывает разницу в этом файле между этими коммитами.
Допустим, у вас есть это
И вы хотите убедиться, что
A
совпадает сA0
.Это поможет:
Для проверки полных изменений:
Для проверки только измененных / добавленных / удаленных файлов:
ПРИМЕЧАНИЕ : Для проверки diff без фиксации между ними вам не нужно помещать идентификаторы коммита.
Предположим, вы хотите увидеть разницу между коммитами 012345 и abcdef. Следующее должно сделать то, что вы хотите:
Что насчет этого?
Удобно просто трубить его до меньшего, если вы хотите сравнить много разных различий на лету.
Мои настройки
alias
в файле~/.bashrc
дляgit diff
:Английский не мой родной язык, извините за ошибки при наборе текста
Начиная с Git 2.19, вы можете просто использовать:
`
git range-diff rev1...rev2
или `
git range-diff rev1 ~..rev1 rev2 ~..rev2
Я написал сценарий, который отображает разницу между двумя коммитами, хорошо работает на Ubuntu.
https://gist.github.com/jacobabrahamb4/a60624d6274ece7a0bd2d141b53407bc
Мои настройки
alias
в файле~/.zshrc
дляgit diff
:Спасибо @Jinmiao Luo