Migogoro ya Kuunganisha Mabadiliko: Usiogope — Tuchambue na Tutatue
Migogoro huwaogopesha wageni, lakini baada ya sehemu hii utakutana nayo kwa utulivu. Tutachambua kwa nini migogoro hutokea (Git haisomi mawazo — haijui ni mabadiliko yapi ni muhimu zaidi), jinsi ya kusoma viashiria vya mgogoro na jinsi ya kuchagua suluhisho sahihi. Tutaonyesha mbinu mbili: utatuzi wa mkono na matumizi ya zana za kuunganisha.
- Utaelewa asili ya migogoro ya kuunganisha na utaacha kuiogopa — itakuwa inatabirika.
- Utaweza kutatua mgogoro kwa mkono, kwa kusoma kwa usahihi viashiria vya Git.
- Utajifunza kusanidi zana ya kuunganisha katika kihariri chako ili kutatua migogoro kwa kuona.
Phần đầu bài giảng
Aina Tatu za Mizozo ya Kuunganisha
- Mizozo ya maudhui: mabadiliko katika mistari ileile
- Kubadilisha majina: faili iliyobadilishwa na kubadilishwa jina
- Kufuta: faili imefutwa kwenye tawi moja, ikabadilishwa kwenye lingine
- Kubadilisha majina ndio hatari zaidi kwa Git
- Angalia historia ya faili ukipata mizozo yenye mashaka
Fikiria unafanyia kazi mradi muhimu, na ghafla Git inaripoti mzozo. Hatua ya kwanza kutatua ni kuelewa aina yake. Mizozo ya maudhui hutokea wakati mabadiliko yamegusa mistari ileile kwenye matawi tofauti. Kubadilisha majina ni changamoto zaidi: mtengenezaji mmoja anabadilisha jina la faili, mwingine kwa wakati huo anahariri maudhui yake. Aina ya tatu ni kufuta, wakati faili inapotea kwenye tawi moja, lakini inaendelea kuishi kwenye lingine. Kubadilisha majina mara nyingi husababisha changamoto, kwa sababu Git haifuatilia historia ya faili kwa usahihi baada ya kubadilisha jina. Kwa hivyo, ukipata mizozo yenye mashaka, angalia daima historia ya mabadiliko ya faili.
Muundo wa Mzozo Mgumu
- Alama <<<<<<< zinaonyesha mabadiliko yako
- ======= linatenganisha toleo lako na la mwenzako
- >>>>>>> linaashiria mwisho wa kizuizi cha mzozo
- git status itaonyesha faili zote zenye matatizo
- git diff — ulinganisho wa kina wa mabadiliko
Tuseme unaunganisha tawi la feature kwenye main na kuona ujumbe wa mzozo. Fungua faili zenye matatizo — utaona alama maalum. Kila kitu kati ya <<<<<<< HEAD na =======, ndio mabadiliko yako. Kati ya ======= na >>>>>>> feature, ndio mabadiliko kutoka kwenye tawi linalounganishwa. Tumia git status ili kuona faili zote zinazokinzana, na git diff kwa ulinganisho wa kina wa tofauti. Kumbuka: alama si kosa, bali ni kidokezo cha mahali unapohitaji kufanya uamuzi.
#!/bin/bash
# conflict_analysis.sh
echo "Tunaunda hazina ya majaribio"
mkdir conflict-demo && cd conflict-demo
git init
echo "Tunaunda faili na toleo la kwanza kwenye main"
echo 'Line 1' > file.txt
echo 'Line 2' >> file.txt
git add . && git commit -m 'Toleo la kwanza'
echo "Tunaunda tawi la feature na kubadilisha mstari wa kwanza"
git checkout -b feature
sed -i 's/Line 1/Line 1 imebadilishwa kwenye feature/' file.txt
git commit -am 'Badilisha mstari wa 1 kwenye feature'
echo "Tunarudi kwenye main na kubadilisha mstari uleule"
git checkout main
sed -i 's/Line 1/Line 1 imebadilishwa kwenye main/' file.txt
git commit -am 'Badilisha mstari wa 1 kwenye main'
echo "Tunajaribu kuunganisha matawi"
git merge feature || echo 'Mzozo!'
echo "\nTunaangalia hali:"
git status --short
echo "\nTunaonyesha faili yenye mzozo:"
cat file.txt
Mikakati ya Kutatua Mizozo
- Kuhariri kwa mkono: ondoa alama, acha kinachohitajika
- Vifaa vya GUI: meld, kdiff3 kwa ulinganisho wa kuona
- --ours/--theirs: kubali toleo lako au la mwenzako
- Kwenye rebase, mizozo hutatuliwa kwa kila toleo
- Baada ya kutatua, usisahau git add na git commit
Mzozo unapogunduliwa, una njia kadhaa. Unaweza kufungua faili kwa mkono na kuihariri, ukiondoa alama na kuacha msimbo unaohitajika. Kwa wale wanaopendelea kuona, vifaa kama meld au kdiff3 vinafaa - vinaonyesha matoleo matatu ya faili kwa wakati mmoja. Ikiwa una uhakika na mabadiliko yako, tumia git checkout --ours ili kuacha toleo lako, au --theirs kwa la mwenzako. Kuwa mwangalifu hasa kwenye rebase: hapa mizozo inaweza kutokea kwenye kila toleo linalorekebishwa.
#!/bin/bash
# resolve_strategies.sh
echo "Njia ya 1: Kutatua kwa mkono"
echo 'Hariri faili, ukiondoa alama za mzozo'
echo 'Kisha fanya: git add file.txt'
echo "\nNjia ya 2: Kubali toleo letu"
git checkout --ours file.txt
echo "\nNjia ya 3: Kubali toleo lao"
git checkout --theirs file.txt
echo "\nNjia ya 4: Tumia kifaa cha kuunganisha"
echo 'git mergetool --tool=meld'
echo "\nBaada ya kuchagua njia, malizia kuunganisha:"
echo 'git commit -m "Tatua mzozo wa kuunganisha"'
Bài giảng đầy đủ dành cho thuê bao
Còn 34 slide nữa trong phiên bản đầy đủ.
Video, toàn bộ slide, ghi chú, bài kiểm tra, gia sư AI và phỏng vấn sẽ mở sau khi đăng nhập và đăng ký thuê bao.
Đăng nhập hoặc đăng ký Đăng ký thuê baoNội dung bài giảng
- Aina Tatu za Mizozo ya Kuunganisha
- Muundo wa Mzozo Mgumu
- Mikakati ya Kutatua Mizozo
- Kinga na Mbinu Bora
- Jinsi ya Kusoma Mizozo yenye Mistari Mingi kwenye Git
- Kufafanua Alama za Muktadha
- Mizozo Iliyowekwa Katika Nyingine: Mikakati ya Kutatua
- Zana za Kiotomatiki na za Juu
- Mkakati wa Kuchagua: HEAD au Tawi?
- Kanuni ya 'Usishangae Sana'
- Migogoro ya Kisemantiki: Adui Wasioonekana
- Zana na Uendeshaji Kiotomatiki
- Kuchagua Zana: Wakati wa Kutumia Nini
- VS Code: Mipangilio na Vipengele vya Juu
- Beyond Compare: Hali za Migogoro Ngumu
- Kuunganisha katika Git flow na uendeshaji otomatiki
- Tunaendesha kuunganisha kiotomatiki kupitia .gitattributes
- Mikakati ya hali ya juu ya uendeshaji otomatiki
- Tunabuni workflow kwa timu kubwa
- Mikakati ya hali ya juu ya uendeshaji otomatiki
- Tunabuni workflow kwa timu kubwa
- Code Review kama Zana ya Kuzuia Migogoro
- Mikakati ya Kufanya Kazi na Matawi ya Vipengele ya Muda Mrefu
- Zana na Otomatiki ya Kutatua Migogoro
- Hatari za Kukubali Mabadiliko kwa Vipofu
- Mikakati ya Utatuzi Salama wa Migogoro
- Kujaribu Baada ya Muunganisho: Nini cha Kuangalia
- Kuunganishwa na CI/CD na Hatua za Kinga
- Jinsi Migogoro ya Rebase Inavyotofautiana na Merge
- Kufanya Kazi na --rebase-merges
- Mikakati ya Kutatua Migogoro Mfululizo
- Mbinu za Kina na Utatuzi wa Rebase
- CI/CD Kama Mfumo wa Udhibiti wa Ubora
- GitHub Actions: Kuangalia Migogoro
- Danger-JS: Otomatiki ya Ukaguzi wa Akili
- Utatuzi wa Kiotomatiki wa Migogoro kwenye CI/CD
- Migogoro: Kutoka Hofu hadi Ujasiri
Bài viết liên quan đến bài học này
- git merge: cách gộp nhánh và xử lý xung đột
- Git và GitHub: khác nhau thế nào và liên hệ ra sao
- Cách cài đặt Git trên Windows, macOS và Linux
- Git là gì và vì sao lập trình viên cần nó
- Git Bash: đó là gì và cách dùng trên Windows
Tất cả bài giảng của khóa học
- Utangulizi: Git kutoka mwanzoni hadi kwa msanidi programu anayejiamini
- Kwa nini Git inahitajika — na kwa nini bila yake huwezi kupata kazi
- Kusakinisha na Kusanidi: Kutayarisha Git kwa Matumizi ya Kwanza
- Hazina ya Kwanza: init, add, commit na uchawi wa faharasa
- Kusoma Historia: log, diff, show na Urambazaji wa Nyuma
- Matawi: Uhalisia Sambamba wa Msimbo Wako
- Kufuta Makosa kwa Usahihi: restore, reset, revert — sahihi na hatari
- GitHub na Hifadhi za Mbali: Msimbo Wako Hewani
- Kazi ya Timu: Forks, Matawi ya Sifa na Maombi ya Kuvuta
- Migogoro ya Kuunganisha Mabadiliko: Usiogope — Tuchambue na Tutatue
- Michakato ya Git katika Timu za Kweli: Njia gani ya kuchagua
- Zana za Kina: Rebase, Stash, Cherry-Pick na Lebo
- Mradi wa Mwisho: Kuiga Maendeleo ya Timu Halisi