-
1. Начало
- 1.1 За Version Control системите
- 1.2 Кратка история на Git
- 1.3 Какво е Git
- 1.4 Конзолата на Git
- 1.5 Инсталиране на Git
- 1.6 Първоначална настройка на Git
- 1.7 Помощна информация в Git
- 1.8 Обобщение
-
2. Основи на Git
-
3. Клонове в Git
-
4. GitHub
-
5. Git инструменти
- 5.1 Избор на къмити
- 5.2 Интерактивно индексиране
- 5.3 Stashing и Cleaning
- 5.4 Подписване на вашата работа
- 5.5 Търсене
- 5.6 Манипулация на историята
- 5.7 Мистерията на командата Reset
- 5.8 Сливане за напреднали
- 5.9 Rerere
- 5.10 Дебъгване с Git
- 5.11 Подмодули
- 5.12 Пакети в Git (Bundling)
- 5.13 Заместване
- 5.14 Credential Storage система
- 5.15 Обобщение
-
6. Настройване на Git
- 6.1 Git конфигурации
- 6.2 Git атрибути
- 6.3 Git Hooks
- 6.4 Примерна Git-Enforced политика
- 6.5 Обобщение
-
7. Git и други системи
- 7.1 Git като клиент
- 7.2 Миграция към Git
- 7.3 Обобщение
-
8. Git на ниско ниво
- 8.1 Plumbing и Porcelain команди
- 8.2 Git обекти
- 8.3 Git референции
- 8.4 Packfiles
- 8.5 Refspec спецификации
- 8.6 Транспортни протоколи
- 8.7 Поддръжка и възстановяване на данни
- 8.8 Environment променливи
- 8.9 Обобщение
-
9. Приложение A: Git в други среди
-
10. Приложение B: Вграждане на Git в приложения
- 10.1 Git от команден ред
- 10.2 Libgit2
- 10.3 JGit
- 10.4 go-git
- 10.5 Dulwich
-
A1. Приложение C: Git команди
- A1.1 Настройки и конфигурация
- A1.2 Издърпване и създаване на проекти
- A1.3 Snapshotting
- A1.4 Клонове и сливане
- A1.5 Споделяне и обновяване на проекти
- A1.6 Инспекция и сравнение
- A1.7 Дебъгване
- A1.8 Patching
- A1.9 Email команди
- A1.10 Външни системи
- A1.11 Административни команди
- A1.12 Plumbing команди
A1.4 Приложение C: Git команди - Клонове и сливане
Клонове и сливане
Няколко команди имплементират по-голямата част от branching и merging функционалностите в Git.
git branch
git branch
по същество е инструмент за управление на клоновете в Git.
Може да създава, изброява, изтрива и преименува клонове.
Повечето от написаното в Клонове в Git е посветено на branch
командата и тя се използва в цялата глава.
Първо я представихме в Създаване на ново разклонение и преминахме през повечето ѝ възможности (печатане и изтриване) в Управление на клонове.
В Проследяване на клонове използваме git branch -u
за да укажем tracking клон.
Последно, погледнахме какво прави тя на заден план в Git референции.
git checkout
Командата git checkout
се използва за превключване на клонове и за извличане на съдържание в работната директория.
За пръв път я срещнахме в Превключване на разклонения заедно с командата git branch
.
Видяхме как да я използваме за да започнем да следим клонове с флага --track
в Проследяване на клонове.
Използваме я за повторно въвеждане на конфликти във файлове с опцията --conflict=diff3
в Извличане на конфликти.
Навлизаме в по-дълбоки подробности за връзката ѝ с git reset
в Мистерията на командата Reset.
Детайли по имплементацията ѝ показахме в HEAD.
git merge
Инструментът git merge
се използва за сливане на един или повече клонове в клона, който е текущо извлечен.
След сливането, текущият клон се премества напред с резултата от сливането.
Командата git merge
видяхме за пръв път в Основи на разклоняването.
Въпреки, че се използва на различни места в книгата, тя има много малко на брой вариации — в общи линии само git merge <branch>
с името на единичен клон, който искаме да слеем.
Видяхме как се прави squashed сливане (където Git слива работата, но го прави под формата на единичен обединяващ къмит, вместо да записва цялата история на сливащия се клон) в края на [_public_project].
Преминахме през доста детайли по merge процеса и самата команда, включително -Xignore-space-change
командата и флага --abort
за отказ на проблематично сливане в Сливане за напреднали.
Видяхме как да проверяваме сигнатури преди сливане, ако проектът ви използва GPG подписване в Подписване на къмити.
Накрая научихме за Subtree сливането в Subtree сливане.
git mergetool
Командата git mergetool
служи за стартиране на външен merge helper в случай, че не харесвате вграденото сливане в Git.
Погледнахме го набързо в Конфликти при сливане и навлязохме в детайли за това как да имплементирате собствен външен merge tool във Външни Merge и Diff инструменти.
git log
Командата git log
се използва за показване на достъпна записана история на проект от най-късно записания къмит snapshot назад.
Тя по подразбиране ще покаже само историята на текущия клон, но може да ѝ се подадат различни или дори повече heads или клонове, от които да трасира.
Също често се използва за показване на разлики между два или повече клона на ниво къмит.
Тази команда се среща в почти всяка глава в книгата за демонстрация на различни аспекти от историята на проект.
Представихме я първо в Преглед на историята на действията.
Там разгледахме аргументите ѝ -p
и --stat
за да получим представа какво е било въведено във всеки къмит, както и --pretty
и --oneline
опциите за да видим историята по-стегнато заедно с някои прости опции за филтриране по дата и автор.
В Създаване на ново разклонение я използваме с аргумента --decorate
за лесно визуализиране на това къде сочат указателите на клоновете, а също и с опцията --graph
за да видим как изглеждат разклонени истории.
В [_private_team] и Обхвати от къмити обяснихме синтаксиса branchA..branchB
за да инструктираме git log
да намери кои къмити са уникални за даден клон в сравнение с друг клон.
В Обхвати от къмити разгледахме това сравнително обстойно.
В Дневник на сливанията и Три точки използваме формата branchA…branchB
и --left-right
синтаксиса, за да видим какво е налично в един от двата клона, но не и в двата едновременно.
В Дневник на сливанията също видяхме как да използваме --merge
опцията за помощ при изследване на merge конфликти, както и --cc
опцията за търсене на merge commit конфликти в историята.
В RefLog съкратени имена демонстрирахме флага -g
за да видим Git reflog-а през този инструмент вместо да правим branch traversal.
В Търсене използвахме флаговете -S
и -L
за търсене на неща, които са се случили хронологично в кода във времето, например историята на дадена функция.
В Подписване на къмити виждаме как да използваме --show-signature
за да добавим верификационен стринг към всеки къмит в изхода от git log
в зависимост от това дали той е валидно подписан или не.
git stash
Командата git stash
се използва за временно съхранение/скриване на некъмитната работа с цел да се изчисти работната директория без да е необходимо къмитване на недовършената работа в клона.
Това е обяснено изцяло в Stashing и Cleaning.
git tag
git tag
командата предоставя възможност за създаване на перманентен маркер (bookmark) към специфична точка в историята на кода.
В общи линии се използва за маркиране на неща от рода на releases.
Тази команда е представена и разгледана в подробности в Тагове в Git и я използваме в действие в Тагване на версии.
Погледнахме как да създадем GPG signed таг с флага -s
и също така как да проверим такъв с -v
в Подписване на вашата работа.