-
1. Почеток
- 1.1 За верзиска контрола
- 1.2 Кратка историја на Git
- 1.3 Основи на Гит
- 1.4 Командната линија
- 1.5 Инсталирање на Git
- 1.6 First-Time Git Setup
- 1.7 Getting Help
- 1.8 Заклучок
-
2. Основите на Git
-
3. Гранење во Git
- 3.1 Гранење објаснето
- 3.2 Основно разгранување и спојување
- 3.3 Branch Management
- 3.4 Работни процеси
- 3.5 Далечински гранки
- 3.6 Ребаза
- 3.7 Заклучок
-
4. Git на Сервер
- 4.1 Протоколите
- 4.2 Добивање на Git на сервер
- 4.3 Генерирање на вашиот SSH јавен клуч
- 4.4 Поставување на серверот
- 4.5 Гит демон
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Опции за домаќини на трети лица
- 4.10 Заклучок
-
5. Дистрибуиран Git
- 5.1 Дистрибуирани работни процеси
- 5.2 Придонес кон проект
- 5.3 Приватен мал тим
- 5.4 Одржување на проект
- 5.5 Заклучок
-
6. GitHub
-
7. Git Алатки
- 7.1 Revision Selection
- 7.2 Интерактивно стажирање
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Напредно спојување
- 7.9 Rerere
- 7.10 Дебагирање со Git
- 7.11 Submodules
- 7.12 Збивање
- 7.13 Заменување
- 7.14 Складирање на ингеренции
- 7.15 Заклучок
-
8. Персонализација на Git
- 8.1 Git Configuration
- 8.2 Git Атрибути
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Заклучок
-
9. Git и други системи
- 9.1 Git како Клиент
- 9.2 Мигрирање кон Git
- 9.3 Заклучок
-
10. Внатрешноста на Git
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Заклучок
-
A1. Appendix A: Git во други околини
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in Powershell
- A1.7 Заклучок
-
A2. Appendix B: Вметнување на Git во вашите апликации
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
-
A3. Appendix C: Git команди
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
3.4 Гранење во Git - Работни процеси
Работни процеси
Сега, кога имаш основи на разгранување и спојување, што може или треба да правиш со нив? Во овој дел, ќе покриеме некои општи работни процеси што ќе овозможат оваа лесна разгранетост, па можете да одлучите дали сакате да ги инкорпорирате во вашиот сопствен циклус на развој.
Долготрајни филијали
Бидејќи Git користи едноставна комбинација од три начини, спојувањето од една гранка во друго повеќе пати во текот на еден долг период обично е лесно да се направи. Ова значи дека можете да имате неколку гранки кои се секогаш отворени и што ги користите за различни фази од вашиот циклус на развој; можете редовно да се спојувате од некои од нив во други.
Многу програмери на Git имаат работен тек кој го прифаќа овој пристап, како што има само код кој е целосно стабилен во нивната "мастер" гранка - можеби само код кој е или ќе биде пуштен на слобода.
Тие имаат друга паралелна гранка наречена develop
или` next` дека работат или користат за тестирање на стабилноста - не секогаш мора да биде стабилна, но секогаш кога станува стабилна, таа може да се спои со господар
.
Се користи за да се повлече во гранките на теми (кратки живи гранки, како што е претходната гранка на iss53
), кога тие се подготвени, за да се осигураат дека ги поминат сите тестови и не воведуваат бубачки.
Во реалноста, зборуваме за совети кои се движат по линијата на обврските што ги правиш. Стабилните гранки се подалеку од линијата во вашата историја на извршување, а гранките на крварење се подалеку од историјата.
-
Линеарен поглед на разгранување на прогресивна стабилност image::images/lr-branches-1.png[A linear view of progressive-stability branching.]
Тоа е генерално полесно да се размислува за нив како работа силоси, каде што множествата на обврски дипломираат на постабилен силос кога тие се целосно тестирани.
-
"Сило" поглед на разгранување на прогресивна стабилност image::images/lr-branches-2.png[A “silo” view of progressive-stability branching.]
Можете да продолжите да го направите ова за неколку нивоа на стабилност.
Некои поголеми проекти, исто така, имаат "предложен" или "pu` (предложена надградба) гранка која има интегрирани гранки кои можеби не се подготвени да влезат во` следната` или майстер
филијалата.
Идејата е дека твоите гранки се на различни нивоа на стабилност; кога ќе стигнат до постабилно ниво, тие се спојуваат во гранката над нив.
Повторно, не постојат повеќе долготрајни гранки, но често е корисно, особено кога работите со многу големи или комплексни проекти.
Филијали на тема
Филијалата на теми, сепак, се корисни во проекти од било која големина. Филијалата на теми е краткотрајна гранка што ја креирате и користите за една посебна карактеристика или поврзана работа. Ова е нешто што веројатно никогаш не сте го направиле со VCS, бидејќи обично е премногу скапо за создавање и спојување на гранките. Но, во Git, заеднички е да создавате, да работите, спојтете и да бришете гранки неколку пати на ден.
Ова го видете во последниот дел со гранките iss53
и` hotfix` што ги креиравте.
Сте направиле неколку обврски на нив и ги избришавте директно откако ги споивте во вашата главна гранка.
Оваа техника ви овозможува брзо и целосно да се префрлите на контекстот - бидејќи вашата работа е одделена во силоси каде што сите промени во таа гранка имаат врска со таа тема, полесно е да се види што се случило за време на прегледот на кодот и слично.
Тука може да ги задржите промените со минути, денови или месеци и да ги споите кога ќе бидат подготвени, без оглед на редоследот на кој тие биле создадени или работеле.
Размислете за пример да направите некоја работа (на master
), разградувајќи се за некое прашање (` iss91`), работејќи на него за малку, разгранувајќи од втората гранка за да пробате друг начин за ракување со истото (iss91v2
), се враќате во вашата "господарска гранка" и работите таму некое време, а потоа разградувате таму за да направите некоја работа што не сте сигурни е добра идеја (dumbidea
branch).
Вашата историја на извршување ќе изгледа вака:
Сега, да речеме да одлучите дека ви се допаѓа второто решение за вашето прашање најдобро (iss91v2
); и ја покажавте dumbidea
гранката на твоите соработници, и излегува дека е гениј.
Можете да го исфрлите оригиналниот грант iss91
(губење на обврски` C5` и C6
) и да се спојат во другите две.
Вашата историја изгледа вака:
dumbidea
и` iss91v2`Ќе разгледаме повеќе можни работни процеси за вашиот Git проект во << ch05-distributed-git >>, па пред да одлучите која шема за разгранување ќе го користи вашиот следен проект, не заборавајте да го прочитате тоа поглавје.
Важно е да се сетите кога го правите сето ова дека овие гранки се целосно локални. Кога разгранувате и спојувате, сè се прави само во вашето складиште за Git - не се случува комуникација со серверот.