AXV

Git ilg'or texnikalari

git stash, rebase va merge farqi, interaktiv rebase, cherry-pick, reflog bilan tiklash

10-sinfDevOps6-hafta · 16-dars

Bugun nimalarni o'rganamiz?

git stash

Ishni chetga qo'yish

rebase va cherry-pick

Tarixni boshqarish

git reflog

Tiklash

Takrorlash

Ikki branch o'zgarishlarini birlashtiruvchi buyruq?

git merge branch larni birlashtiradi.
01

git stash

Ishni chetga qo'yish

Stash sikli

O'zgarish bor git stash Boshqa ish git stash pop Ish yo'qolmaydi, javonda turadi

Stash buyruqlari


git stash push -m "login formasi yarim"
git switch main
# ... shoshilinch tuzatish, commit ...
git switch feature/login
git stash list
git stash pop
  
git stash push -u -m "..." yangi fayllarni ham saqlaydi. Stash ga xabar (-m) yozing, aks holda keyin nimaligini topolmaysiz.

Mini-test

git stash pop nima qiladi?

pop — qaytarish + stash dan olib tashlash.
02

rebase va cherry-pick

Tarixni boshqarish

Rebase

featurecommitlar Boshlanishniyangilash main oxiriga To'g'ri tarix Commit lar yangi bazaga ko'chadi

rebase va cherry-pick


git switch feature/hello-button
git fetch origin
git rebase origin/main
# konflikt bo'lsa:
git add .
git rebase --continue
git rebase -i HEAD~3
git switch main
git cherry-pick a1b2c3d
  
Rebase commit larning SHA ini o'zgartiradi. Push qilingan branch dan keyin kerak bo'lsa git push --force-with-lease ishlatiladi, --force emas, va faqat o'z branch ingizda.

Mini-test

Qaysi tarixni rebase qilmaslik kerak?

Umumiy tarixni qayta yozish jamoani buzadi.
03

git reflog

Tiklash

Tiklash

Xato (reset) git reflog SHA topish Yangi branch Commit lar hali bazada turadi

reflog bilan tiklash


git reset --hard HEAD~2
git reflog
git switch -c tiklangan a1b2c3d
git log --oneline
  
Tiklashda reset --hard o'rniga yangi branch ochish xavfsizroq: hech narsa ustiga yozilmaydi.

Mini-test

git reflog nimani ko'rsatadi?

HEAD ko'chishlarining to'liq jurnali.

Merge va rebase

Merge

Tarix saqlanadi, birlashtiruvchi commit bor
VS

Rebase

Tarix to'g'ri chiziq, commit SHA lari o'zgaradi

Umumiy branch da merge xavfsizroq.

Atamalar. Bosing

stash

bosing

Tugallanmagan ishni vaqtincha saqlash

rebase

bosing

Commit larni yangi bazaga ko'chirish

cherry-pick

bosing

Bitta commit ni ko'chirib olish

reflog

bosing

HEAD harakatlari jurnali

Xatodan tiklash

1. reflog

Kerakli holatni toping.

2. SHA

Commit identifikatorini oling.

3. Branch

Yangi branch da tiklang.

Qaysi buyruq qachon

VaziyatBuyruqEslatma
Ish tugamagan, branch almashtirish kerakgit stashpop bilan qaytarasiz
Branch ni yangilashgit rebase mainpush qilinmaganda
Commit larni birlashtirishrebase -isquash
Bitta commit kerakcherry-pickSHA kerak
Commit yo'qoldigit refloglokal jurnal

Pastga bosing: tanlash

Stash bilan ishlash

  1. Faylni o'zgartiring, commit qilmang.
  2. git stash push -m "ish" bajaring, git status toza ekanini tekshiring.
  3. git stash pop bilan o'zgarishni qaytaring.

Stash xatosi


git stash
git stash drop
  

Stash xatosi


git stash
git stash pop
  

Git raqamlarda

0
ta asosiy vosita: stash, rebase, cherry-pick, reflog
0
ta rebase -i misol buyrug'i: pick, squash, reword
0
ta oltin qoida: umumiy tarixni rebase qilmang

Ilg'or buyruqlar kuchli, lekin ehtiyotkorlik talab qiladi.

Amaliy topshiriq 20 daqiqa

OsonStash qiling: Yarim ishni stash ga qo'ying va ro'yxatni ko'ring.
OsonStash qaytaring: Stash ni qaytarib, ro'yxatdan olib tashlang.
O'rtaMerge yoki rebase: Umumiy main ni yangilashda qaysi biri xavfsizroq?
O'rtaCherry-pick: a1b2c3d commit ni main ga ko'chiring.
QiyinSquash: Oxirgi 3 commit ni bittaga birlashtirish buyrug'ini yozing.
BonusTiklash: reset --hard dan keyin commit ni tiklang.

Dars xulosasi

stash

Ishni chetga qo'yib, pop bilan qaytarish.

rebase / cherry-pick

Tarixni tartiblash va commit ko'chirish.

reflog

Xatodan keyin tiklash.

Uyga vazifa: stash, rebase, cherry-pick va reflog.

Keyingi dars: Git taglar va SemVer

Release yaratish

6-hafta · 17-dars