Domanda

Ho notato un momento fa che il mio .gitconfig era pubblico nel mio repository. Contiene i miei token segreti.

I git-add -u il file e il commit. Non sono sicuro che questo comando rimuova anche il file dai precedenti commit.

Voglio essere sicuro e cercare il file nei miei precedenti commit in modo tale che non ci sia un tale file nella mia cronologia.

Come puoi cercare il file nei commit precedenti?


Corro

git filter-branch --tree-filter 'rm .gitconfig' master     # Thanks to Greg!

Ottengo

Rewrite 84dabfa2ea195ce9aad0309216858b302150017c (1/25)rm: .gitconfig: No such file or directory
tree filter failed: rm .gitconfig

Il messaggio di errore mi suggerisce che non ho il file nella mia cronologia di commit.

Esiste un modo per cercare il file nella mia cronologia di commit in modo tale che non ho bisogno di eseguire la rimozione per vedere che non ho il file nella mia cronologia di commit?

È stato utile?

Soluzione

Risposta breve:

git filter-branch --tree-filter 'rm -f .gitconfig' master   

Nota -f.

Risposta lunga:

rm restituisce un codice di ritorno diverso da zero quando il file non esiste. filter-branch pensa che si tratti di un errore e interrompi la riscrittura. L'aggiunta di <=> evita questo.

Nota:

Esiste un comando alternativo:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .gitconfig' master

che è MOLTO più veloce. Questo comando è documentato nella sezione ESEMPIO della pagina man.

Altri suggerimenti

Per rimuovere un file da tutta la cronologia di Git passata, dovrai riscrivere tutti i commit passati usando qualcosa come git filter-branch . Tuttavia, farlo rende il tuo nuovo albero immergibile con tutti gli alberi passati, quindi fallo con cura.

Ripristina tutte le ewvisioni nel repository sui valori predefiniti globali (.gitconfig).

git filter-branch -f --commit-filter 'GIT_COMMITTER_NAME="`git config --get user.name`";GIT_AUTHOR_NAME="`git config --get user.name`";GIT_COMMITTER_EMAIL="git config --get user.email";GIT_AUTHOR_EMAIL="`git config --get user.email`";git commit-tree "$@";' HEAD
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top