Estou tentando usar o .gitignore
arquivo para excluir templates.js
localizado na public/app/
pasta. Minhas.gitignore
arquivo se parece com este:
/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js
Mas quando eu dou check no Git Gui, o templates.js
arquivo ainda está aparecendo nele. Como posso excluir especificamente um arquivo usando .gitignore
?
.gitignore
apenas ignora o conteúdo a ser adicionado..gitignore
correta?Respostas:
Em contraste com o que o nome "ignorar" pode sugerir.
.gitignore
só é consultado quando vocêgit add
arquiva: em outras palavras, um arquivo já adicionado ao (índice do) repositório não será excluído com base no.gitignore
.Primeiro é melhor modificar o de
.gitignore
modo que o arquivo não seja mais adicionado. Adicione a seguinte linha ao.gitignore
arquivo:Em seguida, você precisa excluir o arquivo do repositório. Provavelmente você não deseja remover o arquivo de seu sistema de arquivos, isso pode ser feito com:
O
--cached
sinalizador garante que o arquivo não será removido do sistema de arquivos. (Se não for importante, você pode usargit rm public/app/template.js
, mas isso removerá o arquivo ).fundo
O motivo pelo qual
.gitignore
não é usado proativamente é porque às vezes você pode querer substituir o.gitignore
. Digamos, por exemplo, que você não deseja rastrear*.log
arquivos, você pode especificar*.log
no.gitignore
. Mas se houver um específico que você deseja rastrear, você pode adicionargit add -f some.log
. O-f
sinalizador obrigagit
a adicionar o arquivo.fonte
Uma vez que um arquivo tenha sido 'adicionado' ao repositório git uma vez, ele continuará a ser rastreado independentemente de estar ou não listado no arquivo .gitignore.
Suponho que você tenha adicionado o arquivo template.js anteriormente, caso em que continuará a ter alterações rastreadas, até que você o remova do repositório. Depois que o arquivo for removido do repositório, ele será ignorado de forma adequada por meio do arquivo .gitignore.
A maneira de remover um arquivo de um repositório git (linha de comando) sem excluí-lo é
Então, uma vez que você fizer isso e tentar fazer o commit com o arquivo em seu gitignore, não vai adiantar.
Observe que se você adicionar especificamente um arquivo que possui em seu gitignore, a adição manual do arquivo substituirá o gitignore.
fonte
Se você já está rastreando um arquivo (
git add
nele egit commit
),.gitignore
não vai ajudar.Eu acredito que o que você quer é parar de rastrear um arquivo e então usar
.gitignore
para excluí-lo. Para interromper o rastreamento de um arquivo, mas mantê-lo, use:git rm --cached <file>
fonte
Neste caso, você pode interromper o rastreamento
templates.js
comComo outros explicaram,
.gitignore
apenas ignora o conteúdo a ser adicionado. Por exemplo, se você costuma usargit add .
e temtemplates.js
em seu.gitignore
, então git não irá adicioná-lo.fonte