пятница, 14 декабря 2012 г.

Бранчевание

В гите бранч - это легковестный обьект-ссылка, на какой-то комит. Поэтому в гите бранчевание такое скоростное, они ничего не копирует и не дублирует.
Создание ветки:
git branch {branch_name}
git checkout {branch_name}
или
git checkout -b {branch_name}


Любую таску удобнее всего делать в отдельном браче: Допустим в главном бранче мы имеем следующую историю разработки a-b-c Создали ветку:
git checkout -b bag1
Пофиксили, закомитить еще никто-ничего не успел в главную ветку, значит:
git checkout master
git merge bug1
На выходе красивая история a-b-c-d главной ветки.
Если же кто-то успел что-то закомитить(стало a-b-c-E), и мы не хотели бы делать автомердж и раздваивать историю, то:
git checkout master
git pull
# ага увидели что были комиты
git checkout bug1
git rebase master # пересадить историю изменений a-b-c-E
git checkout master
git merge bug1
Выходит, что на выходе получилась итория мастера a-b-c-E-D, D именно большая потому-что комит получается дублируется.

Если мы не создавали новую ветку и не успели сделать комит, а кто-то уже комитов наделал, то удобнее пользоваться стешем, который прячет изменения, а потом заливает их патчем не портя историю мерджем.

Комментариев нет:

Отправить комментарий