Pergunta

Eu observei um momento atrás que a minha .gitconfig -file era pública no meu repo. Ele contém minhas fichas secretas.

Eu git-add -u o arquivo e comprometida. Não estou certo se este comando remove o arquivo dos commits anteriores também.

Eu quero ter certeza e procure o arquivo em meus commits anteriores de tal forma que não há nenhum arquivo tal na minha história.

Como você pode procurar o arquivo em submissões anteriores?


Eu corro

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

I get

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

A mensagem de erro sugere-me que eu não tenho o arquivo no meu histórico de cometer.

Existe alguma maneira de pesquisar o arquivo na minha história cometer de tal forma que eu não preciso para executar a remoção de ver que eu não tenho o arquivo na minha história cometer?

Foi útil?

Solução

Resposta curta:

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

Observe o -f.

Resposta longa:

rm retornaria um código de retorno diferente de zero quando o arquivo não existe. filter-branch acho que isso é um erro e parar a reescrita. Adicionando -f evitar isso.

Nota:

Existe um comando alternativo:

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

que é muito mais rápido. Este comando está documentada na seção exemplo da página de homem.

Outras dicas

Para remover um arquivo de todo o passado histórico Git, você precisará reescrever todos os commits últimos usando algo como git filter-branch . No entanto, isso faz com que sua nova árvore mesclável com todas as árvores passado, então fazer isso com cuidado.

Redefinir todos os ewvisions no repositório para os padrões globais (.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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top