Junior
Чӣ тавр метавон чанд коммитро бо Git ба як коммит табдил дод?
sobes.tech AI
Ҷавоб аз AI
Барои якҷоя кардани чандин коммитҳо дар Git, фармони git rebase -i <commit-ish>-ро истифода баред.
- Коммити, то ки ба он ҳамроҳ кунед, муайян кунед. Ин метавонад хеши коммит, шоха ё теги бошад.
- Фармони
git rebase -i <commit-ish>-ро иҷро кунед. Масалан, барои ҳамроҳ кардани 3 коммити охирин:git rebase -i HEAD~3 - Вориди муҳаррири матн бо рӯйхати коммитҳо мешавад. Коммити аввал дар рӯйхат (болға) бояд калимаи
pickдошта бошад. Коммитҳои дигар, ки мехоҳед бо аввал ҳамроҳ кунед, бояд азpickбаsquashёsтағир дода шаванд.pick abcd123 Коммити ибтидоӣ squash efgh456 Баъди 1-уми функсия A squash ijkl789 Баъди 2-юми функсия A ... - Ҳуҷҷатро сабт ва мебароред.
- Ҳуҷҷати нав барои эҷоди паёми коммит кушода мешавад. Паёмҳоро ҳамроҳ ё таҳрир кунед, то паёми маънӣ барои коммити нав эҷод кунед.
// Паёми барои коммити нав // Ин якҷоягии 3 коммитҳо мебошад. // Коммити ибтидоӣ // Баъди 1-уми функсия A // Баъди 2-юми функсия A - Ҳуҷҷатро сабт ва мебароред. Git коммитҳоро ҳамроҳ мекунад.
Агар шоха, ки шумо дар он кор мекунед, аллакай ба анбори дур фиристода шудааст, бояд push-и маҷбурӣ бо рамзи -f ё --force-with-lease анҷом диҳед.
git push origin <шоха_атон> -f
Ин зарур аст, зеро таърихи коммитҳо тағир ёфтааст. Push-и маҷбурӣ метавонад хатарнок бошад, агар дигар таҳиягарон аллакай дар ин шоха кор мекунанд. Ҳамеша санҷед, ки оё push-и маҷбурӣ кардан бехатар аст.
Алтернатива, шумо метавонед рамзҳои --fixup ва --autosquash-ро ҳангоми коммит истифода баред ва сипас git rebase -i --autosquash <commit-ish>-ро барои ҳамроҳкунии автоматӣ иҷро кунед.