-
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 Водоводне команде
A1.1 Додатак А: Програм Гит у другим окружењима - Графички интерфејси
Ако сте прочитали целу књигу, научили сте доста о томе како се програм Гит користи из командне линије. Можете да радите са локалним фајловима, повезујете преко мреже свој репозиторијум са другим репозиторијумима и ефикасније радите са осталима. Али прича се овде не завршава; програм Гит је обично део већег екосистема, а терминал није увек најбољи начин да се ради са њим. Сада ћемо погледати неке од осталих врста окружења у којима програм Гит може бити користан и како остале апликације (укључујући и вашу) раде уз програм Гит.
Графички интерфејси
Природно окружење програма Гит је терминал. Ту се најпре појаве нове могућности, а и пуну снагу програма Гит имате на располагању само из командне линије. Али чисти текст није најбољи избор за све задатке; понекад је оно што вам треба визуелна представа, а и неки корисници се много комфорније осећају у покажи-и-кликни интерфејсу.
Важно је приметити да су различити интерфејси прилагођени различитим радним процесима. Неки клијенти излажу само пажљиво одабрани подскуп функционалности програма Гит, како би подржали специфични начин рада који аутор сматра ефикасним. Када се посматра из овог угла, ниједан од ових алата не може да се назове „бољим” од било ког другог, они су једноставно погоднији за примену којој су намењени. Исто тако, приметите да не постоји ништа што ови графички клијенти могу да ураде, а да не може клијент из командне линије; командна линија је још увек место на којем имате највише снаге и контроле када радите са својим репозиторијумима.
gitk
и git-gui
Када инсталирате програм Гит, такође добијате и визуелне алате, gitk
и git-gui
.
gitk
вам даје графички приказ историје.
Посматрајте га као моћну ГКИ љуску преко git log
и git grep
команди.
Ово је алат који треба користити када покушавате да пронађете нешто што се догодило у прошлости, или да визуелизујете историју свог пројекта.
Gitk се најлакше позива из командне линије.
Једноставно урадите cd
у Гит репозиторијум и откуцајте:
$ gitk [git log опције]
Gitk прихвата многе опције командне линије, од којих већину прослеђује позадинској git log
акцији.
Вероватно једна од најкориснијих заставица је --all
, која програму gitk налаже да прикаже комитове који су доступни из било које референце, не само из HEAD.
Интерфејс програма gitk изгледа овако:
![`gitk` приказивач историје](png/gitk.png)
gitk
приказивач историјеНа врху се налази нешто што личи на излаз команде git log --graph
; свака тачка представља комит, линије представљају родитељске везе, а референце су представљене обојеним правоугаоницима.
Жута тачка представља HEAD, а црвена тачка представља измене које још увек нису постале комит.
У дну се налази поглед изабраног комита; коментари и закрпа на левој страни, а прегледни поглед са десне стране.
Између се налази скуп контрола које се користе за претрагу историје.
С друге стране, git-gui
је првенствено, алат за изградњу комитова.
И он се такође најједноставније покреће из командне линије:
$ git gui
И изгледа овако некако:
![`git-gui` алат за комитовање](png/git-gui.png)
git-gui
алат за комитовањеНа левој страни је индекс; измене које нису на стејџу се налазе на врху, измене на стејџу су на дну. Комплетне фајлове можете да премештате из стања у стање тако што кликнете на њихове иконе, или можете да изаберете фајл који желите да погледате кликом на његово име.
Горе десно се налази поглед разлике који приказује разлике за тренутно изабрани фајл. Поједине комаде (или поједине линије) можете да ставите на стејџ тако што урадите десни клик у овој области.
Доле десно је област за поруку и акције.
Када желите да урадите нешто слично са git commit
, откуцајте своју поруку у текст поље и кликните „Commit”.
Можете изабрати да преправите последњи комит тако што кликнете на „Amend” радио дугме, па ће то да ажурира „Staged Changes” област са садржајем последњег комита.
Затим једноставно можете да неке измене ставите на стејџ или да их уклоните са њега, измените комит поруку, па поново кликнете на „Commit” да замените стари комит са новим.
gitk
и git-gui
су примери алата који су оријентисани на задатак.
Сваки је прилагођен специфичној намени (прегледу историје и креирању комитова, респективно), и изостављају могућности које нису неопходне за тај задатак изостављају могућности које нису неопходне за тај задатак.
GitHub за мекОС и Виндоуз
GitHub је креирао два Гит клијента оријентисана на процес рада: један за Виндоуз и један за мекОС. Ови клијенти су добар пример алата оријентисаних на процес рада – уместо да изложе комплетну функционалност Гит програма, они се фокусирају на одабрани скуп могућности које се уобичајено користе у добро функционишу заједно. They look like this:
![GitHub за мекОС](png/github_mac.png)
![GitHub за Виндоуз](png/github_win.png)
Дизајнирани су тако да изгледају и раде врло слично, тако да ћемо их у овом поглављу третирати као да су један производ. Нећемо проћи кроз детаљно извршавање ових алата (они имају сопствену документацију), али следи брзо представљање „changes” погледа (што је место на којем проводите највећи део свог времена).
-
Са леве стране је листа репозиторијума које клијент прати; репозиторијум можете додати (било клонирањем, било локалним прикачивањем) тако што кликнете на икону „+” у врху ове области.
-
У средини се налази област за унос комита која вам омогућава да унесете комит поруку и да изаберете фајлове који ће ући у комит. На Виндоуз систему се комит историја проказује непосредно испод овога; на мекОС, она се налази у одвојеној картици.
-
Са десне стране је погледа разлике који приказује шта се изменило у радном директоријуму, или које су измене у изабраном комиту.
-
Последња ствар коју треба приметите је дугме „Sync” у горњем десном углу које представља основни начин за интеракцију преко мреже.
Белешка
|
Да бисте користили ове алате, није потребно да поседујете GitHub налог. Мада су дизајнирани да истакну GitHub сервис и препоручени процес рада, фино ће радити са било којим репозиторијумом и обављаће мрежне операције са било којим Гит хостом. |
Инсталација
GitHub за Виндоуз може да се преузме са адресе https://windows.github.com, а GitHub за мекОС са https://mac.github.com. Када се апликације покрену по први пут, оне вас воде кроз комплетно подешавање програма Гит, као што је конфигурисање вашег имена и имејл адресе и оба постављају разумне подразумеване вредности за већину конфигурационих опција, као што су кешеви акредитива и CRLF понашање.
Ова програма су „evergreen” – ажурирања се преузимају и инсталирају у позадини док се апликације извршавају. Ово згодно укључује и верзију програма Гит који се испоручује уз апликације, а то значи на више нећете морати да водите рачуна о ручном ажурирању. На Виндоуз систему, клијент има и пречицу за покретање Powershell са Posh-git, о којем ћемо говорити касније у овом поглављу.
Следећи корак је да алатима доставите неколико репозиторијума са којима ће да раде. Клијент вам приказује листу репозиторијума за које имате приступ на сервису GitHub и може да их клонира у једном кораку. Ако већ имате локални репозиторијум, једноставно превуците његов директоријум из Finder или Windows Explorer прозора у прозор GitHub клијента и он ће постати део листе репозиторијума са леве стране.
Препоручени процес рада
Једном када се инсталира и подеси, GitHub клијент можете користити за многе уобичајене Гит послове. Предвиђени процес рада се понекада назива GitHub процес. Ово представљамо са више детаља у GitHub процес рада, али општи gist је да ћете (а) комитовати у грану, и (б) прилично редовно ћете се синхронизовати са удаљеним репозиторијумом.
Управљање гранама је једна од ствари у којој се ова два алата разилазе. За креирање нове гране на мекОС постоји дугме на врху прозора:
![„Create Branch” дугме на мекОС](png/branch_widget_mac.png)
На Виндоуз систему, ово се ради уношењем имена нове гране у виџет за прелаз на другу грану:
![Креирање гране на Виндоуз систему](png/branch_widget_win.png)
Када направите грану, креирање нових комитова је просто. Направите мало измена у радном директоријуму, па када пређете у прозор GitHub клијента, он ће вам приказати измењене фајлове. Унесите комит поруку, изаберите фајлове које желите да укључите у комит и кликните на на „Commit” button (ctrl-ентер или ⌘-ентер).
Главни начин путем којег имате интеракцију преко мреже са осталим репозиторијумима је употребом „Sync” могућности. Програм Гит интерно има одвојене операције за гурање преузимање, спајање и ребазирање, али GitHub клијенти их све стапају у једну могућност у више корака. Ево шта се дешава када кликнете на Sync дугме:
-
git pull --rebase
. Ако ово не успе због конфликта при спајању, прибегава наgit pull --no-rebase
. -
git push
.
Ово је најуобичајенији низ мрежних команди када се ради у овом стилу, тако да њихово сабијање у једну команду штеди доста времена.
Резиме
Ови алату су веома погодни за процес рада којем су намењени. Програмери и они који то нису, очас посла могу кренути да сарађују на пројекту. Међутим, ако се ваш процес рада разликује, или ако желите више контроле над тиме како и када се врше мрежне операције, препоручујемо вам да користите неки други клијент или командну линију.
Остали ГКИ
Постоји већи број других графичких Гит клијената који су део гаме од специјализованих алата за једну намену, па све до апликација које покушавају да изложе све што програм Гит може. Званични Гит веб сајт има одржавану листу најпопуларнијих клијената на адреси http://git-scm.com/downloads/guis. Свеобухватнија листа постоји на Фит вики сајту, на адреси https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces.