Гит је систем дистрибуиране контроле верзија - алат за праћење промена које су направљене у скупу датотека или координирање рада током времена. Програмери га често користе за координирање промена у изворном коду софтвера и најбољем делу; може се користити за праћење било које врсте садржаја. Посебно је дизајниран да максимално брзи и ефикасно поднесе све, од малих до великих пројеката. Изузетно флексибилно значи да појединци могу директно делити посао између својих личних спремишта, а групе могу да координирају свој ток рада кроз централно складиште. Једноставно омогућава два програмера који седе на две различите локације да самостално праве и бележе промене, а све то без централног складишта.
Спајање је уобичајена пракса у Гиту која се користи за интегрисање промена из једне гране у другу. Гит спајање је команда која врши промене на другој локацији. Омогућује програмерима да узму своје независне линије кода које је креирала Гит грана и интегришу их у једну грану. Ово само мења циљну грану док историја гране извора остаје. Гит ребасе је још једна наредба која се у основи користи у исту сврху, осим што то ради сасвим другачије. Обоје раде исто - интегришу обавезе из једне гране у другу - али разлика лежи у томе како то раде. Издвајамо неке кључне тачке разликовања које упоређују ове две.
Гит мерге је наредба која обједињује две или више грана историје почињења. Спајање често обједињује само две гране, иако Гит подржава спајање три, четири или више грана у исто време. Гит спајање користи Гит пулл за укључивање промена из једне подружнице у другу или из другог спремишта у потпуности. Спајање се мора догодити у једном складишту, што значи да све гране које је потребно спајати треба да буду присутне у истом спремишту. Ситуације спајања обично потичу два или више корисника који покушавају да ажурирају заједнички код. Корисник најчешће споји грану у другу грану у свом локалном складишту у локалном окружењу. Гит спајање посебно интегрише садржај изворне гране са циљаном граном. Циљна грана се мења, док изворна грана остаје.
Гит ребасе је још једна алтернатива спајању која се користи за интегрисање друге гране са огранком у којем тренутно радите, осим што чува линеарну историју предавања. Сврха Гит ребасе је премештање гране са једне локације на другу. Како су наредбе непроменљиве, оне се не могу померати, па то подразумева прављење нових обавеза са истим скуповима промена и метаподатака. Ребаза у основи мења предоџбу о томе када и где је развијен редослед поступака, што резултира губитком неких аспеката историје развоја. То значи да ће се оригинална обавеза на којој је развој првобитно заснован променити. Учинковито укључује све нове обавезе у матичној бранши преписивањем историје. Као резултат, он ствара нове обвезе за свако почињење у оригиналној грани.
- Иако су и спајање и поновно постављање најчешћи начини интегрисања промјена у Гит и они служе истој сврси - комбиновању више грана у једну - разлика лежи у томе како их постижу. Гит спајање интегрише садржај изворне гране са циљаном граном, истовремено чувајући порекло сваке историје извршавања, док Гит ребасе укључује све нове обавезе у матичној грани преписивањем историје стварајући нове комитете за сваку наредбу у изворној грани.
- Помоћу Гит спајања прво прелазите на грану која се спаја, а затим користите наредбу спајања да бисте изабрали грану која ће се спојити. С обзиром да грана указује на обавезу и да је грана грануларност са којом повезујете промене, спајање наредба се спаја на нивоу гране или обавезе. С друге стране, Ребасе је мало другачији. Прво одаберете грану за поновну базу података, а затим користите команду ребасе да бисте изабрали где да је поставите.
- Спајањем се ствара нова обавеза која представља спајање две гране. Интегрише промјене из различитих паралелних линија развоја (грана) заједно стварајући обавезу спајања. Сврха је да се споје две или више грана заједно, укључујући све промене од тренутка преусмеравања у тренутну грану. Пребацивање унапред је подразумевано понашање спајања у Гиту. Ослобађање, с друге стране, мења појединачне обавезе преписивањем историје пројеката стварајући нове комитете за свако заузимање у оригиналној грани, што заузврат резултира линеарном историјом без одвојених грана.
- Гит спајање не мења историју, док се очува контекст гране што значи да се постојеће гране не мењају ни на који начин. То ствара нову обавезу (осим ако није била брза обједињавање унапред), али обвезе остају доступне од стране гране. Гит ребасе, с друге стране, поједностављује потенцијално сложену историју. Пописи се преписују, старе верзије се заборављају и ДАГ ревизија се мења. Дописи нису више доступни са поновним базама, што значи да више не можете поново да измените објављене огранке.
Укратко, спајање и поновно постављање су два начина интегрисања промјена у Гит-у, али они се разликују у начину на који то раде. Спајање је операција у једном кораку на једном месту за решавање сукоба и обавезе до којих је дошло из бранше остају доступне. Ребасе, с друге стране, реализује сваки комад појединачно преписивањем историје стварајући нове комитете за свако почињење у изворној грани. Дакле, оно што је некада било достижно више није достижно. Ребасе темељно мења представу када и где је развијен редослед поступака.