LINUX.ORG.RU

Как лучше действовать в Git при исправлении бага?

 


0

1

Например, выяснилось, что баг был внесен 5-ю коммитами ранее и теперь содержится во всех этих коммитах ветки master. Допустим, что откатываясь назад на эти коммиты, мы не хотим вновь натыкаться на этот баг. Как лучше сделать:

  1. откатиться назад на 5-ый коммит ветки master, исправить его, закоммиттить в ветку bugfix, смеджить в master. Так по тянущейся веточке будет видно, когда возник баг, в скольких коммитах мастера он присутствовал, и при откате к этим 5 коммитам мы сможем быстро пофиксить этот баг, просто смерджив с коммитом bugfix.
  2. никуда не откатываться, а исправить прямо из последней версии как отдельный коммит. Меньше делов в целом. Может еще какие есть методы?

Вариант2. Если важно сохранить информацию о том, начиная с какого коммита баг присутствовал в ветке - добавить запись об этом в сообщение исправляющего коммита.

trex6 ★★★★★ ()

Второй вариант. В master’е aka upstream’е у многих проектов вообще может быть ситуация, когда всё нафиг разломано и ничего не собирается. Для отметок каких-то стабильных состояний есть те же теги.

EXL ★★★★★ ()

В коммите написать «fix bug introduced in <commit id>».

X512 ★★★ ()

Может еще какие есть методы?

Можно изменить историю командой git rebase -i <hash коммита до того, в котором накосячили> и после всего git push -f. Но делать так с бранчами, которыми пользуются другие люди (master - как раз такой бранч), не стоит, легко нарваться на проблемы. Если же репозиторий используется лишь тобой, то можно и так.

hummer ()

Какую-то херню тебе тут пишут. Впрочем, ты херню и спрашиваешь.

Подход «как лучше» не состоятелен по определению вне контекста. Контекст ты не привёл. Все эти модели ветвления выбираются исходя только из одного условия - сколько изменение должно стоять в тесте перед тем как попасть на прод. Всё. Твоя проблема в том, что ты услышал где-то про «лучше», нихрена не понял и побежал «использовать» это.

Так по тянущейся веточке будет видно, когда возник баг, в скольких коммитах мастера он присутствовал

Никакие веточки для этого не нужны, всё видно в истории. git log { -G | -S | -L } тебе помогут.

Может еще какие есть методы?

Если имелся ввиду метод из методички(а именно так и было, судя по твоей проблеме) то да - как минимум десяток «методов» есть.

cloun1901 ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.