Sobes.tech
Junior

Ինչպես փոխել նշանը հանձնարարության մեջ?

sobes.tech AI

Պատասխան AI-ից

Կան մի քանի եղանակներ՝ փոփոխելու նշանը կոմիտեում.

  1. Վերջին կոմիտեի փոփոխություն (երբ դեռ չի ուղարկվել).

    Կարող եք օգտագործել git commit --amend հրամանը։ Դա թույլ է տալիս փոխել վերջին կոմիտեի հաղորդագրությունը կամ ավելացնել/հեռացնել ֆայլեր։

    # Վերջին կոմիտեի հաղորդագրության փոփոխություն
    git commit --amend -m "Նոր հաղորդագրություն այլ նշանով"
    

    Այս հրամանի կատարման հետո բացվում է տեքստային խմբագիր, որտեղ կարող եք խմբագրել կոմիտեի հաղորդագրությունը։

  2. Ամենահին կոմիտեների փոփոխություն (օգտագործելով ինտերակտիվ rebase):

    Այս մեթոդը ավելի բարդ է, բայց թույլ է տալիս փոխել ցանկացած կոմիտե պատմության մեջ։ Այս հրամանի օգտագործումը վերագրում է պատմությունը, ուստի խորհուրդ չի տրվում այն օգտագործել այն կոմիտեների հետ, որոնք արդեն ուղարկվել են ընդհանուր ռեպոզիտորին, որի վրա աշխատում են ուրիշներ։

    # Ինտերակտիվ rebase սկսելը այն կոմիտեից, որը պետք է փոխվի
    git rebase -i HEAD~N  # որտեղ N - է վերադարձի կոմիտեների քանակը
    

    Այս հրամանի կատարման հետո բացվում է տեքստային խմբագիր՝ վերջին N կոմիտեների ցանկով։ Գտեք այն կոմիտեն, որը ցանկանում եք փոխել, և փոխեք pick բառը reword-ով (կամ r

    Պահպանեք և փակեք խմբագիրը։ Այնուհետև Git-ը առաջարկում է փոխել նշված reword-ով նշված յուրաքանչյուր կոմիտեի հաղորդագրությունը։

    Օրինակ՝ ինտերակտիվ rebase-ի խմբագրողի բովանդակությունը:

    pick a1b2c3d Կոմիտ 1: Առաջին հաղորդագրություն
    pick e4f5g6h Կոմիտ 2: Մյուս հաղորդագրություն
    pick i7j8k9l Կոմիտ, որը պետք է փոխել
    

    Փոխեք այն՝

    pick a1b2c3d Կոմիտ 1: Առաջին հաղորդագրություն
    pick e4f5g6h Կոմիտ 2: Մյուս հաղորդագրություն
    reword i7j8k9l Կոմիտ, որը պետք է փոխել
    

    Պահպանեք և դուրս եկեք։ Git-ը կանգ կառնի երրորդ կոմիտեի վրա և առաջարկում է փոխել նրա հաղորդագրությունը։

  3. git filter-branch օգտագործելը (ավելի բարդ փոխակերպումների համար):

    Այս մեթոդը ավելի հզոր է, բայց պետք է օգտագործել զգուշությամբ։ Այն թույլ է տալիս վերագրել պատմությունը՝ կիրառելով սցրիպտ յուրաքանչյուր կոմիտեի վրա։ Կարող է օգտագործվել զանգվածային նշանների փոփոխության համար կոմիտեների հաղորդագրություններում։

    # Օրինակ՝ `filter-branch`-ի օգտագործում նշանի `_`-ը փոխելու համար `-`-ով կոմիտեների հաղորդագրություններում
    git filter-branch --msg-filter 'sed "s/_/-/"' -- --all
    

    Դա վերագրում է բոլոր ճյուղերի պատմությունը։ Օգտագործել զգուշությամբ։

Մեծ կարևորություն ունի: Փոփոխել պատմությունը՝ արդեն ուղարկված կոմիտեների, կարող է առաջացնել խնդիրներ մյուս ծրագրավորողների համար։ Նրանք պետք է սինխրոնիզացնեն իրենց տեղական ռեպոզիտորիաները փոփոխված պատմության հետ, ինչը կարող է պահանջել ուժեղացված ներբեռնում (git pull --rebase կամ git fetch && git reset --hard origin/branch