Hvordan du kan gi filter-forgren alle kommandoer?

Hvordan du kan gi filter-forgren alle kommandoer?

git filter-branch”Kommando skriver om hele historien til grenen, noe som betyr at eventuelle forpliktelser som blir fjernet eller endret, vil gå tapt permanent. Derfor antydes det sterkt at du tar sikkerhetskopi av depotet ditt før du bruker denne kommandoen. Dessuten oppretter denne kommandoen nye forpliktelser og Sha Hash. Så det anbefales ikke å bruke den i en offentlig gren.

Denne artikkelen vil diskutere:

    • Hva er de grunnleggende filteralternativene som er tilgjengelige for “git filter-branch”Kommando?
    • Hvordan bruke “git filter-branch”Kommando med“-trefilter”Alternativ?
    • Hvordan bruke “git filter-branch”Kommando med“-Indeksfilter”Alternativ?
    • Hvordan bruke “git filter-branch”Kommando med“-MSG-filter”Alternativ?

Hva er de grunnleggende filteralternativene som er tilgjengelige for kommandoen “Git Filter-Branch”?

De grunnleggende filteralternativene for “git filter-branch”Kommandoer er gitt nedenfor:

Filteralternativer Beskrivelse
-Env-filter Endre miljøet der brukere gjør forpliktelser.
-trefilter Omskriv treet og dets innhold.
-Indeksfilter Omskriv indeksen.
-Foreldre-filter Omskriv Commits overordnede liste.
-MSG-filter Skriv om forpliktelsesmeldingene.
-forpliktelsesfilter Utføre forpliktelser.
-Tagnavn-filter Skriv om tagnavnet.
-Beskjær Instruere git-filter-branch for å fjerne tomme forpliktelser.

Hvordan du bruker "git filter-branch" -kommandoen med alternativet "-tre-filter"?

Noen ganger ønsker brukere å fjerne en spesifikk fil fra alle forpliktelser på grunn av noen grunner, for eksempel om filen inneholder noen konfidensiell eller hemmelig informasjon. I denne situasjonen kan du bruke "git filter -branch -tre -filter 'rm -rf'”Kommando for å fjerne en bestemt fil fra hele historien til et depot.

Følg de oppgitte instruksjonene for å gjøre det.

Trinn 1: Naviger til lokalt depot

Først må du skrive ut den gitte below-kommandoen og omdirigere til ønsket katalog:

$ CD "C: \ git \ local_repo"


Trinn 2: Se depotinnhold

Neste, vis det gjeldende depotets innhold ved hjelp av følgende kommando:

$ ls


I henhold til utdataene nedenfor inneholder det gjeldende depotet to filer. Velg en bestemt fil som må slettes. For eksempel har vi valgt "fil1.tekst”Fil:


Trinn 3: Fjern fil fra hele historien

Kjør deretter den oppgitte kommandoen sammen med det valgte filnavnet for å fjerne den filen:

$ git filter-branch-Tre-filter 'rm -rf file1.tekst'


Her:

    • -trefilter”Alternativet brukes til å spesifisere en kommando for å kjøre på hvert tre i grenen.
    • rm -rf”Alternativet brukes til å slette“fil1.tekst”Fil:


Merk: Hvis filen ikke er til stede i noen forpliktelser, må du utføre ""RM -filnavn”Alternativet fungerer ikke for trær og forpliktelser.

Trinn 4: Bekreft endringer

Til slutt, sørg for om filen er fjernet ved å se depotets innhold:

$ ls


Hvordan du bruker "git filter-branch" -kommandoen med alternativet "-index-filter"?

Hvis brukeren ønsker å endre indeksen for depotet i stedet for hele grenen, "git filter-branch -index-filter”Kommando kan brukes. Dette kan være nyttig for å fjerne spesifikke filer fra indeksen.

Trinn 1: Se filer av depot

Utfør kommandoen nedenfor for å liste opp de tilgjengelige filene i det nåværende depotet:

$ git ls-files


Bildet nedenfor viser listen over filer. Velg ønsket fil du vil fjerne fra indeksen. For eksempel har vi valgt "File4.tekst”Fil:


Trinn 2: Fjern fil fra indeksen

Fjern deretter den valgte filen fra indeksen ved å skrive ut følgende kommando:

$ git filter-branch --index-filter 'git rm-cached --ignore-unmatch file4.tekst'


Her:

    • -Indeksfilter”Angir kommandoen som skal brukes til å filtrere indeksen.
    • -Hurtigbufret”Alternativet fjerner/sletter filer fra indeksen.
    • -Ignorer-unmatch”Ignorerer eventuelle feil:



Trinn 3: Bekreft endringer

Til slutt, kjør den gitt-ga kommandoen for å sikre at filen er slettet fra indeksen:

$ git ls-files


Hvordan du bruker "git filter-branch" -kommandoen med alternativet "-msg-filter"?

Noen ganger vil brukere omskrive den spesifikke forpliktelsesmeldingen fra logghistorikken. For dette formålet, "git filter -branch -f -msg -filter 'sed “s /// g”' --all" kan bli brukt.

Trinn 1: Se forpliktelseshistorikken

Først må du sjekke Commit Sha Hash History of the Current Working Repository:

$ git log --oneline


I skjermbildet nedenfor kan forpliktelseshistorikken sees. Velg ønsket forpliktelsesmelding som må skrives om. For eksempel har vi valgt "File2 lagt til”Forplikt melding:


Trinn 2: Omskriving Commit Message

Neste, utfør følgende kommando for å omskrive den valgte forpliktelsesmeldingen:

$ git filter-branch -f--msg-filter 'sed "s/file2 lagt til/legge til file2/g"'-alt


Her:

    • -MSG-filter”Alternativet brukes til å endre forpliktelsesmeldingen.
    • -f”Alternativet utfører operasjonen kraftig.
    • sed”Kommandosøk etter strengen”File2 lagt til”I forpliktelsesmeldingen og erstatter den med“Legge til File2" beskjed.
    • - -alle”Alternativet bruker filteret på alle grener i depotet:



Trinn 3: Verifisering

Til slutt må du bekrefte endringene ved å sjekke forpliktelsen i historien:

$ git log --oneline


Det kan observeres at den gamle forpliktelsesmeldingen er erstattet med den nye forpliktelsesmeldingen:


Det handlet om “git filter-branch”Kommando i git.

Konklusjon

git filter-branch”Kommando brukes til å omskrive forpliktelseshistorien til en bestemt gren eller alle grener i et depot. Det lar brukere utføre forskjellige operasjoner på forpliktelser, for eksempel å fjerne filer, endre forpliktelsesmeldinger osv. Dessuten kan dette brukes til å rydde opp i et spesifikt depot og fjerne sensitiv informasjon. Denne artikkelen forklarte om kommandoen “Git Filter-Branch” og dens filteralternativer.