Git Worktree Bilan Samarali Ishlash: Stash-siz Yangi Tajriba

Muallif: Javohir Abdullayev · · Dasturlash

Git Worktree Bilan Samarali Ishlash: Stash-siz Yangi Tajriba

Dasturchining Kundalik Muammosi: Shoshilinch Vazifalar

Tasavvur qiling, siz yangi katta funksional (feature) ustida qizg'in ishlayapsiz. O'nlab fayllar o'zgartirilgan, testlar yarim holatda va kod hali commit qilishga tayyor emas. Shu payt jamoa yetakchisi yoki mijozdan shoshilinch xabar keladi: "Production serverida jiddiy xato bor, darhol hotfix tayyorlash kerak!"

Odatda bunday vaziyatda nima qilasiz? Ko'pchilik dasturchilar git stash buyrug'idan foydalanadi yoki git commit -m "wip: vaqtinchalik" qilib, boshqa branch-ga o'tadi. Keyin hotfix tugagach, orqaga qaytib git stash pop qiladi. Ammo bu usul ko'pincha konfliktlarga, chalkashliklarga va yo'qotilgan vaqtga sabab bo'ladi. Ayniqsa, katta loyihalarda node_modules yoki Python virtual environment qayta o'rnatilishi kerak bo'lsa, asablar qaqshashi aniq.

Ushbu muammoning ancha nafis, professional va samarali yechimi mavjud — bu Git Worktree.

Git Worktree Nima va U Qanday Ishlaydi?

Git Worktree — bu bitta Git omboriga (repository) bir vaqtning o'zida bir nechta alohida ishchi papkalar (working directory) orqali ulanish imkonini beruvchi kuchli vosita. Standart holatda sizda faqat bitta ishchi papka bo'ladi va git checkout qilganingizda Git ushbu papkadagi fayllarni almashtiradi.

Worktree orqali esa siz asosiy ombor tarixini buzmasdan, kompyuteringizning yonma-yon boshqa papkasida yangi branch-ni alohida ochasiz. Har bir papka o'z mustaqil holatiga, o'z kutubxonalariga va tahrirlash oynasiga ega bo'ladi.

Git Worktree Bilan Amaliy Ishlash: Asosiy Buyruqlar

Keling, buni oddiy misolda ko'rib chiqamiz. Aytaylik, siz my-project papkasida feature/login-system branch-ida ishlayapsiz va zudlik bilan hotfix/payme-bug branch-ini ochishingiz kerak.

1. Yangi Worktree Yaratish

Hozirgi ishingizni to'xtatmasdan va stash qilmasdan, terminalda quyidagi buyruqni bajaring:

git worktree add ../my-project-hotfix -b hotfix/payme-bug main

Ushbu buyruq quyidagilarni amalga oshiradi:

  • Asosiy papkangiz yonida my-project-hotfix nomli yangi mustaqil papka yaratadi;
  • U yerda main branch-idan yangi hotfix/payme-bug tarmog'ini ajratib ochadi;
  • Sizning asosiy my-project papkangizdagi tahrirlanmagan o'zgarishlarga mutlaqo teginmaydi.

2. Worktree Ro'yxatini Ko'rish

Qaysi papkalar qaysi branch-ga bog'langanligini bilish uchun quyidagi buyruqdan foydalanasiz:

git worktree list

Terminal sizga mavjud barcha ishchi kataloglar va ularning branch nomlarini aniq ko'rsatib beradi.

3. Vazifa Tugagach Worktree-ni O'chirish

Hotfix tayyor bo'ldi, commit qildingiz va serverga yubordingiz. Endi ushbu qo'shimcha papka sizga kerak emas. Uni xavfsiz tozalash uchun:

git worktree remove ../my-project-hotfix

Bu buyruq qo'shimcha papkani o'chiradi, biroq siz yaratgan branch va commit-lar Git tarixida saqlanib qoladi. Asosiy papkangizga qaytib, o'z ishingizni hech narsa bo'lmagandek davom ettiraverasiz.

Nima Uchun Git Worktree Samaradorlikni 2x Oshiradi?

  1. Kontekstni saqlash: Tahrirlagichingizda (masalan, VS Code yoki PyCharm) ochilgan tablar, breakpoint-lar va o'zgarishlar o'z joyida qoladi.
  2. Kutubxonalarni qayta yig'maslik: Frontend loyihalarda npm run build yoki backend-da migratsiyalarni qayta-qayta ishga tushirishga hojat qolmaydi.
  3. Parallel testlash: Bir vaqtning o'zida ikkita har xil terminalda ikkita turli branch-dagi serverni ishga tushirib solishtirishingiz mumkin.
  4. Kod ko'rib chiqish (Code Review): Hamkasbingizning pull request-ini tekshirish uchun o'z ishingizni yig'ishtirib o'tirmaysiz — alohida worktree ochib, uning branch-ini test qilasiz.

Professional Maslahat: "Bare Repository" Tuzilishi

Tajribali dasturchilar Git Worktree-dan to'liq unumli foydalanish uchun loyihani boshidanoq bare holatida klonlashadi:

git clone --bare git@github.com:foydalanuvchi/loyiha.git .bare
echo "gitdir: ./.bare" > .git

Bu usul yordamida barcha branch-lar faqat worktree sifatida alohida papkalarda ochiladi va asosiy katalog doimo toza saqlanadi.

Xulosa

Git Worktree — ko'pchilik dasturchilar e'tibordan chetda qoldiradigan, ammo bir marta o'rgangach, kundalik odatga aylanadigan vositadir. git stash chalkashliklaridan va branch o'rtasida sarson bo'lishdan charchagan bo'lsangiz, keyingi shoshilinch vazifangizda albatta worktree imkoniyatini sinab ko'ring.

Teglar: #git worktree #git maslahatlar #ish unumdorligi #versiyalarni boshqarish #dasturlash texnikasi