Junior
cherry-pick чист?
sobes.tech AI
Ҷавоб аз AI
git cherry-pick барои интиқол додани як ё чанд комит аз як шоха ба шохаи дигар истифода мешавад.
Принсипи кор:
- Комит (ё комитҳо) муайяншударо дар шохаи манбаъ интихоб мекунад.
- Тағйирот дар ин комитҳоро ба шохаи фаъол ҳозира татбиқ мекунад.
- Комитҳои нав дар шохаи ҳозира бо ҳамон тағйирот ва паёмҳо, ки дар комитҳои аслӣ буданд, месозад.
Вақте ки истифода мешавад:
- Тасҳеҳоти мушаххас аз як шоха (масалан, истеҳсолот) ба дигаре (масалан, рушд) интиқол додан, бе таъсир расондан ба дигар тағйирот.
- Татбиқи тағйирот аз як шохаи хусусият ба дигар, бе пурра омезиш додани онҳо.
- Бекор кардани merge-ҳои нодуруст бо нигоҳ доштани комитҳои алоҳида.
Фарқият бо merge ва rebase:
merge: Ҳаммезиши тамоми таърихи тағйирот аз як шоха ба дигар.rebase: Навиштани таърихи комитҳо, гузоштани онҳо ба асоси нав.cherry-pick: Танҳо комитҳои интихобшударо татбиқ мекунад, комитҳои нав месозад ва таърихи комитҳои аслӣ тағир намедиҳад.
Командаи асосӣ:
# Интиқоли як комит
git cherry-pick <commit-hash>
# Интиқоли чанд комит (дар тартиби нишон додашуда)
git cherry-pick <commit-hash-1> <commit-hash-2> ...
Масалан:
Гуфта мешавад, ки ду шоха ҳаст: main ва feature. Дар шохаи feature комит fix-typo анҷом дода шудааст. Ин комит бояд ба шохаи main интиқол дода шавад.
# Ба шохаи ҳадаф гузаред
git checkout main
# Бо истифода аз хеши комит аз шохаи `feature` cherry-pick кунед
git cherry-pick 7f3bca2 # Масалан хеш
Пас аз иҷрои команда, дар шохаи main комити нав бо ҳамон тағйиротҳо, ки дар fix-typo буданд, пайдо мешавад, аммо бо хеши дигар.