-
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 Водоводне команде
A3.4 Додатак В: Гит команде - Гранање и спајање
Гранање и спајање
Постоји само неколико команди које у програму Гит имплементирају већину функционалности гранања и спајања.
git branch
Команда git branch
је уствари нека врста алата за управљање гранама.
Може да вам испише постојеће гране, креира нову грану, обрише гране и промени им име.
Већи део Гранање у програму Гит је посвећен команди branch
која се користи кроз цело поглавље.
Најпре је уводимо у Прављење нове гране и кроз већину њених осталих могућности (испис и брисање) пролазимо у Управљање гранама.
У Гране за праћење користимо опцију git branch -u
да поставимо грану за праћење.
Коначно, у Гит референце прелазимо нешто од онога што ова команда обавља у позадини.
git checkout
Команда git checkout
се користи за промену текуће гране и одјављивање садржаја у радни директоријум.
Први пут се сусрећемо са овом командом у Мењање грана заједно уз git branch
команду.
Сазнајемо како да је употребимо да започнемо праћење гране заставицом --track
у Гране за праћење.
Користимо је да поново уведемо конфликте фајлова са --conflict=diff3
у Одјављивање конфликата.
Улазимо у детаље њене везе са git reset
у Демистификовани ресет.
Коначно, приказујемо неке детаље имплементације у Референца HEAD.
git merge
Алат git merge
се користи за спајање једне или више грана у грану коју сте одјавили.
Затим ће померити унапред текућу грану на резултат спајања.
Команда git merge
је први пут уведена у Основе гранања.
Мада се користи на многим местима у књизи, постоји мало варијација merge
команде — углавном само git merge <грана>
уз име једне гране у коју желите да спојите.
Показали смо како да се уради спљескано спајање (када програм Гит спаја рад али се претвара као да је то нови комит и не бележи историју гране коју спајате) на самом крају Рачвани јавни пројекат.
У Напредно спајање смо доста говорили о процесу спајања и самој команди, укључујући команду -Xignore-space-change
и --abort
заставицу која прекида проблематично спајање.
Научили смо како да проверимо потписе пре спајања у случају да ваш пројекат користи GPG потписивање у Потписивање комитова.
Коначно, научили смо о спајању подстабала у Спајање подстабла.
git mergetool
Команда git mergetool
просто покреће спољни помоћник за спајање у случају да имате проблема са спајањем у програму Гит.
Укратко је помињемо у Основни конфликти при спајању, а детаљно објашњавамо како да имплементирате сопствени спољни алат за спајање у Спољни алати за спајање и приказ разлика.
git log
Команда git log
се користи да прикаже забележену историју пројекта до које може да се дође када се из последњег комит снимка крене уназад.
Подразумевано ће да прикаже само историју гране на којој се тренутно налазите, али јој можете проследити различиту, или чак и више глава или грана из којих треба да крене у обилазак.
Такође се често користи за приказ разлика између две или више грана на нивоу комита.
Ова команда се користи у скоро сваком поглављу књиге да покаже историју пројекта.
Команду уводимо и донекле детаљно представљамо у Преглед историје комитова.
Ту објашњавамо опције -p
и --stat
како би стекли идеју шта је увео сваки комит, затим опције --pretty
и --oneline
за концизнији приказ историје, уз нешто једноставних опција за филтрирање по датуму и аутору.
У Прављење нове гране је користимо уз опцију --decorate
да се једноставно графички прикаже где се налазе показивачи наше гране, а користимо и опцију --graph
да видимо како изгледају историје које се разилазе.
У Мали приватни тим и Опсези комитова објашњавамо гранаA..гранаБ
синтаксу која се користи уз команду git log
за приказ комитова који су у грани јединствени релативно у односу на неку другу грану.
У Опсези комитова ово приказујемо прилично детаљно.
У Лог спајања и Трострука тачка приказујемо гранаA…гранаБ
формат и --left-right
синтаксу да видимо шта се налази на једној грани или на другој, али не на обе.
У Лог спајања такође показујемо како да се опција --merge
користи као помоћ код дибаговања конфликта при спајању, као и употребу опције --cc
за преглед конфликата комитова спајања у историји.
У RefLog кратка имена користимо опцију -g
за преглед Гит reflog кроз овај алат, уместо да вршимо обилазак гране.
У Претрага приказујемо употребу опција -S
и -L
за обављање прилично софистицираних претрага нечега што се историјски десило у коду, као што је праћење историје неке функције.
У Потписивање комитова видимо како се користи --show-signature
за додавање валидационог стринга у сваки комит излаза git log
команде у зависности од тога да ли је комит био исправно потписан или не.
git stash
git stash
команда се користи за привремено чување рада који није комитован како би се очистио радни директоријум без потребе да се комитује незавршени посао на грани.
Она је у суштини потпуно представљена у Скривање и чишћење.
git tag
Команда git tag
се користи за постављање сталног маркера на одређено место у историји кода.
У општем случају се ово користи за ствари као што су издања.
Ова команда је представљена и детаљно објашњена у Означавање, а у пракси је користимо у Означавање издања.
Такође смо у Потписивање вашег рада показали како да се креира GPG потписана ознака заставицом -s
и провера ознаке заставицом -v
.