Ինչպես կատարել փոփոխությունների վերագրում գլխավոր ճյուղում (main branch):
sobes.tech AI
Պատասխան AI-ից
Օգտագործեք git revert կամ git rebase (ինտերակտիվ ռեժիմում կամ git rebase --onto ավելի բարդ սցենարների համար) հետագա git push -f-ով:
git revert ստեղծում է նոր կոմիտ, որը վերացնում է նշված կոմիտների փոփոխությունները: Սա ավելի անվտանգ տարբերակ է, քանի որ պահպանում է պատմությունը:
# Վերջին կոմիտի վերացում
git revert HEAD
# կոնկրետ կոմիտի վերացում ըստ նրա հեշի
git revert <commit-hash>
# կոմիտների տիրույթը վերացնել (առանց վերջին)
git revert <սկիզբ-հեշ>..<ավարտ-հեշ>
# կոմիտների տիրույթը վերացնել (ներառյալ երկուսը)
git revert -n <սկիզբ-հեշ>^..<ավարտ-հեշ>
# փոփոխությունները վերացնել, որոնք կիրառվել են որպես մի ամբողջական փաթեթ՝ առանց առանձին կոմիտների
ngit revert -n <commit-hash-կամ-տիրույթ>
# Ստեղծված կոմիտի կիրառումը
git commit -m "Revert changes"
git rebase թույլ է տալիս վերաշարադրել կոմիտների պատմությունը: Կարող է օգտագործվել հեռացնելու, միավորելու կամ կարգի փոփոխության համար: Պահանջում է զգուշություն, հատկապես ընդհանուր ճյուղերում:
# Ինտերակտիվ rebase-ի մեկնարկ վերջին N կոմիտների համար
git rebase -i HEAD~N
# Բացվող խմբագրիչում փոխել 'pick'-ը 'drop'-ին՝ այն կոմիտների համար, որոնք ուզում եք հեռացնել:
# Սխեման՝
git rebase --onto master D feature
# Որտեղ՝
# master - նպատակային ճյուղը, որի վրա տեղափոխում ենք
# D - կոմիտ, մինչև որի համար բացառվում է տեղափոխությունը
# feature - սկզբնական ճյուղը, որի կոմիտները տեղափոխում ենք
Հետո git revert կամ git rebase կիրառելուց հետո, անհրաժեշտ է ուժեղ սեղմել փոփոխությունները՝ git push -f կամ git push --force-with-lease, քանի որ տեղական պատմությունը տարբերվում է հեռավորից:
# Միջնորդական ուղարկում rebase- ից հետո
git push -f origin main
# Ավելի անվտանգ ուժեղ ուղարկում
git push --force-with-lease origin main
Մեծ կարևորություն: Ընդհանուր ճյուղի (main) պատմությունը վերաշարադրելը շատ չի խորհուրդ տրվում, քանի որ դա կարող է խանգարել մյուս ծրագրավորողների աշխատանքին, ովքեր արդեն սինխրոնիզացվել են նախորդ պատմության հետ: Առավել հարմար է օգտագործել git revert: git rebase-ն միայն բացառիկ դեպքերում և լիակատար վստահությամբ կիրառել, սովորաբար թիմի համաձայնությամբ։