Git
Chapters ▾ 2nd Edition

A3.4 Додатак C: Гит команде - Гранање и спајање

Гранање и спајање

Постоји само неколико команди које у програму Гит имплементирају већину функционалности гранања и спајања.

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.