Знайшов ваше запитання під час збивання з горіхів сам, і поки що жодної відповіді було недостатньо. Я знайшов спосіб знайти конкретний коміт, але він відображається лише при різниці між цими комітами. Я не можу пояснити, чому git працює так, але я детально обговорюю свої висновки:
Пояснення проблеми
За допомогою '-S' або '-G' ми можемо знайти лише те місце, де його було додано , а не видалено. Для деталізації:
$ git log --format="%H" -S"127.0.124.1"
857aa361293abbb351d6d6becaa55ec011aebc93
$ git show 857aa361293abbb351d6d6becaa55ec011aebc93 | grep "127.0.124.1"
+ return "127.0.124.1", nil
Крок за кроком
Я отримав ідею від miku86 на dev.to . Спочатку ми намагаємось знайти останній коміт, який існував у нашому рядку:
$ git --no-pager grep "127.0.124.1" $(git rev-list --all)
ba0b2d348f4e33857c96acf5a6231cf9d89ddb1b:some/file.go: return "127.0.124.1"
0d19a98d6434da0b4b5cc2bac190b9b1de36d992:some/file.go: return "127.0.124.1"
84274c5712bacbbee1dca5567cef77a2b6f356d2:some/file.go: return "127.0.124.1"
42e692643ff8a5dce7a89e985062b3d38c60fcc0:some/file.go: return "127.0.124.1"
Що призводить до ba0b2d348f4e33857c96acf5a6231cf9d89ddb1bнашого шуканого коміту. Далі ми намагаємось знайти наступний коміт після цього до HEAD:
$ git rev-list ba0b2d348f4e33857c96acf5a6231cf9d89ddb1b..
[...]
c82d040f7be2f8955075655843400a36ceb75303
aa0568b543db57564770d73e736aaf50fd749fb4
dde61dae0cf648e7f4dd8a5c194bcf9be1745793
Що саме dde61dae0cf648e7f4dd8a5c194bcf9be1745793, оскільки це останній у цьому списку, який ми шукаємо.
Отже, ці засоби dde61dae0cf648e7f4dd8a5c194bcf9be1745793повинні містити це видалення?
$ git show dde61dae0cf648e7f4dd8a5c194bcf9be1745793 | grep "127.0.124.1"
Ні?!? Ну яка різниця тоді від цього до нашого першого знайденого коміту?
$ git diff ba0b2d348f4e33857c96acf5a6231cf9d89ddb1b..dde61dae0cf648e7f4dd8a5c194bcf9be1745793 | grep "127.0.124.1"
- return "127.0.124.1"
Ось ми його і знайшли. Це дивно. Але оскільки ми використовуємо різницю між комітами, чи я помилився, і між ними є інші коміти?
$ git log --pretty=oneline ba0b2d348f4e33857c96acf5a6231cf9d89ddb1b..dde61dae0cf648e7f4dd8a5c194bcf9be1745793
dde61dae0cf648e7f4dd8a5c194bcf9be1745793 network interface
Ні, ми, здається, не помилилися. Це дивно. Але так, ось як далеко я дійшов, щоб знайти конкретне місце змін, де рядок зник.
Додатково
Я можу підтвердити , використовуючи , git bisectщо dde61dae0cf648e7f4dd8a5c194bcf9be1745793це Комміт я шукав.
$ git bisect bad
dde61dae0cf648e7f4dd8a5c194bcf9be1745793 is the first bad commit
commit dde61dae0cf648e7f4dd8a5c194bcf9be1745793
Author: ...
Date: Fri Oct 18 11:04:26 2019 +0200
network interface
:100644 100644 242e81c363c2c7069efb018821821553b98f2c97 416c27f5351a9d92a6914b34846c6de51d83dd0d M go.mod
:040000 040000 715c3ab5b3f4579d8054618f1e11fc05fb425324 e6731408a1ac1ff0428128ccbb1fbfaad4c789ab M network
[...]
log, він повинен бути видимим уshow... так? А може, я неправильно розумію питання.