Middle
Тафовут байни фармонҳои merge ва rebase дар системаи идоракунии версияҳои Git чист?
sobes.tech AI
Ҷавоб аз AI
merge шохаҳои гуногунро бо эҷоди як коммити нав бо ду падар муттаҳид мекунад, таърихи тағиротро нигоҳ медорад. rebase коммити як шохаро ба болои дигар мегузаронад, таърихи онро хаттӣ мекунад, аммо hash-ҳои коммитҳоро тағир медиҳад.
-
Дар
merge:- Як коммити нав барои якҷоягӣ эҷод мешавад.
- Таърихи шохаҳо равшан мемонад.
- Мумкин аст, ки муноқишаҳо пайдо шаванд, ки дар коммити нав ҳал карда мешаванд.
# Намунаи истифодаи merge git checkout feature-branch git merge main # Ҳал кардани муноқишаҳо, агар ҳастанд git commit -m "Муштарак кардани main ба feature-branch" -
Дар
rebase:- Коммитҳо "гузаронида" мешаванд ва ба болои шохаҳои мақсадӣ татбиқ мешаванд.
- Таърихи хаттӣ мешавад, метавонад "тазаваттар" ба назар расад.
- Hash-ҳои коммитҳои гузаронидашуда тағир меёбанд.
- Мумкин аст, ки муноқиша барои ҳар коммити гузаронидашуда пайдо шавад.
- Ин тавсия дода намешавад барои шохаҳое, ки аллакай нашр шудаанд ва дигарон истифода мебаранд, зеро таърихи онро тағир медиҳад.
# Намунаи истифодаи rebase git checkout feature-branch git rebase main # Ҳал кардани муноқишаҳо, агар ҳастанд (барои ҳар муноқиша қайтро такрор кунед) git add . git rebase --continue # ё git rebase --skip барои гузаштан аз коммит # ё git rebase --abort барои бекор кардан
| Хусусият | merge | rebase |
|---|---|---|
| Таърихи тағирот | Ҳифз мекунад таърихро | Меъёр мекунад таърихро (навишта мешавад) |
| Commit-ҳо | Эҷод мекунад commit-и нав барои якҷоягӣ | Гузаронидашудаи commit-ҳоро мегузарад |
| Хати таърих | Не (шохаҳо фарқ мекунанд) | Бале (тартибро содда мекунад) |
| Назари | Неструктурӣ | Потенсиалӣ нобудкунанда |
| Истифода | Шохаҳои умумӣ ва ҷамъиятӣ | Шохаҳои маҳаллӣ ва шахсӣ |