Eu tenho um projeto do Visual Studio existente no meu repositório. Recentemente, adicionei um arquivo .gitignore ao meu projeto e suponho que ele diga ao Git para ignorar os arquivos listados no arquivo.
Meu problema é que todos esses arquivos já estão sendo rastreados e, até onde eu sei, o Git não ignorará um arquivo que já foi rastreado antes de uma regra ser adicionada a esse arquivo para ignorá-lo.
Foi sugerido o uso: git rm --cached
e desmarcá-los manualmente, mas isso levará uma eternidade para examiná-los um por um.
Pensei em excluir o repositório e recriá-lo novamente, mas desta vez com o arquivo .gitignore presente, mas deve haver uma maneira melhor de fazer isso.
git rm --cached
diretórios inteiros com a-r
opção, se isso for útilRespostas:
Esta resposta resolveu meu problema:
Primeiro, confirme todas as alterações pendentes.
Em seguida, execute este comando:
Isso remove tudo do índice e, em seguida, basta executar:
Comprometa-o:
fonte
git push origin
também para refletir as alterações no repositório remoto..gitignore is now working
mensagem. :)Crie um arquivo .gitignore, para fazer isso, basta criar qualquer arquivo .txt em branco.
Em seguida, você deve alterar o nome, escrevendo a seguinte linha no cmd (onde
git.txt
está o nome do arquivo que você acabou de criar):rename git.txt .gitignore
Em seguida, você pode abrir o arquivo e gravar todos os arquivos não rastreados que deseja ignorar definitivamente. Por exemplo, o meu fica assim:
`` ``
Existe toda uma coleção de arquivos .gitignore úteis do GitHub
Depois de ter isso, você precisa adicioná-lo ao seu repositório git, como qualquer outro arquivo, mas ele deve estar na raiz do repositório.
Então, no seu terminal, você deve escrever a seguinte linha:
git config --global core.excludesfile ~ / .gitignore_global
Do documento oficial:
Se o repositório já existir, você deverá executar estes comandos:
Se a etapa 2 não funcionar, você deve escrever a rota do furo dos arquivos que deseja adicionar.
fonte
Conforme especificado aqui Você pode atualizar o índice:
Ao fazer isso, os arquivos não aparecerão em
git status
ougit diff
.Para começar a rastrear os arquivos novamente, você pode executar:
fonte
Se você adicionou
.gitignore
tarde demais, o git continuará rastreando os arquivos já confirmados, independentemente. Para corrigir isso, você sempre pode remover todas as instâncias em cache dos arquivos indesejados.Primeiro, para verificar quais arquivos você realmente está rastreando, você pode executar:
git ls-tree --name-only --full-tree -r HEAD
Digamos que você encontrou arquivos indesejados em um diretório como
cache/
esse, é mais seguro segmentar esse diretório em vez de todos os seus arquivos.Então, em vez de:
git rm -r --cached .
É mais seguro direcionar para o arquivo ou diretório indesejado:
git rm -r --cached cache/
Em seguida, prossiga para adicionar todas as alterações,
git add .
e comprometer ...
git commit -m ".gitignore is now working"
Referência: https://amyetheredge.com/code/13.html
fonte
Aqui está uma maneira de "rastrear" todos os arquivos que seriam ignorados no conjunto atual de padrões de exclusão:
Isso deixa os arquivos no seu diretório de trabalho, mas os remove do índice.
O truque usado aqui é fornecer um arquivo de índice inexistente para o git ls-files, para que ele pense que não há arquivos rastreados. O código do shell acima solicita todos os arquivos que seriam ignorados se o índice estivesse vazio e os remove do índice real com git rm.
Após os arquivos serem "não rastreados", use o status git para verificar se nada de importante foi removido (se houver, ajuste seus padrões de exclusão e use git reset - path para restaurar a entrada de índice removida). Em seguida, faça um novo commit que deixe de fora o "grosseiro".
O "crud" ainda estará em qualquer commit antigo. Você pode usar o git filter-branch para produzir versões limpas dos commits antigos, se você realmente precisar de um histórico limpo (nb, usando git filter-branch irá "reescrever o histórico", portanto, isso não deve ser feito de ânimo leve se houver algum colaborador que tenha puxado qualquer um dos seus históricos confirma após a introdução do "crud").
fonte
Remova arquivos da área de preparação
Adicione todas as alterações
Comprometa-o:
fonte
Eu acho que essa é uma maneira fácil de adicionar um arquivo .gitignore a um repositório existente.
Pré - requisito :
Você precisa de um navegador para acessar sua conta do github.
Passos
Diverta-se!
fonte
Use
git clean
Obtenha ajuda para esta execução
Se você deseja ver o que aconteceria primeiro, certifique-se de passar a opção -n para uma execução a seco:
Para remover o lixo com gitingnored
Cuidado: você pode estar ignorando arquivos de configuração locais como database.yml, que também seriam removidos. Use por sua conta e risco.
Então
fonte