Я использую Git в течение примерно 7 лет. Несколько дней назад я нашел поведение, которое меня удивило. Я нашел git log
, git blame
и git bisect
, чтобы показать это странное поведение. A friend Сообщите мне о --full-history
флагом git log
, который решил мою проблему. Я хочу знать, для моего собственного образования, есть ли эквивалентное исправление для git blame
и git bisect
.Git: Эквивалент `--full-history` для` git bisect` и `git blame`
Вы можете увидеть проблему для себя с этим репо: https://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z
Вот его журнал:
$ git log --graph
* commit b7a8d7aa001d06eb7491ab5fb447a8dd3aa421a8
| Author: Ram Rachum <[email protected]>
| Date: Tue Apr 19 17:45:01 2016 +0300
|
| adding more to some-file
|
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: 2413945 3068c7d
| | Author: Ram Rachum <[email protected]>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| | Merge branch 'master' into development
| |
| * commit 3068c7d2548f1798b6840f73b13a649937339f28
| | Author: Ram Rachum <[email protected]>
| | Date: Tue Apr 19 16:02:27 2016 +0300
| |
| | Adding sugar to coffee
| |
* | commit 24139451ab954b1f0a9ef616775a3dba0ac81669
|/ Author: Ram Rachum <[email protected]>
| Date: Tue Apr 19 16:01:28 2016 +0300
|
| Creating some-file
|
* commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <[email protected]>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
В самом первом коммит, был добавлен файл coffee
. В commit 3068c7d
я добавил строку «sugar» в файл coffee
. Но затем я объединил эту ветвь в ветку development
, и в этом слиянии была допущена ошибка, и линия «сахар» была удалена, оставив coffee
пустым. Затем была добавлена другая фиксация b7a8d7a
, создающая несвязанное изменение.
Теперь я смотрю на свой кофе и обнаруживаю, что в нем нет сахара. Я отчетливо помню, как добавлял сахар к моему кофе. Я бегу git log coffee
, и получить этот результат:
$ git log coffee
commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <[email protected]>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
Вот и все. git log
не показывает ни мою первоначальную фиксацию, которая добавила сахара, ни слияние, которое его удалило. Два очень важных коммита, которые отсутствуют.
Я был расстроен около часа этой проблемой, потому что это произошло на огромном предприятии-репо, где совершается гораздо труднее найти вручную.
Я также пробовал использовать git bisect
и git blame
для фиксации двух коммитов, но оба этих инструмента игнорировали две коммиты. git bisect
указал мне на неправильную фиксацию после того, как я закончил делать все действия git bisect bad
и git bisect good
.
Тогда, как я уже сказал в начале, друг указал мне в стороне --full-history
флага:
$ git log --full-history --graph coffee
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: cf02fbb 3068c7d
| | Author: Ram Rachum <[email protected]>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| | Merge branch 'master' into development
| |
| * commit 3068c7d2548f1798b6840f73b13a649937339f28
|/ Author: Ram Rachum <[email protected]>
| Date: Tue Apr 19 16:02:27 2016 +0300
|
| Adding sugar to coffee
|
* commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <[email protected]>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
Это делает меня счастливым, потому что он показывает два соответствующих фиксации, одну добавления сахара и слияние, которые удалены Это. Поэтому моя проблема решена. Но я действительно хотел бы знать, как сделать git bisect
и git blame
вести себя хорошо. Кто-нибудь знает?
'мерзавец blame' вполне может позволить' --full-истории 'прямо здесь (я бы попробовал его на вашем репо, но я не могу распаковать файл 7zip). Bisect может отказаться от слияния, поскольку он сам обрабатывает их. В общем, вы не видите их, потому что 'git rev-list' пропускает много слияний: см. Обсуждение документации по TREESAME и обработке слияния (и как --full-history изменяет это). – torek
@torek Я попробовал это сейчас, 'виноват', кажется, принимает флаг, но похоже, что он ничего не меняет. Попытка «git wame --full-history» и «git wame --full-history -reverse» не показала никаких результатов. Относительно того, что я не могу открыть 7z-архивы, здесь он находится в почтовом индексе: https://dl.dropboxusercontent.com/u/1927707/foo.zip –
@torek Также пробовал «git wame --reverse HEAD ^^^ .. HEAD --full-history coffee', все еще ничего не получая. –