Adicione .gitignore ao gitignore

140

É possível adicionar o .gitignorearquivo a .gitignoresi próprio?

.gitignore

Não funciona embora

Não quero vê-lo nos arquivos editados

7ochem
fonte
8
Por que você gostaria de fazer isso? basta confirmar suas alterações. .gitignoredeve fazer parte do seu repositório, listando padrões de arquivos que são lixo eletrônico para o projeto.
precisa saber é o seguinte
1
.gitignoredeve fazer parte do seu repositório, para que todos na sua equipe estejam ignorando ou fazendo check-in nos mesmos arquivos. Só porque .gitignoreestá em suas pastas de código em algum lugar, não significa que você precisa implantá-lo.
Ryan Lundy 23/05
possível duplicata de Como digo ao Git para ignorar ".gitignore"?
Esse brasileiro
você pode usar git rm --cached .gitignoree rastrear .gitignore
hassanzadeh.sd

Respostas:

170

O .gitignoreobjetivo do arquivo é impedir que todos os que colaboram em um projeto comprometam acidentalmente alguns arquivos comuns em um projeto, como arquivos de cache gerados. Portanto, você não deve ignorar .gitignore, pois ele deve ser incluído no repositório.

Se você deseja ignorar arquivos em apenas um repositório, mas deseja evitar confirmar a lista de ignorados (por exemplo, arquivos pessoais), é possível incluí-los .git/info/excludenesse repositório.

Se você deseja ignorar certos arquivos em todos os repositórios da sua máquina, é possível criar o arquivo ~/.gitignore_globale executar

git config --global core.excludesfile ~/.gitignore_global
Lars Nyström
fonte
36

Um .gitignore pode ignorar a si mesmo se nunca foi verificado:

mhaase@ubuntu:~$ git --version
git version 1.7.9.5
mhaase@ubuntu:~$ git init temp
Initialized empty Git repository in /home/mhaase/temp/.git/
mhaase@ubuntu:~$ cd temp
mhaase@ubuntu:~/temp$ touch .gitignore foo bar baz bat
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .gitignore
#       bar
#       bat
#       baz
#       foo
mhaase@ubuntu:~/temp$ echo "foo" >> .gitignore
mhaase@ubuntu:~/temp$ echo ".gitignore" >> .gitignore
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       bar
#       bat
#       baz
nothing added to commit but untracked files present (use "git add" to track)

Se você fizer check-in .gitignore (antes de solicitar que ele se ignore), ele sempre será exibido no status git, mesmo que você o modifique posteriormente para se ignorar.

Mark E. Haase
fonte
1
Exatamente, este é o meu caso. Eu quero ter um local .gitignorepara trabalhar git-svn, que ninguém deve ver. Então, eu apenas adicionei a si mesmo e funcionou. Mas então pesquisei no Google para ver se algumas pessoas tensas explicariam aos outros como isso é "ruim". Essa resposta deve ser aceita e, em seguida, eu também votaria nas .git/info/excludesugestões. Portanto, ele só precisa ser rastreado ... Não é de surpreender, pelo menos se você já foi "subvertido" (svn).
Tomasz Gandor
Eu tenho o .gitignorearquivo com backup primeiro. Então eu uso git rm .gitignoree comprometo essa mudança. Por fim, adicione e confirme o .gitignorearquivo novamente com a regra para .gitignore. Funciona!
qzhang
4
Para corrigir isso, você pode executar git rm --cached .gitignore.
Gideon
19

Não há realmente uma boa razão para fazer isso. Se você deseja que os arquivos sejam ignorados apenas para o seu clone , adicione-os .git/info/exclude, não no .gitignorearquivo.

Daenyth
fonte
Estou recebendo "Não é possível concluir a operação devido a alterações existentes no arquivo a seguir" e o arquivo listado é aquele que eu tenho em excluir. Alguma idéia do porquê?
Paul McCarthy
3

Depois de inserir .gitignoreseu arquivo gitignore, tente o seguinte,

git rm -r --cached .
git add --all
git commit -m "ignoring gitignore"
git push --set-upstream origin master

Deve funcionar, embora, como já foi dito, ignorar o gitignore possa ser contraproducente se o seu repositório for compartilhado por vários usuários.

Arnab Sanyal
fonte
2

Sim você pode; você ainda o vê nos arquivos editados porque ainda é rastreado pelo git, e os arquivos rastreados pelo git são sempre marcados como modificados, mesmo se estiverem no .gitignore. Então, simplesmente não o acompanhe .

Mas por que não confirmar ou redefinir as alterações que você possui? É uma maneira muito melhor de removê-lo do status ... Também esteja ciente de que qualquer novo clone do seu repositório precisará adicionar o seu .gitignore, o que pode ser irritante.

CharlesB
fonte
Sim, e você precisará removê-lo separadamente do git by got rm --cached .gitignore, provavelmente.
Tadeck
o git rm --cached .gitignore está removendo do git. Isso é destrutivo e não é desejável. Como simplesmente ignorar o .gitignore para o clone local?
javadba
0

Você pode conseguir isso escrevendo isso no seu arquivo .gitignore. O *irá adicionar tudo à lista de ignorados e, em seguida, !.gitignoreirá remover o arquivo .gitignore da lista de ignorados.

*
!.gitignore
Ankit Singh
fonte
3
Isso alcança o oposto do que o OP quer
Dmitry Parzhitsky
Sim, correto, eu já mencionei o mesmo. *vai ignorar tudo. Incluindo o .gitignorearquivo
Ankit Singh
1
Quero dizer, o OP está tentando remover o .gitignorearquivo da base de código (adicionando-o a si mesmo, o que realmente não faz sentido, mas quem sou eu para julgar). Aqui eu posso ver uma sugestão que garante que o arquivo nunca seja ignorado, o que significa que ele existe (é adicionado a) na base de código
Dmitry Parzhitsky
Está correto. A questão em si parece distorcida. Mas tudo bem.
Ankit Singh