Pagsamahin ang Git –no-ff na Pagpipilian

Git Merge No Ff Option



Ang madaling kakayahan sa pagsasama ng git ay isa sa mga kalakasan nito. Sa panahon ng isang pagsasama, ang git ay gumagamit ng fast-forward na pagsasama kapag napansin nito na ang ULO ng kasalukuyang sangay ay isang ninuno ng pangako na sinusubukan mong pagsamahin. Sa isang mabilis na pagsasama, walang bagong komitment. Ginagalaw lang ni Git ang pointer. Kung hindi kanais-nais ang pag-uugali na ito, maaari mong gamitin ang no-ff flag upang lumikha ng isang bagong komit para sa pagsasama.

Paano Ang Pagsamahin Tumingin Sa At Nang Walang Mabilis na Pag-forward

Pagkatapos ng isang fast-forward, magiging ganito ang iyong kasaysayan ng git:







C0 -> C1 -> C2—> C3



Para sa parehong bilang ng mga pangako, narito ang isang kasaysayan ng pagsasama nang walang mabilis na pasulong:







Sa unang kaso, walang pahiwatig na mayroong anumang pagsasanga. Sa pangalawang kaso, ang kasaysayan ay nagpapakita ng isang C4 mangako upang ipahiwatig kung saan naganap ang pagsasama.

Paglalakad sa Isang Halimbawa

Lilikha ka ng isang git repository, lilikha ng isang sangay at pagkatapos ay subukan ang mga pagsasama kasama at nang walang fast-forward.



Seksyon 1: Pag-setup

Una, maaari kang lumikha ng git repository na may mga sumusunod na hakbang:

$ mkdir my_project
$ cd my_project
$ git init
$ pindutin ang a.txt
$ git add -A
$ git commit -m 'C0: Pagdaragdag ng a.txt'

Lumikha tayo ngayon ng isang sangay na tinatawag na mga tampok at gumawa ng ilang pagbabago:

Mga tampok sa sangay na $ git
Mga tampok sa pag-checkout na $ git
$ hawakan b.txt
$ git add -A
$ git commit -m 'C1: Pagdaragdag ng b.txt'
$ hawakan c.txt
$ git add -A
$ git commit -m 'C2: Pagdaragdag ng c.txt'
$ touch d.txt
$ git add -A
$ git commit -m 'C3: Pagdaragdag ng d.txt'

Seksyon2: Pagsamahin Sa Mabilis na Pagpasa

Bumalik tayo sa master branch at pagsamahin ang mga tampok na sangay dito:

$git checkoutpanginoon
$sumanib ng gitmga tampok

Output:

Ina-update ang 08076fb..9ee88eb
Fast-forward
b.txt | 0
c.txt | 0
d.txt | 0
3 file ang nagbago, 0 na insert (+), 0 na pagtanggal (-)
lumikha mode 100644 b.txt
lumikha mode 100644 c.txt
lumikha mode 100644 d.txt

Kung susuriin mo ang kasaysayan, makikita mo ang:

$ git log --oneline
9ee88eb C3: Pagdaragdag ng d.txt
c72b92c C2: Pagdaragdag ng c.txt
2e4039e C1: Pagdaragdag ng b.txt
08076fb C0: Pagdaragdag ng a.txt

Kaya, ang lahat ng mga pangako mula sa mga tampok na sangay ay nasa master branch na ngayon. Kung magpapatuloy kang gumawa ng mga pagbabago upang makabisado, walang paraan upang malaman kung kailan isinama ang sangay ng mga tampok dito.

Seksyon 3: Nang Walang Mabilis na Pagpasa

Ulitin ang Seksyon 1 para sa isang bagong folder.

Pagkatapos, subukan ang isang pagsasama nang walang mabilis na pagpapasa:

$git checkoutpanginoon
$sumanib ng git --no-fftampok

Bubuksan nito ang sumusunod sa default na text editor ng iyong git:

Pagsamahin ang sangay'tampok'
# Mangyaring maglagay ng isang mensahe ng pangako upang ipaliwanag kung bakit kinakailangan ang pagsanib na ito,
# lalo na kung pinagsasama nito ang isang na-update na upstream sa isang sangay ng paksa.
#
Ang # Mga linya na nagsisimula sa '#' ay hindi papansinin, at isang walang laman na mensahe ang tatanggalin
# ang mangako

Baguhin ang mga komento. Sa kasong ito, maaari mo lamang idagdag ang C4: bago pagsamahin ang mga ‘tampok’ sa sangay. Ang output ay dapat magmukhang ganito:

Pagsasama na ginawa ng diskarte na 'recursive'.
b.txt | 0
c.txt | 0
d.txt | 0
3 file ang nagbago, 0 na insert (+), 0 na pagtanggal (-)
lumikha mode 100644 b.txt
lumikha mode 100644 c.txt
lumikha mode 100644 d.txt

Ngayon kung susuriin mo ang kasaysayan, dapat itong magmukhang sumusunod:

$ git log --oneline
e071527 C4: Pagsamahin ang mga 'tampok' sa sangay
bb79c25 C3: Pagdaragdag ng d.txt
692bd8c C2: Pagdaragdag ng c.txt
a0df62a C1: Pagdaragdag ng b.txt
7575971 C0: Pagdaragdag ng a.txt

Maaari mong makita na kahit na mayroon kang eksaktong parehong mga pagbabago, ang bersyon na ito ng pagsasama ay may labis na C4 commit na nangangahulugang pagsasama ng mga tampok na sangay sa master.

Konklusyon

Ang git merge no-ff flag ay tumutulong sa paglikha ng isang mas nababasa na kasaysayan. Pinapayagan kang maglagay ng mga tag na malinaw na nagpapakita kung saan naganap ang mga pagsasama. Maaari kang makatipid ng oras at pagsisikap sa pag-debug.

Karagdagang Pag-aaral:

Mga Sanggunian: