-
1. Почетак
- 1.1 О контроли верзије
- 1.2 Кратка историја програма Гит
- 1.3 Шта је Гит?
- 1.4 Командна линија
- 1.5 Инсталирање програма Гит
- 1.6 Подешавања за први пут
- 1.7 Тражење помоћи
- 1.8 Резиме
-
2. Основе програма Гит
- 2.1 Прављење Гит репозиторијума
- 2.2 Снимање промена над репозиторијумом
- 2.3 Преглед историје комитова
- 2.4 Опозив
- 2.5 Рад са удаљеним репозиторијумима
- 2.6 Означавање
- 2.7 Гит алијаси
- 2.8 Резиме
-
3. Гранање у програму Гит
- 3.1 Укратко о гранању
- 3.2 Основе гранања и спајања
- 3.3 Управљање гранама
- 3.4 Процеси рада са гранањем
- 3.5 Удаљене гране
- 3.6 Ребазирање
- 3.7 Резиме
-
4. Гит на серверу
- 4.1 Протоколи
- 4.2 Постављање програма Гит на сервер
- 4.3 Генерисање јавног SSH кључа
- 4.4 Подешавање сервера
- 4.5 Гит демон
- 4.6 Паметан HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Опције за хостовање које нуде трећа лица
- 4.10 Резиме
-
5. Дистрибуирани Гит
-
6. GitHub
-
7. Гит алати
- 7.1 Избор ревизија
- 7.2 Интерактивно стејџовање
- 7.3 Скривање и чишћење
- 7.4 Потписивање вашег рада
- 7.5 Претрага
- 7.6 Поновно исписивање историје
- 7.7 Демистификовани ресет
- 7.8 Напредно спајање
- 7.9 Rerere
- 7.10 Отклањање грешака са програмом Git
- 7.11 Подмодули
- 7.12 Паковање
- 7.13 Замена
- 7.14 Складиште акредитива
- 7.15 Резиме
-
8. Прилагођавање програма Гит
- 8.1 Конфигурисање програма Гит
- 8.2 Гит атрибути
- 8.3 Гит куке
- 8.4 Пример полисе коју спроводи програм Гит
- 8.5 Резиме
-
9. Гит и остали системи
- 9.1 Гит као клијент
- 9.2 Мигрирање на Гит
- 9.3 Резиме
-
10. Гит изнутра
- 10.1 Водовод и порцелан
- 10.2 Гит објекти
- 10.3 Гит референце
- 10.4 Pack фајлови
- 10.5 Рефспек
- 10.6 Протоколи за пренос
- 10.7 Одржавање и опоравак податак
- 10.8 Променљиве окружења
- 10.9 Резиме
-
A1. Додатак А: Програм Гит у другим окружењима
- A1.1 Графички интерфејси
- A1.2 Гит у Visual Studio
- A1.3 Гит у Visual Studio Code
- A1.4 Гит у IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Гит у Sublime Text
- A1.6 Гит унутар Bash
- A1.7 Гит у Zsh
- A1.8 Гит у Powershell
- A1.9 Резиме
-
A2. Додатак Б: Уграђивање програма Гит у ваше апликације
- A2.1 Гит из командне линије
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Додатак В: Гит команде
- A3.1 Подешавање и конфигурација
- A3.2 Набављање и креирање пројеката
- A3.3 Основно снимање
- A3.4 Гранање и спајање
- A3.5 Дељење и ажурирање пројеката
- A3.6 Инспекција и поређење
- A3.7 Отклањање грешака
- A3.8 Крпљење
- A3.9 Имејл
- A3.10 Спољни системи
- A3.11 Администрација
- A3.12 Водоводне команде
3.4 Гранање у програму Гит - Процеси рада са гранањем
Процеси рада са гранањем
Сада када знате основе о гранама и њиховом спајању, шта можете и шта треба да радите са њима? У овом одељку ћемо се позабавити неким уобичајеним процесима рада које омогућава овакав прост начин гранања у програму Гит, тако да можете одлучити желите ли да их укључите у сопствени развојни циклус.
Дуготрајне гране
Пошто програм Гит користи просто троструко спајање, у општем случају спајање једне гране у другу више пута током дужег временског периода не представља неки проблем. То значи да можете имати неколико грана које су увек отворене и које користите за различите етапе развојног циклуса; можете редовно да спајате неке од њих у остале.
Многи Гит програмери користе овакав начин рада, односно имају кôд који је у потпуности стабилан у master
грани — то је вероватно и једини кôд који је раније био објављен, или који ће се уопште и објављивати у будућности.
Имају остале паралелне гране које се зову develop
или next
у којима раде или које користе за тестирање стабилности — тако кôд не мора увек да буде стабилан, али кадгод дође у стабилно стање, може да се споји са master
граном.
Користе се да се у њих повуку тематске гране (које немају дуги животни век попут оне iss53
коју смо користили раније) када буду спремне, како би се потврдило да пролазе све неопходне тестове и да не уводе нове багове.
У стварности, овде се ради о показивачима који се померају дуж линије комитова које правите. Стабилне гране се налазе даље низ линију ваше историје комитова, гране најновијег развоја су даље при врху историје.
У општем случају је једноставније размишљати о њима као о радним силосима, где скупови комитова сазревају ка стабилнијем силосу онда када се у потпуности тестирају.
Ово можете наставити да радите за неколико нивоа стабилности.
Неки већи пројекти имају и грану proposed
или pu
(proposed updates) која интегрише гране које још увек нису спремне да се преместе у next
или master
грану.
Идеја је да се гране налазе на разним нивоима стабилности; када досегну стабилнији ниво, спајају се у грану изнад њих.
Ипак, постојање више дуготрајних грана није неопходно, мада је често од користи, поготово када се ради о веома великим или сложеним пројектима.
Тематске гране
Тематске гране су, међутим, корисне за пројекте било које величине. Тематска грана је грана кратког животног века коју креирате и користите само за једну одређену могућност или рад који је у вези са нечим. Ово је нешто што вероватно никад раније нисте радили са VCS системом зато што је креирање и управљање гранама у општем случају превише скупо. Али у програму Гит је уобичајено креирање грана, рад у њима, спајање и брисање грана и неколико пута током дана.
Видели сте ово у преходном одељку са iss53
и hotfix
гранама које сте направили.
Одрадили сте неколико комитова у њима и обрисали сте их непосредно након спајања у главну грану.
Ова техника омогућава да брзо и потпуно мењате контекст у коме радите — пошто је рад подељен у силосе где све промене у једној грани имају везе само са том темом, приликом каснијег прегледа је лакше видети шта се десило са кодом.
Промене можете ту да задржите минутима, данима или месецима, па их спојите када буду спремне, без обзира на редослед у којем су креиране и у којем је рађено на њима.
Размотрите пример где радите неки посао (у master
грани), разгранате се на тикет (iss91
), неко време радите на томе, разгранате још једну грану у којој пробате да решите исту ствар на други начин (iss91v2
), враћате се назад на master
грану у којој радите још неко време, а онда одатле правите грану у којој радите неке ствари за које нисте сигурни да су добра идеја (грана dumbidea
).
Ваша историја комитова ће изгледати овако некако:
Рецимо да сада одлучите да вам се друго решење проблема више свиђа (iss91v2
), а када својим сарадницима покажете dumbidea
грану, испостави се да је идеја заправо била генијална.
Можете да одбаците оригиналну iss91
грану (чиме губите комитове c5
и c6
) и спајате друге две.
Историја сада изгледа овако:
dumbidea
и iss91v2
Детаљније ћемо обрадити остале могуће процесе рада вашег Гит пројекта у Дистрибуирани Гит, тако да обавезно прочитајте и то поглавље пре него што се одлучите какву шему гранања ћете користити у свом наредном пројекту.
Битно је запамтити да су гране потпуно локалне док радите све ово. Док правите гранате и спајате их, све што радите се дешава само у вашем Гит репозиторијуму - не постоји никакав вид комуникације са сервером.