2016-08-24 2 views
0

Я работал на своем локальном компьютере, рефакторинг вещей (совершает A, B, C, D), я всегда делал вывод, что выходные файлы не меняются. После слияния (commit I) я обнаружил, что выходные файлы изменены.Как найти, что зафиксировать содержать ошибку

Как я могу найти, что именно совершить (E, F, G, H) является причиной изменения?

A->B->C->D -I 

\E->F->G->H/ 

Спасибо!

+0

В выводе 'git log --name-only' должны отображаться имена файлов, которые были изменены. –

ответ

3

Вы после git bisect. Вы даете ему плохую и хорошую ревизию, а затем проверяете середину между ними, ждет, когда вы скажете, действительно ли это коммит является хорошим, плохим или неизвестным (например, потому что он не компилируется в этом фиксации), а затем проверяет следующей середины оставшейся половины. Этот алгоритм бинарного поиска очень быстро даст вам фиксацию, которая изменила результат.

Кроме того, если вы можете автоматизировать процесс определения, будут ли выходные файлы изменены с помощью сценария, вы можете дать этому сценарию git bisect, и он автоматически запустит сценарий для определения хорошего, плохого или неизвестного, так что вы можете просто ждать результат.

+0

Это кажется излишним. Почему бы не просто проанализировать вывод 'git log'? –

+0

@OliverCharlesworth, потому что он сказал, что коммиты слишком велики, чтобы выглядеть виноватым, и он не знает, какие файлы изменились, но только то, что выход изменяется. Также есть, возможно, более 4 коммитов, о которых идет речь, и выше был только пример. Bisect - это именно то, что нужно для его запроса. :-) – Vampire

+0

Ах, я, возможно, неправильно истолковал «выходные файлы» - изначально предполагалось, что он имел в виду, что некоторые файлы с контролируемым источником изменились. Конечно, очень вероятно, что он имеет в виду результаты какого-то теста, и в этом случае вы совершенно правы. –

 Смежные вопросы

  • Нет связанных вопросов^_^