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.
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
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.
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.
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,
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.
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.
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.
.gitignore
deve fazer parte do seu repositório, listando padrões de arquivos que são lixo eletrônico para o projeto..gitignore
deve fazer parte do seu repositório, para que todos na sua equipe estejam ignorando ou fazendo check-in nos mesmos arquivos. Só porque.gitignore
está em suas pastas de código em algum lugar, não significa que você precisa implantá-lo.git rm --cached .gitignore
e rastrear .gitignoreRespostas:
O
.gitignore
objetivo 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/exclude
nesse repositório.Se você deseja ignorar certos arquivos em todos os repositórios da sua máquina, é possível criar o arquivo
~/.gitignore_global
e executarfonte
Um .gitignore pode ignorar a si mesmo se nunca foi verificado:
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.
fonte
.gitignore
para trabalhargit-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/exclude
sugestões. Portanto, ele só precisa ser rastreado ... Não é de surpreender, pelo menos se você já foi "subvertido" (svn)..gitignore
arquivo com backup primeiro. Então eu usogit rm .gitignore
e comprometo essa mudança. Por fim, adicione e confirme o.gitignore
arquivo novamente com a regra para.gitignore
. Funciona!git rm --cached .gitignore
.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.gitignore
arquivo.fonte
Depois de inserir
.gitignore
seu arquivo gitignore, tente o seguinte,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.
fonte
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.fonte
got rm --cached .gitignore
, provavelmente.Você pode conseguir isso escrevendo isso no seu arquivo .gitignore. O
*
irá adicionar tudo à lista de ignorados e, em seguida,!.gitignore
irá remover o arquivo .gitignore da lista de ignorados.fonte
*
vai ignorar tudo. Incluindo o.gitignore
arquivo.gitignore
arquivo 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