найти коммит git merge, который удаляет файл? - PullRequest
0 голосов
/ 17 января 2019

Я недавно посмотрел историю файла с

 git log --full-history -- file

и он обнаружил один коммит, добавляющий этот файл, и несколько коммитов слияния без указания, что они удалили файл. Еще в HEAD этот файл не существовал. После некоторых поисков я обнаружил, что файл был удален как часть одного из перечисленных коммитов слияния (воссоздав слияния и сравнив результат с оригиналом). Для примера возьмем историю, созданную следующими командами оболочки:

$ git init
Initialized empty Git repository in $PWD/.git/
$ echo content1 > file1
$ git add file1
$ git commit -m commit1
...
$ echo content2 > file2
$ git add file2
$ git commit -m 'commit2'
...
$ git checkout @~
...
$ git merge --no-ff --no-commit @{-1}
Automatic merge went well; stopped before committing as requested
$ git rm -f file2
rm 'file2'
$ git commit --no-edit

Теперь git log --full-history -- file2 перечисляет оба соответствующих коммита, но, глядя на коммит слияния (например, с помощью git show), не очевидно, что file2 исчезло там.

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

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