Ранее сегодня я обнаружил, что в моем репозитории git отсутствует код. Я знал некоторый недостающий текст и файл, в котором он был, поэтому я использовал git log -S'missingtext' /path/to/file
. Однако единственное, что вернулось, - это фиксация, в которой я добавил строку, содержащую недостающий текст. Текст не присутствовал в HEAD, а фиксация, которая добавила его, присутствовала в моей ветке, поэтому я знал, что один из коммитов в истории моего ветки должен удалить его, но он не отображался.
После некоторого ручного поиска оказалось, что строка была удалена случайно при разрешении конфликта для слияния. Поэтому мне интересно:
- Это причина, по которой кирка не может найти фиксацию, которая удалила строку?
- Как я мог найти, где "отсутствующий текст" был удален, не выкапывая историю вручную?
Любое понимание на # 1 было бы замечательным (я предположил, что git log -S
даст мне мой ответ), но мой реальный вопрос - это №2, так как я хотел бы избежать этого в будущем.