Способност лаког спајања гита једна је од његових предности. Током спајања, гит користи брзо премотавање напред када уочи да је ХЕАД тренутне гране предак урезивања које покушавате да спојите. У премотавању унапред, нема новог урезивања. Гит само помера показивач. Ако ово понашање није пожељно, можете користити заставицу но-фф за креирање новог урезивања за спајање.
Како спајање изгледа са и без премотавања унапред
Након премотавања унапред, ваша историја гита ће изгледати овако:
Ц0 -> Ц1 -> Ц2—> Ц3
За исти број урезивања, ево историје спајања без премотавања унапред:
У првом случају нема назнака да је било гранања. У другом случају, историја приказује предају Ц4 да означи где је дошло до спајања.
Ходање кроз пример
Направићете гит спремиште, направити грану и затим покушати спојити са и без премотавања унапред.
Одељак 1: Подешавање
Прво, можете да креирате гит спремиште са следећим корацима:
$ мкдир мој_пројекат$ цд мој_пројекат
$ гит инит
$ тоуцх а.ткт
$ гит адд -А
$ гит цоммит -м 'Ц0: Додавање а.ткт'
Сада направимо грану под називом феатурес и извршимо неколико промена:
карактеристике $ гит огранка$ гит цхецкоут функције
$ тоуцх б.ткт
$ гит адд -А
$ гит цоммит -м 'Ц1: Додавање б.ткт'
$ тоуцх ц.ткт
$ гит адд -А
$ гит цоммит -м 'Ц2: Додавање ц.ткт'
$ тоуцх д.ткт
$ гит адд -А
$ гит цоммит -м 'Ц3: Додавање д.ткт'
Одељак 2: Спајање са премотавањем унапред
Вратимо се на главну грану и спојимо грану функција у њу:
$гит цхецкоутгосподару$гит мергеКарактеристике
Излаз:
Ажурирање 08076фб..9ее88ебУбрзај
б.ткт | 0
ц.ткт | 0
д.ткт | 0
3 датотеке су промењене, 0 уметања (+), 0 брисања (-)
начин рада 100644 б.ткт
начин рада 100644 ц.ткт
начин рада 100644 д.ткт
Ако проверите историју, видећете:
$ гит лог --онелине9ее88еб Ц3: Додавање д.ткт
ц72б92ц Ц2: Додавање ц.ткт
2е4039е Ц1: Додавање б.ткт
08076фб Ц0: Додавање а.ткт
Дакле, сви урези из гране функција сада су у главној грани. Ако наставите да мењате мастер, нема начина да сазнате када је грана функција спојена у њу.
Одељак 3: Без премотавања унапред
Поновите одељак 1 за нову фасциклу.
Затим покушајте спајање без брзог премотавања унапред:
$гит цхецкоутгосподару$гит мерге --но-ффодлика
Отвориће се следеће у подразумеваном уређивачу текста вашег гита:
Споји грану'Карактеристике'# Унесите поруку урезивања да бисте објаснили зашто је ово спајање потребно,
# нарочито ако споји ажурирано узводно у грану теме.
#
# Редови који почињу са '#' ће бити занемарени, а празна порука ће бити прекинута
# урезивање.
Измените коментаре. У овом случају, можете само додати Ц4: пре спајања „функција“ гране. Излаз би требао изгледати овако:
Спајање је изведено помоћу 'рекурзивне' стратегије.б.ткт | 0
ц.ткт | 0
д.ткт | 0
3 датотеке су промењене, 0 уметања (+), 0 брисања (-)
начин рада 100644 б.ткт
начин рада 100644 ц.ткт
начин рада 100644 д.ткт
Сада, ако проверите историју, требало би да изгледа овако:
$ гит лог --онелинее071527 Ц4: Споји 'функције' гране
бб79ц25 Ц3: Додавање д.ткт
692бд8ц Ц2: Додавање ц.ткт
а0дф62а Ц1: Додавање б.ткт
7575971 Ц0: Додавање а.ткт
Можете видети да иако имате потпуно исте промене, ова верзија спајања има додатни Ц4 урезивање које означава спајање гране функција у мастер.
Закључак
Гит мерге но-фф застава помаже у стварању читљивије историје. Омогућава вам да поставите ознаке које јасно показују где је дошло до спајања. Може вам уштедети време и труд током отклањања грешака.