-
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 Водоводне команде
10.1 Гит изнутра - Водовод и порцелан
Можда се скочили директно на ово поглавље са много ранијег, или сте можда стигли овде након што сте прочитали целу књигу — у сваком случају, овде ћемо да погледамо како програм Гит ради изнутра и како је имплементиран. Мислимо да је учење ових аспеката програма Гит од суштинске важности за разумевање колико је програм Гит користан и моћан алат, али неки су нам предочили да почетнике могу поприлично да збуне и да су им уводе непотребну сложеност. Зато смо нашли компромис и одлучили да ово буде последње поглавље у књизи како би сте могли да га прочитате пре или касније током процеса учења. На вама је да одлучите.
Сада када сте овде, време је да кренемо. Прво, ако ово још увек није јасно, програм Гит је у основи фајл систем који се адресира по садржају преко којег је написан VCS кориснички интерфејс. Ускоро ћете научити детаљније на шта се мисли под овиме.
У раним данима програма Гит (углавном пре верзије 1.5), кориснички интерфејс је био много сложенији јер је наглашавао фајл систем а не дотеран VCS. У последњих неколико година, КИ је толико унапређен тако да је његово коришћење постало чисто и једноставно као и коришћење било ког другог система; мада често и даље кружи стереотип из раних дана КИ програма Гит о томе како је превише сложен и тежак за учење.
Слој фајл система који се адресира садржајем је невероватно кул, па ћемо га првог обрадити у овом поглављу; затим ћете научити нешто о преносним механизмима и задацима везаним за одржавање репозиторијума у које ћете вероватно на крају крајева морати да се упустите.
Водовод и порцелан
Ова књига првенствено покрива како се програм Гит користи помоћу неких тридесетак подкоманди као што су checkout
, branch
, remote
, и тако даље.
Али пошто је програм Гит првобитно био алат система за котролу верзије, а не потпуни VCS једноставан за употребу, он има много других подкоманди који раде ствари на ниском нивоу и које су дизајниране тако да се уланчавају у Јуникс стилу, или да се позивају из скрипти. Ове команде се обично зову „водоводне команде”, а команде које су више пријатељски настројене корисницима се зову „порцеланске команде”.
Као што сте ди сада видели, првих девет поглавља књиге бавило се скоро искључиво порцеланским командама. Али у овом поглављу ћемо се бавити углавном водоводним командама ниског нивоа, јер вам омогућавају приступ унутрашњој страни програма Гит и помажу да се покаже како и зашто програм Гит ради оно што ради. Многе од ових команди нису предвиђење да се користе директно из командне линије, већ да се користе као градивни блокови нових алата и прилагођених скрипти.
Када извршите команду git init
у новом или постојећем директоријуму, програм Гит креира директоријум .git
и њему се налази све што програм Гит чува и чиме манипулише.
Ако желите да сачувате резервну копију репозиторијума или да га клонирате, копирање овог једног директоријума на неко друго место је скоро све што вам је потребно.
Цело ово поглавље се у суштини бави стварима које се налазе у овом директоријуму.
Ево како изгледа свеже иницијализован .git
директоријум.
$ ls -F1
config
description
HEAD
hooks/
info/
objects/
refs/
У зависности од верзије програма Гит коју користите, можда ћете овде видети и неки други садржај, али ово је свеж git init
репозиторијум — подразумевано би требало ово да видите.
description
фајл користи само програм GitWeb, тако да нема потребе да бринете о њој.
Фајл config
садржи конфигурационе опције специфичне за пројекат, а директоријум info
чува глобални exclude
фајл са шаблонима за игнорисање које не желите да пратите у .gitignore
фајлу.
Директоријум hooks
садржи скрипте кука за клијентску и серверску страну, о којима се детаљно говори у Гит куке.
Стога нам преостају још четири битне ставке: фајлови HEAD
и index
(који ће тек бити креиран), као и директоријуми objects
и refs
.
Они представљају срж програма Гит.
Директоријум objects
чува сав садржај базе података, директоријум refs
чува показиваче на комит објекте из тих података (гране, ознаке, удаљени и још нешто), фајл HEAD
показује на грану која је тренутно одјављена, а фајл index
је мести у коме програм Гит чува информације о стејџу.
Сада ћемо детаљно да погледамо сваки од ових делова, како бисмо разумели начин на који програм Гит ради.