Qanday qilib commitda belgi o'zgartiriladi?
sobes.tech AI
AIdan javob
Commitdagi belgi bilan o'zgartirishning bir nechta usullari mavjud:
-
So'nggi commitni o'zgartirish (hali yuborilmagan):
Siz
git commit --amendbuyrug'idan foydalanishingiz mumkin. Bu so'nggi commit xabarini o'zgartirish yoki fayllarni qo'shish/olib tashlash imkonini beradi.# So'nggi commit xabarini o'zgartirish git commit --amend -m "Yangi commit xabari boshqa belgi bilan"Bu buyruqni bajargandan so'ng, sizga commit xabarini tahrirlash uchun matn muharriri ochiladi.
-
Kuyidagi eski commitlarni o'zgartirish (interaktiv rebase yordamida):
Bu usul biroz murakkabroq, lekin tarixdagi har qanday commitni o'zgartirishga imkon beradi. Bu buyruq tarixni yozib oladi, shuning uchun uni boshqa odamlar bilan ishlayotgan umumiy repozitoriyga yuborilgan commitlar bilan qilish tavsiya etilmaydi.
# O'zgartirmoqchi bo'lgan commitdan oldingi commitdan interaktiv rebase boshlash git rebase -i HEAD~N # bu yerda N - HEAD dan qancha commit orqaga qarabBu buyruqni bajargandan so'ng, oxirgi N commit ro'yxati bilan matn muharriri ochiladi. O'zgartirmoqchi bo'lgan commitni toping va uning oldiga joylashgan
pickso'zinirewordyokirbilan almashtiring.Muharrirni saqlang va yoping. Git,
rewordbilan belgilangan har bir commitning xabarini o'zgartirishni taklif qiladi.Interaktiv rebase uchun misol mazmuni:
pick a1b2c3d Commit 1: Asl xabar pick e4f5g6h Commit 2: Yana bir xabar pick i7j8k9l Commit 3: O'zgartiriladigan commitBuni quyidagicha o'zgartiring:
pick a1b2c3d Commit 1: Asl xabar pick e4f5g6h Commit 2: Yana bir xabar reword i7j8k9l Commit 3: O'zgartiriladigan commitSaqlang va yoping, Git uchinchi commitda to'xtaydi va uning xabarini o'zgartirishni so'raydi.
-
git filter-branchyordamida (murakkabroq o'zgartirishlar uchun):Bu usul juda kuchli, ammo ehtiyot bo'lish kerak. Bu har bir commitga skriptni qo'llash orqali tarixni yozib oladi. Bu commit xabarlaridagi belgilarning masshtabda o'zgarishi uchun ishlatilishi mumkin.
# `_` belgisini `-` bilan almashtirish uchun filter-branch misoli git filter-branch --msg-filter 'sed "s/_/-/"' -- --allBu barcha tarmoqlarning tarixini yozib oladi. Juda ehtiyot bo'ling!
Muhim eslatma: Zaten yuborilgan commitlarning tarixini o'zgartirish boshqa dasturchilarga muammo tug'dirishi mumkin. Ular o'zlarining mahalliy repozitoriyalarini o'zgartirilgan tarix bilan sinxronlashtirishlari kerak bo'ladi, bu esa majburiy yuklab olish (git pull --rebase) yoki reset qilish (git fetch && git reset --hard origin/branch) talab qilishi mumkin.
Agar commit allaqachon yuborilgan bo'lsa, tarixni yozib olish o'rniga, yangi commit qilish tavsiya etiladi.