Bugun versiyalarni boshqarish tizimi - Git haqida gaplashamiz (GIT deb o'qiladi).
Ushbu vositani tushunish va bilmasdan dasturchi bo'lish imkonsiz. Albatta, doimiy ish uchun barcha buyruqlar va imkoniyatlarni eslab qolish shart emas. Hamma bo'layotgan narsani tushunishga yordam beradigan bir nechta buyruqlarni bilishingiz kerak.
Git Asoslari
Git - bu kodning versiyalarini boshqarish tizimi. Nimaga kerak? Jamoa uchun har qanday ishni boshqarish tizimi kerak. Bu o'zgarishlarni kuzatishni osonlashtiradi.
Ya'ni, vaqt o'tishi bilan qaysi fayllar o'zgarganini qadam ba qadam ko'ra olamiz. Ayniqsa, bir vazifa doirasida nimalar qilinganini tahlil qilayotganda, bu orqaga qaytishga imkon beradi.
Tasavvur qilaylik, ishlayotgan kod bor edi va hammasi yaxshi edi, lekin biz undan yaxshiroq qilishni yoki o'zgartirishni qaror qildik. Barchasi tabiiy, lekin bunday yaxshilanish yarim funksionalni buzib qo'ydi, ishlashni imkonsiz qildi. Keyin nima? Gitsiz soatlab o'tirib, nima bo'ldi aslida deb eslab o'tirish kerak bo'lardi. Lekin Git bilan biz shunchaki kommitga orqaga qaytamiz - va hammasi joyida.
Yoki bir vaqtda ikkita dasturchi kodga o'zgarishlar kiritayotgan bo'lsa, nima qilish kerak? Gitsiz bu shunday ko'rinadi: ular kodni asl nusxadan nusxalashadi, kerak bo'lgan narsani bajarishadi. Va keyin ikkisi ham asosiy katalogga o'zgarishlarni qo'shmoqchi. Bu holatda nima qilish kerak?..
Agar Gitdan foydalansak, bunday muammolar umuman bo'lmaydi.
Git o'rnatilishi
Gitni kompyuterga o'rnatamiz. Turli xil OS uchun bu jarayon biroz farq qiladi.
Windows uchun o'rnatish
Odatdagidek, exe faylni yuklab olish va uni ishga tushirish kerak. Bu juda oddiy: Google-ning birinchi havolasiga bosamiz, o'rnatamiz va tamom. Ish uchun ular taqdim etadigan bash konsolidan foydalanamiz.
Windowsda ishlash uchun Git Bashni ishga tushirish kerak. Uni boshlash menyusida qanday ko'rinishda:
Bu endi ishlash mumkin bo'lgan konsol.
Har safar gitni ochish uchun loyiha papkasiga o'tmasdan, kerakli yo'nalishdagi konsolni papkada o'ng tugmani bosish orqali ochish mumkin:
Linux uchun o'rnatish
Odatda git allaqachon o'rnatilgan va linux distributivlarida mavjud, chunki bu dastlab linux yadro rivojlantirish uchun yozilgan vosita. Ammo ba'zida u yo'q bo'lib qoladi. Buni tekshirish uchun terminalni ochib: git --version deb yozishingiz kerak. Agar ma'lum bir javob bo'lsa, hech narsa o'rnatishga hojat yo'q.
Terminalni ochamiz va o'rnatamiz. Ubuntu uchun yozish kerak: sudo apt-get install git. Shu bilan biz istalgan terminalda gitdan foydalanishimiz mumkin bo'ladi.
macOSda o'rnatish
Bu yerda, avvalo, git bor-yo'qligini tekshirishingiz kerak (yuqoridagi kabi linuxda tekshiring).
Agar hali ham yo'q bo'lsa, eng oddiy usul — bu so'nggi versiyani yuklab olish. Agar XCode o'rnatilgan bo'lsa, git avto ravishda o'rnatiladi.
Git sozlanishi
Gitda foydalanuvchi sozlamasi bor, bu ish kim tomonidan bajarilayotgani haqida. Bu aqlli va zarurdir, chunki kommit yaratilganda git aynan shu ma'lumotni Author maydoniga oladi.
Barcha loyihalar uchun foydalanuvchi nomi va parolni sozlash uchun quyidagi buyruqlarni kiritish kerak:
Agar ma'lum bir loyiha uchun muallifni o'zgartirish zarurati bo'lsa (masalan, shaxsiy loyiha uchun), --global ni olib tashlash mumkin va shunday bo'ladi:
Biroz nazariya
Mavzuga kirish uchun, yaxshi, bir nechta yangi so'zlar va harakatlarni muhokama qilishga qo'shish kerak... Aks holda, gaplashadigan hech narsa bo'lmaydi. Albatta, bu qandaydir jargon va ingliz tili ko'chirmasi, shuning uchun men inglizcha ma'nolarini qo'shib boraman.
Qanday so'zlar va harakatlar?
- git repository (git repozitoriy);
- commit (kommit);
- branch (vetka);
- merge (qo'shish);
- conflicts (mojarolar);
- pull (yuklab olish);
- push (yuklash);
- ba'zi fayllarni qanday e'tibordan chetda qoldirish (.gitignore).
Va hokazo.
Gitning holatlari
Gitda bir nechta holatlar bor, ularni tushunish va eslab qolish kerak:
- untracked (kuzatilmagan);
- modified (o'zgartirilgan);
- staged (tayyorlangan);
- committed (kommit qilingan).
Buni qanday tushunish mumkin?
Bu fayllarning bizning kodimizdagi holatlari. Ya'ni, ularning hayot yo'li odatda shunday ko'rinishda:
- Yangi yaratilgan va repozitoriyga qo'shilmagan fayl untracked holatida bo'ladi.
- Jit repozitoriyga qo'shilgan fayllarda o'zgarishlar qilib turamiz — bu fayllar modified holatida bo'ladi.
- O'zgartirilgan fayllardan faqat kerakli (yoki barcha) fayllarni tanlab olamiz (masalan, kompilyatsiya qilingan sinflar bizga kerak emas), va bu o'zgartirilgan sinflar staged holatiga kiradi.
- Staged holatdagi tayyorlangan fayllardan commit yaratiladi va ular allaqachon git repozitoriyasiga o'tadi. Shundan keyin staged holat bo'sh bo'ladi. Ammo modified holatida hali ham biror narsa qolishi mumkin.
Bu shunday ko'rinishda:
Kommit nima?
Kommit - bu versiyalarni boshqarish tizimining asosiy obyekti. U ushbu kommit davomida qilingan barcha o'zgarishlarni o'z ichiga oladi. Kommitlar o'zaro bog'langan, xuddi bir marshrutli ro'yxat kabi.
Ya'ni, birinchi kommit mavjud. Ikkinchi kommit yaratilganda, u (ikkinchi) birinchisidan keyin kelishini biladi. Shunday qilib, ma'lumotni kuzatib borish mumkin.
Shuningdek, kommitda o'zining maxsus ma'lumotlari, ya'ni metama'lumotlar mavjud:
- kommitning noyob identifikatori, uni topish mumkin bo'lgan;
- uni yaratgan kommit muallifining ismi;
- kommit yaratish sanasi;
- ushbu kommit davomida amalga oshirilgan narsalarni tavsiflovchi sharh.
Bu qanday ko'rinishda:
Vetka nima?
Vetka - bu qandaydir kommit ko'rsatkichidir. Kommit u oldingi kommiti qayerda ekanligini biladi, shuning uchun, vetka biror kommitga ishora qilsa, u o'sha avvalgi kommitlarni ham o'z ichiga oladi.
Buning natijasida bir kommitga ishora qiluvchi bir nechta vetkalar bo'lishi mumkin.
Vetkalarda ish olib boriladi, shuning uchun yangi kommit yaratilganda, vetka o'z ko'rsatkichini yangi kommitga o'tkazadi.
Git bilan ishni boshlash
Faqat lokal repozitoriya bilan ham, ham masofaviy repozitoriya bilan ham ishlash mumkin.
Kerakli buyruqlarni ishlab chiqish uchun faqat lokal repozitoriydan foydalanish mumkin. U barcha ma'lumotlarni faqat lokal loyihada .git papkada saqlaydi.
Agar masofaviy haqida gapiradigan bo'lsak, barcha ma'lumotlar masofadagi serverda saqlanadi: faqat loyihaning nusxasi lokal tarzda saqlanadi, o'zgarishlar qilingan holda masofaviy repozitoriyaga yuklanishi mumkin (git push).
Bu yerda va shu yerda biz konsolda git bilan ishlashni muhokama qilamiz. Albatta, bir nechta grafik yechimlardan foydalanish mumkin (masalan, Intellij IDEAda), lekin avvaliga qanday buyruqlar amalga oshirilayotganini va ularning nimani anglatishini tushunish kerak.
Lokal repozitoriyada git bilan ishlash
Lokal repozitoriyani yaratish uchun quyidagi buyruqni yozish kerak:
Shundan so'ng, konsolda joylashgan joyda yashirin .git papka yaratiladi.
.git - bu git repozitoriyasidagi barcha ma'lumotlarni saqlaydigan papka. Uni o'chirish shart emas ;)
Shundan so'ng, ushbu loyiha uchun fayllar qo'shiladi va ularning holati Untracked bo'ladi. Hozirgi ishning holatini ko'rish uchun quyidagilarni yozamiz:
Biz master vetkasidamiz va boshqa vetkaga o'tmagunimizcha, hammasi shunday qoladi.
Bu orqali qaysi fayllar o'zgargan, lekin staged holatiga qo'shilmaganini ko'rishimiz mumkin. Ularga git add yozish orqali staged holatida qo'shish kerak. Bu yerda bir nechta variantlar bo'lishi mumkin, masalan:
- git add -A — holatdagi barcha fayllarni stagedga qo'shadi;
- git add . — ushbu papka va barcha ichki papkalardan barcha fayllarni qo'shadi. Aslida, avvalgisiga teng;
- git add <fayl nomi> — faqat ma'lum bir faylni qo'shadi. Bu yerda, kerakli andozaga ko'ra, fayllarni qo'shish uchun muntazam ifodalardan foydalanish mumkin. Masalan, git add *.java: demak, faqat java kengaytmali fayllarni qo'shish kerak.
Birinchi ikki variant oddiy, lekin qo'shilish qiziqroq bo'ladi, shuning uchun yozamiz:
Holatni tekshirish uchun biz allaqachon bilgan buyruqni ishlatamiz:
Bu yerdan, tartib bo'yicha yozilgan ifoda to'g'ri ishlaganini ko'rib, endi test_resource.txt staged holatida ekanligini ko'rishingiz mumkin.
Qolgan bosqichda (lokal repozitoriyada, masofaviy bilan yana bir bora ko'ramiz ;)) — kommit yaratib, yangi kommit yaratamiz:
Keyin, vetkadagi kommitlar tarixini ko'rish uchun ajoyib buyruq bor. Undan foydalanamiz:
Bu yerda allaqachon biz kiritgan birinchi kommit paydo bo'lganini ko'rib turibmiz. Juda muhim narsa - biz kiritgan matn, ushbu kommit davomida amalga oshirilgan ishlarni aniq belgilashi kerak. Bu kelajakda bir necha marta yordam beradi.
Hushyor o'quvchi, uxlab ketmagan bo'lsa, savol berishi mumkin: GitTest.java fayli bilan nima bo'ldi? Hozir bilamiz, buni ishlatamiz:
Ko'rib turibmizki, u untracked holatida qolib, o'z vaqtini kutmoqda. Balki, biz uni loyiha ichiga qo'shishni umuman istamasmiz? Bu ham bo'lishi mumkin.
Keyinchalik, qiziqarli bo'lishi uchun, test_resource.txt. ga biror matn qo'shib, holatni tekshirib ko'ramiz:
Bu yerda kuzatilmagan va o'zgartirilgan holatlar o'rtasidagi farq yaxshi ko'rinadi.
GitTest.java untracked holatida, test_resource.txt esa modified holatida joylashgan.
Endi, modified holatidagi fayllarda o'zgartirishlar bo'lganda, ulardagi o'zgartirishlarni ko'rishimiz mumkin. Buni quyidagi komanda yordamida amalga oshirish mumkin:
Bu yerda, matnli faylga hello world! qo'shilganini ko'rishingiz mumkin.
Matnli fayldagi o'zgartirishlarni qo'shib, kommit qilamiz:
Barcha kommitlarni ko'rish uchun quyidagilarni yozamiz:
Ko'rib turibmizki, allaqachon ikkita kommit mavjud.
GitTest.java-ni ham xuddi shunday qo'shamiz. Endi izohlarni yig'ib, shunchaki buyruqlar:
.gitignore bilan ishlash
Bizning repozitoriyada faqat manba kodni saqlamoqchiligimiz ravshan. Boshqasi nima bo'lishi mumkin? Kamida, kompilyatsiya qilingan sinflar va/yoki dasturlash muhitlari tomonidan yaratilgan fayllar.
Git ularni e'tiborsiz qoldirishi uchun maxsus fayl yaratishingiz kerak. Buni bajarish: loyiha ildizida .gitignore nomli fayl yaratamiz va ushbu faylda har bir satr e'tiborsizlik naqshiga aylanadi.
Bu misolda git ignore shunday ko'rinishda bo'ladi:
target/
*.iml
.idea/
Endi ko'rib chiqamiz:
- birinchi satr — .class kengaytmali barcha fayllarni e'tiborsizlik holatiga qo'yish;
- ikkinchi satr — target papkasini va u o'z ichida saqlagan barcha narsalarni e'tiborsizlikka olish;
- uchinchi satr — .iml kengaytmali barcha fayllarni e'tiborsizlikka olish;
- to'rtinchi satr — .idea papkasini e'tiborsizlikka olish.
Misol ko'ramiz. Bu qanday ishlayotganini ko'rish uchun, loyiha ichiga GitTest.class kompilyatsiya qilingan sinfini qo'shamiz va loyiha holatini ko'rib chiqamiz:
Shunchalik ravshan: biz tasodifan (git add -A ni ishlatgan holda) kompilyatsiya qilingan sinfni loyiha ichiga qo'shishni xohlamaymiz. Buning uchun .gitignore faylini yaratamiz va avval aytilgan barcha narsalarni qo'shamiz:
Endi loyihaga git ignore ni yangi kommit bilan qo'shamiz:
Bu yerda qiziq narsa: bizda untracked holatida kompilyatsiya qilingan GitTest.class sinfi bor, uni git repozitoriyasiga qo'shishni istamagan edik.
Bu yerda git ignore ishlashi kerak:
Hammasi toza) Git ignore ga +1).
VETKALAR BILAN ISHLASH
Albatta, bitta vetkada ishlash bitta odamga noqulay, jamoada bir nechta odam bo'lgan holda esa imkonsiz. Shuning uchun vetkalash mavjud.
Vetka - bu faqat kommitlarga ishora qiluvchi barmoq bilan ko'rsatkich.
Ushbu bo'limda turli vetkalarda qanday ishlash, bir vetkani boshqasiga qanday qo'llash, qanday mojarolar paydo bo'lishi mumkin va boshqa ko'p narsalarni ko'rib chiqamiz.
Repoyitoriyada barcha vetkalarni ko'rish va qaysi vetkada ekaningizni tushunish uchun quyidagilarni yozish kerak:
Ko'rishingiz mumkin, biz faqat bitta master vetkasida turibmiz va oldidagi yulduzcha bizning unda ekanligimizni bildiradi. Bu haqida, qaysi vetkada ekanligimizni bilish uchun, holatni ham tekshirish mumkin (git status).
Agar turli vetkalar yaratishga bir nechta variantlar mavjud (ularning yana ko'pi bo'lishi mumkin, men shularni ishlataman):
- hozirda turgan vetkada yangi vetka yaratish (99% hollarda);
- ma'lum bir kommit asosida vetka yaratish (1%).
Ma'lum bir kommit asosida vetka yaratamiz
Biz kommitning noyob identifikatoriga tayanamiz. Uni topish uchun quyidagilarni yozamiz:
Kommit “added hello world...” deb nomlangan kommitni tanlaymiz. Uning noyob identifikatormi - “6c44e53d06228f888f2f454d3cb8c1c976dd73f8”. Biz development vetkasini ushbu kommitdan boshlamoqchimiz. Buning uchun quyidagilarni yozamiz:
Vetka yaratiladi, unda faqat master vetkadan bo'lgan dastlabki ikki kommit bo'ladi. Buni tekshirish uchun avvaliga boshqa vetkaga o'zgartirilganingmizni aniqlaymiz va uning ichidagi kommit miqdorini ko'ramiz:
Haqiqatan ham: bizda faqat ikkita kommit bor. Qiziqarli joy: bu vetkada hali .gitignore fayli yo'q, shuning uchun bizning kompilyatsiya qilingan faylimiz (GitTest.class) endi untracked holatida ko'rinadi.
Endi biz vetkalarimiz ustidan yangi ko'rik o'tkazishimiz mumkin, quyidagilarni yozib:
Ko'ramizki, master va development — deb nomlangan ikkita vetka bor va biz hozirda developmentda turibmiz.
Hozirda turgan vetka asosida yangi vetka yaratamiz
Ikkinchi usul - hozirda turgan vetka asosida yaratish. Master vetkasi asosida yangi vetka yaratamiz: buning uchun avval masterga o'tamiz, va keyinchalik - yangi vetka yaratamiz. Bu qanday bo'ladi:
- git checkout master — master vetkaga o'tamiz;
- git status — masterda ekanligimizni tekshiramiz.
Bu yerda master vetkaga o'tganimiz ko'rinib turibdi, bu yerda git ignore allaqachon ishlamoqda, va kompilyatsiya qilingan sinf endi untracked holatida ko'rinmaydi.
Endi master vetka asosida yangi vetka yaratamiz:
Agar bu vetka master kabi emasligini ishonch hosil qilish uchun, buni osongina tekshirish mumkin, git log ni yozib, barcha kommitlarni ko'rib chiqish mumkin. Ularda to'rtta bo'lishi kerak.
Konfliktlarni hal qilamiz
Konflikt nima ekanligini tushunishdan oldin, bir vetkani boshqasiga qo'shish (merge qilish) haqida gaplashish kerak.
Qandaydir rasm bilan bir vetkani boshqasiga qo'shish jarayonini ko'rsatish mumkin:
Ya'ni, asosiy vetka mavjud. Undan bir muncha vaqtdan keyin ikkinchi darajali yaratiladi, unda o'zgarishlar amalga oshiriladi. Ish tugallangach, bir vetkadan boshqasiga birlashtirilishi kerak.
Bizning misolimizda, feature/update-txt-files vetkasini yaratdik. Vetkada ko'rsatilganidek, matnni yangilab qo'shamiz.
Endi bu uchun yangi kommit yaratish kerak:
Endi, agar biz feature/update-txt-files vetkasini masterga qo'shmoqchi bo'lsak, masterga o'tib, git merge feature/update-txt-files ni yozish kerak:
Natijada, endi master vetkasida feature/update-txt-files ga qo'shilgan kommit mavjud.
Ushbu funksionallik qo'shildi, shuning uchun feature vetkasini o'chirib tashlash mumkin. Buning uchun quyidagilarni yozamiz:
Vaziyatni murakkablashtiramiz: endi, taasavvur qilaylik, text faylini yana o'zgartirish kerak. Ammo endi u masterda ham o'zgarishi kerak. Ya'ni, u parallelda o'zgarishga uchraydi, va git master vetkaga yangi kodni qo'shishga harakat qilganda nima qilishini bilolmaydi.
Master asosida yangi vetka yaratib, test_resource.txt faylini o'zgartiramiz va bunga yangi kommit yaratamiz:
... faylda o'zgarishlar qilamiz
Master vetkaga o'tib, ushbu matnli faylni feature vetkasidagi kabi bo'limda yangilaymiz:
... test_resource.txt ni yangiladik
Va eng qiziqarli nuqtaga kelamiz: master vetkada feature/add-header vetkasidan o'zgarishlarni qo'shish kerak. Biz master vetkada turibmiz, shuning uchun faqat quyidagilarni yozish kerak:
Lekin biz test_resource.txt faylida konflikt bilan natija olamiz:
Bu yerda biz ko'rib turibmizki, git buni qanday birlashtirishni o'zi hal qila olmadi va aytadiki, konfliktni hal qilib olish kerak, keyin kommit qilish kerak.
Yaxshi, kuraylikda, konflikt bo'lgan faylni ochamiz va ko'ramiz:
Bu yerda git nimani amalga oshirganini tushunish uchun, avval qayerda nima yozilganini eslatib, taqqoslash kerak:
- “<<<<<<< HEAD” va “=======” orasida master vetkada bo'lgan o'zgarishlar bor.
- “=======” va “>>>>>>> feature/add-header” orasida feature/add-header vetkada bo'lgan o'zgarishlar bor.
GIT bularni qo'shib, ikkita vetkadan olingan bo'limni ikkiga bo'lib, bizga o'zimiz yechimni topishni taklif qiladi.
Yaxshi, qat'iy irada qoldiramiz, faqat header so'zini qoldiramiz:
O'zgartirishlar holatini ko'rib chiqamiz, tavsif biroz boshqacha bo'ladi. Bu modified holat emas, Unmerged holati. Shunday ekan, beshinchi holatni qo'shish oson edi... Lekin menimcha, bu keraksiz, ko'ramiz:
Buning boshqa holat ekanligiga ishonch hosil qildik, g'ayrioddiy. Davom etamiz:
Tavsifda, faqat git commit yozishni taklif qilinayotganini ko'rish mumkin. Eshitamiz va yozamiz:
Va hamma narsa: shunday qilib, biz bu ishni amalga oshirdik - konsolda konfliktni hal qildik.
Albatta, dasturlash muhitida buni biroz osonroq qilish mumkin, masalan, Intellij IDEAda barcha kerakli amallarni unda bajarish mumkin. Ammo dasturlash muhiti “kapot ostida” ko'p narsalarni amalga oshiradi va biz Ko'pincha nima ekanligini tushunmaymiz. Tushuncha bo'lmasa, muammolar paydo bo'lishi mumkin.
Masofaviy repozitoriya bilan ishlash
Yakuniy qadam - masofaviy repozitoriya bilan ishlash uchun yana bir necha buyruqlarni hal qilishdir.
Aytganimdek, masofaviy repozitoriya - bu qandaydir joy, u yerda repozitoriya saqlanadi va undan klon qilish mumkin.
Masofaviy repozitoriyalar qanday bo'ladi? Ko'plab misollar:
- GitHub - bu eng katta repozitoriyalar uchun saqlash joyi va jamoaviy rivojlantirish.
- GitLab - bu ochiq manba kodli DevOps hayot aylanishi veb-instrument, Git repozitoriyalari boshqarish tizimini o'z ichiga oladi, o'zining viki, muammo kuzatuvi tizimi, CI/CD pipelines va boshqa funktsiyalar bilan.
- BitBucket - bu host qilish loyihalar va ularning jamoaviy rivojlantirish uchun veb-xizmat, Mercurial va Git versiyalarni boshqarish tizimiga asoslangan. Bir vaqtlar GitHub oldida katta ustunligi bo'lgan, chunki unda bepul xususiy repozitoriyalar bor edi. O'tgan yil, GitHub ham bu imkoniyatni bepul ochdi.
- Va hokazo...
Masofaviy repozitoriya bilan ishlashda birinchi narsa - loyihani lokal olish uchun klon qilishdir.
Buning uchun loyihani, biz lokal ravishda bajargan loyihamizni ekport qilamiz. Endi har bir kishi uni quyidagilarni yozish orqali klon qila oladi:
Endi lokalda loyiha to'liq nusxasi mavjud. Loyihaning oxirgi nusxasi lokalda ekanligini ishonch hosil qilish uchun, aytilganidek, ma'lumotlarni pull qilish kerak, quyidagilarni yozib:
Bizning holatda, hozirda masofaviy o'zgarmagan, shuning uchun javob: Already up to date.
Agar biz masofaviy repozitoriyada biror o'zgarish kiritgan bo'lsak, lokal yangilanadi, bir marta pull qilganimizda.
Va nihoyat, oxirgi buyruq - masofaviy repozitoriyaga ma'lumotlarni yuklash. Biz bir narsa lokalda qildik va uni masofaviy repozitoriyaga o'tkazishni xohlaymiz, bu yerda avvaliga lokal kommitni yaratish kerak. Bizning matnli faylga yana biror narsa qo'shamiz:
Endi bu biz uchun qulay holat - bu uchun kommit yaratamiz:
Va bu masofaviy repozitoriyaga buni jo'natish uchun buyruq:
Bu hammasi!
| Foydali havolalar |
|---|
|
2. IntelliJ IDEAda Git bilan qanday ishlash kerak
Ushbu bo'limda sen IntelliJ IDEAda Git bilan qanday ishlashni bilib olasan.
Zaruriy kirish ma'lumotlari:
- Avvalgi bo'limni o'qib, takrorlab, tushunish. Bu hamma narsa allaqachon sozlangani va ishga tayyor ekanligiga ishonch hosil qilishga yordam beradi.
- IntelliJ IDEAni o'rnatish. Bunda hech qanday muammo bo'lmasligi kerak :)
- Tamomiy o'zlashtirish uchun bir soat vaqt ajratish.
Biz Git haqidagi ma'ruzada ishlatiladigan demo-loyihani ishlatamiz.
Loyihani lokal ravishda klon qilish
Bu yerda ikki variant mavjud.
- Agar allaqachon github akkaunti bor bo'lsa va keyinchalik biror narsa yuklamoqchi bo'lsangiz, loyihani o'zingizga klon qilish va o'zingizning nusxangizni klon qilish yaxshiroqdir. Qanday qilib forka qilishni bilishingiz uchun bu maqolada, the forking workflow misoli bo'limida o'qishingiz mumkin.
- Repoyitoriydan klon qilib, hamma narsani lokal ravishda qilish va barchasini serverga yuklash imkoniyatisiz.
GitHubdan loyihani klon qilish uchun, loyiha havolasini nusxalash va uni IntelliJ IDEAga yuborish kerak:
Loyihaning manzilini nusxalash:
![]()
IntelliJ IDEAni oching va Get from Version Control ni tanlang:
![]()
Loyihaning manzilini nusxalab qo'ying:
![]()
Sizga IntelliJ IDEA-loyihasi yaratishni taklif qiladi. Taklifni qabul qiling:
![]()
Chunki yig'ish tizimi yo'q, Create project from existing sources ni tanlaymiz:
![]()
Keyin u shunday ko'rinishda bo'ladi:
![]()
Klonlash bilan shug'ullandik, endi atrofga qarash mumkin.
Intellij IDEA ni Git UI sifatida birinchi qarash
Klonlangan loyihaga yana bir bor e'tibor qaratish kerak: u yerdan versiyalarni boshqarish tizimi haqida ko'p ma'lumot olish mumkin.
Birinchi narsa - bu chap pastki burchakda Version Control paneli. Unda barcha lokal o'zgarishlarni topish va barcha bor kommitlar ro'yxatini olish mumkin (git log ning analogi).
Komitlarning ro'yxatiga o'tamiz. Bu joyda qandaydir vizual tarkib bor, u rivojlanish jarayoni qanday o'tganini tushunishga yordam beradi. Masalan, added header to txt kommiti bilan yangi vetka yaratilgani, keyin esa master vetkasiga birlashtirilgani ko'rinadi. Agar kommitga bossangiz, o'ng burchakta kommit haqida barcha ma'lumotlarni ko'rishingiz mumkin: barcha o'zgarishlar va ularning metama'lumotlari.
Bundan tashqari, qanday o'zgarishlar qilinganini ko'rish mumkin. Ayniqsa, o'sha yerda konflikt hal qilingan edi. Buni IDEA ham ajoyib ko'rsatadi.
Agar ushbu kommit davomida o'zgartirilgan faylga ikki marta bossangiz, konfliktni qanday hal qilganini ko'rasiz:
Ko'ryapsizki, o'ng va chapda bir faylning ikkita varianti bor edi, ularni bitta faylga qo'shish kerak edi. O'rtada esa, qanday natija chiqqanini ko'rsatadi.
Loyihada ko'plab vetkalar, kommitlar va loyiha bilan ishlayotgan foydalanuvchilar bo'lganida, vetka (branch), foydalanuvchi (user) va sana (date) bo'yicha alohida qidirish kerak:
Shuningdek, ishni boshlashdan oldin, qaysi vetkada ekanligimizni qanday aniqlash mumkinligini tushuntirish kerak.
O'ng pastki burchakda Git: master tugmasi mavjud, Git: dan keyin loyiha qaysi vetkada turganligi ko'rsatilgan. Agar tugmaga bossangiz, siz ko'plab foydali narsalarni qila olasiz: boshqa vetkaga o'ting, yangi yarating, mavjudini qayta nomlang va hokazo.
Repozitoriya bilan ishlash
Foydali tugmalar kombinatsiyalari
Oldinga ishlash uchun bir nechta juda foydali tugmalar kombinatsiyalarini yodlash kerak:
- ctrl + t — masofaviy repozitoriyadan so'nggi o'zgarishlarni olish (git pull).
- ctrl + k — kommit yaratish/joriy paytda mavjud o'zgarishlarni ko'rish. Bu yerga barcha untracked va modified fayllar kiradi (git commit).
- ctrl + shift + k — masofaviy repozitoriyaga o'zgarishlarni yuklash komandasi. Hamma lokal yaratilgan va hali masofaviyda bo'lmagan kommitlar yuklash uchun taklif qilinadi (git push).
- alt + ctrl + z — ma'lum bir fayldagi o'zgarishlarni lokal repozitoriyadagi oxirgi yaratilgan kommit holatiga qaytarish. Yuqori chap burchakda barcha loyihani tanlaganda, barcha fayllarning o'zgarishlarini qaytarish mumkin.
Nima qilishimiz kerak?
Ish uchun umumiy maqsad






GO TO FULL VERSION