Для змін, прихованих у комісіях злиття
Об'єднання об'єднань автоматично приховують їх зміни від виходу журналу Git. І пікакс, і зворотна кримінальна зміна не знайшли змін. Тому рядок, який я хотів, був доданий і пізніше видалений, і я хотів знайти злиття, яке його видалило. Історія файлів git log -p -- path/file
лише показала, що він додається. Ось найкращий спосіб, який я знайшов:
git log -p -U9999 -- path/file
Шукайте зміни, а потім шукайте "^ здійснити" назад - перша "^ фіксація" - це фіксація, де в останньому файлі був цей рядок. Друга "^ фіксація" - це після її зникнення. Другим комітом може бути той, який його видалив. Ціль -U9999
призначена для відображення всього вмісту файлу (після кожної зміни файлу), припускаючи, що ваші файли мають максимум 9999 рядків.
Знаходить будь-які пов'язані злиття за допомогою грубої сили (різниться кожен можливий злиття з його першим батьком, проти тонн комітетів)
git log --merges --pretty=format:"git diff %h^...%h | grep target_text" HEAD ^$(git merge-base A B) | sh -v 2>&1 | less
(Я намагався більше обмежити фільтр ревізії, але я зіткнувся з проблемами і не рекомендую цього. Зміни додавання / видалення, які я шукав, були на різних гілках, які були об'єднані в різний час, а A ... B не включав коли зміни насправді об'єдналися в основну лінію.)
Покажіть дерево Git із цими двома комітами (і багато складної історії Git вилучено):
git log --graph --oneline A B ^$(git merge-base A B)
(A - це перший перше місце, B - друге вище)
Показати історію A та історію B мінус історію як A, так і B.
Альтернативна версія (схоже, показує шлях більш лінійно, а не звичайне дерево історії Git - однак я віддаю перевагу звичайному дереву історії git):
git log --graph --oneline A...B
Три, а не дві крапки - три крапки означає "r1 r2 - not $ (git merge-base - всі r1 r2). Це безліч комітетів, які доступні або з одного з r1 (ліва сторона), або r2 (праворуч стороні), але не з обох ". - джерело: "людина gitrevision"
git log -S<string> /path/to/file
хоче-c
або ,-cc
а також показати абсорбцію при злитті (конфлікти)