IL "GRANCH FILTRO GIT"Il comando riscrive l'intera cronologia della filiale, il che significa che qualsiasi commit che viene rimosso o modificato andrà perso in modo permanente. Pertanto, è fortemente suggerito di eseguire il backup del tuo repository prima di utilizzare questo comando. Inoltre, questo comando crea nuovi commit e sha hash. Quindi, non è consigliabile usarlo in una filiale pubblica.
Questo articolo discuterà:
Quali sono le opzioni di filtro di base disponibili per il comando "GIT Filter-Branch"?
Le opzioni di filtro di base per "GRANCH FILTRO GIT"I comandi sono riportati di seguito:
Opzioni di filtro | Descrizione |
-Filtro Env | Modifica l'ambiente in cui gli utenti effettuano commit. |
-filtro ad albero | Riscrivi l'albero e il suo contenuto. |
-filtro indice | Riscrivi l'indice. |
-filtro genitore | Riscrivi l'elenco dei genitori del commit. |
-filtro msg | Riscrivi i messaggi di commit. |
-commit-filtro | Eseguire commit. |
-tag-name-filter | Riscrivi il nome del tag. |
-prugna-vuoto | Istruire il ramo del filter git di rimuovere i commit vuoti. |
Come utilizzare il comando "Git Filter-Branch" con l'opzione "-Tree-Filter"?
A volte gli utenti vogliono rimuovere un file specifico da tutti i commit per alcuni motivi, come se il file contenga alcune informazioni riservate o segrete. In questa situazione, utilizza il "GIT Filter -ranch -tree -filter 'rm -rf'"Comando per rimuovere un determinato file dall'intera cronologia di un repository.
Segui le istruzioni fornite per farlo.
Passaggio 1: vai al repository locale
Innanzitutto, scrivi il comando a pezzi dato e reindirizza alla directory desiderata:
$ cd "c: \ git \ local_repo"
Passaggio 2: visualizzare il contenuto del repository
Quindi, visualizzare il contenuto del repository corrente utilizzando il comando seguente:
$ ls
Secondo l'output di seguito, il repository corrente contiene due file. Scegli un particolare file che deve essere eliminato. Ad esempio, abbiamo selezionato il "File1.TXT" file:
Passaggio 3: rimuovere il file dall'intera cronologia
Quindi, eseguire il comando fornito insieme al nome del file selezionato per rimuovere quel file:
$ git filter-ranch-Tree-filter 'RM -rf File1.TXT'
Qui:
Nota: Se il file non è presente in alcuni commit, eseguire il "'FileName RM"L'opzione non funzionerà per alberi e impegni.
Passaggio 4: verificare le modifiche
Infine, assicurarsi se il file è stato rimosso visualizzando il contenuto del repository:
$ ls
Come utilizzare il comando "GIT Filter-Branch" con l'opzione "-Index-Filter"?
Se l'utente desidera modificare l'indice del repository anziché l'intero ramo, il "GIT FILTER-BRANCH -Indice-filtro"Il comando può essere utilizzato. Questo può essere utile per rimuovere file specifici dall'indice.
Passaggio 1: visualizzare i file del repository
Esegui il comando indicato di seguito per elencare i file disponibili del repository corrente:
$ git ls-files
L'immagine seguente visualizza l'elenco dei file. Seleziona il file desiderato che si desidera rimuovere dall'indice. Ad esempio, abbiamo selezionato il "file4.TXT" file:
Passaggio 2: rimuovere il file dall'indice
Quindi, rimuovere il file selezionato dall'indice scrivendo il seguente comando:
$ git filter-ranch --index-filter 'git rm-cached --ignore-unmatch file4.TXT'
Qui:
Passaggio 3: verificare le modifiche
Infine, eseguire il comando fornito per garantire che il file sia stato eliminato dall'indice:
$ git ls-files
Come utilizzare il comando "GIT Filter-Branch" con l'opzione "-MSG-Filter"?
A volte gli utenti vogliono riscrivere il messaggio di commit specifico dalla cronologia dei registri. A tale scopo, il "Git Filter -ranch -f -msg -filter 'sed “s /// g» --all" può essere utilizzata.
Passaggio 1: visualizza la cronologia dei commit
Innanzitutto, controlla la storia di commit sha hash dell'attuale repository di lavoro:
$ git log --oneline
Nello screenshot seguente, la storia del commit può essere vista. Scegli il messaggio di commit desiderato che deve essere riscritto. Ad esempio, abbiamo selezionato il "File2 aggiunto"Commit Message:
Passaggio 2: riscrivi il messaggio di commit
Quindi, eseguire il seguente comando per riscrivere il messaggio di commit selezionato:
$ git filter-branch -f --msg-filter 'sed "s/file2 added/adding file2/g"' -- --all
Qui:
Passaggio 3: verifica
Infine, verifica le modifiche controllando il commit nella storia:
$ git log --oneline
Si può osservare che il vecchio messaggio di commit è stato sostituito con il nuovo messaggio di commit:
Questo riguardava tutto il "GRANCH FILTRO GIT"Comando in Git.
Conclusione
IL "GRANCH FILTRO GIT"Il comando viene utilizzato per riscrivere la cronologia di commit di una particolare filiale o di tutte le filiali in un repository. Consente agli utenti di eseguire varie operazioni su commit, come la rimozione di file, la modifica dei messaggi di commit, ecc. Inoltre, questo può essere utilizzato per ripulire un repository specifico e rimuovere le informazioni sensibili. Questo articolo ha spiegato il comando "Git Filter-Branch" e le sue opzioni di filtro.