Uma pergunta melhor pode ser - por que você quer fazer isso? Se você deseja que um arquivo seja rastreado, não o ignore (prefixe seu padrão no .gitignorearquivo com !, por exemplo !dont/ignore/this/file).
Oade Schneider
6
@OhadSchneider Isso é útil se você forçar o envio de arquivos de construção para outro ramo. Alguns projetos fazem isso, como o StrongLoop, para implantações seguras
Deminetix
5
@OhadSchneider Para nós, é mais porque a maioria dos desenvolvedores instala o git com o Visual Studio 2015, que adiciona um gitignore global à pasta do usuário. Isso exclui arquivos como * .dll e * .exe. Isso é ótimo para nossos novos projetos, que usam apenas pacotes de nuget recuperados durante a compilação, mas para um pequeno número de projetos mais antigos, ainda usamos dlls que são referenciadas manualmente na solução. Para esses projetos, gostaríamos de incluí-los manualmente, em vez de dizer a todos os desenvolvedores para comentar os arquivos * .dll e * .exe no gitignore global.
Nullius
4
@ Nullius Você não pode simplesmente ignorá-los em um nível superior .gitignore(por exemplo, adicione um .gitignorena mesma pasta que a dll, ou acima, ou algo assim)?
Uhm que não funciona, sobre o estado git o arquivo ainda não é mostrado
Mark
5
Bem, eu testei para garantir que realmente funcione e funcione. Você pode descrever seu ambiente (SO, versão git ...)? Isto é o que eu basicamente fiz: echo "/foo" >> .gitignore; echo "bar" > foo; git add foo # should throw an error; git add -p foo # works(não é possível colar novas linhas no comentário, execute os comandos 1 por 1
Daniel Böhmer
4
O mesmo aconteceu comigo: eu já havia executado o git update-index - como sempre inalterado nos meus arquivos. Eu tive que desfazê-lo com --no-assumir-inalterada e funcionou
Jako
4
Isso só funciona para mim usando curingas, usando o git 1.9.5 no Windows, mesmo depois de tentar --no - assume-inalterado. "git add - f <nome do arquivo>" não faz nada, mas "git add -f *" funciona. Usar o TortoiseGit também funciona.
mhenry1384
@ mhenry1384 O motivo pelo qual ele funciona apenas com curinga no Windows pode ser devido à maneira como o separador de caminho é usado. Para mim, a barra "/" funciona, mas a barra invertida "\" não. O fato de o cmd / PowerShell converter "/" em "\" para nós facilita a execução.
OHW
19
Apesar da solução de trabalho de Daniel Böhmer, Ohad Schneider ofereceu uma solução melhor em um comentário:
Se o arquivo geralmente é ignorado e você o força a adicioná-lo - ele pode ser ignorado acidentalmente novamente no futuro (como quando o arquivo é excluído, uma confirmação é feita e o arquivo é recriado.
Isto está correto. Eu estava usando a opção --force para pequenos arquivos de dados e, em seguida, reorganizei um pouco a estrutura de pastas e derrubei todos os arquivos rastreados à força. NO ENTANTO: em .gitignoreuso !specific-file-name.txtsem a hierarquia de pastas, esse rastreamento seguirá o arquivo em torno do repositório.
Merlin
Depende do cenário, por exemplo, em algum momento você deseja excluir "1.txt" em todas as pastas e em algum momento "folder1 / * .txt"
AS
14
Essa não é uma solução "melhor". É uma solução para um problema diferente.
aij
2
Outra maneira de conseguir isso seria editar temporariamente o arquivo gitignore, adicionar o arquivo e depois reverter o gitignore. Um pouco hacky eu sinto
.gitignore
arquivo com!
, por exemplo!dont/ignore/this/file
)..gitignore
(por exemplo, adicione um.gitignore
na mesma pasta que a dll, ou acima, ou algo assim)?Respostas:
Veja
man git-add
:Então corra isso
fonte
echo "/foo" >> .gitignore; echo "bar" > foo; git add foo # should throw an error; git add -p foo # works
(não é possível colar novas linhas no comentário, execute os comandos 1 por 1Apesar da solução de trabalho de Daniel Böhmer, Ohad Schneider ofereceu uma solução melhor em um comentário:
Se o arquivo geralmente é ignorado e você o força a adicioná-lo - ele pode ser ignorado acidentalmente novamente no futuro (como quando o arquivo é excluído, uma confirmação é feita e o arquivo é recriado.
Você deve simplesmente ignorá-lo no arquivo .gitignore, assim: Designore subdiretórios de diretórios ignorados no Git
fonte
.gitignore
uso!specific-file-name.txt
sem a hierarquia de pastas, esse rastreamento seguirá o arquivo em torno do repositório.Outra maneira de conseguir isso seria editar temporariamente o arquivo gitignore, adicionar o arquivo e depois reverter o gitignore. Um pouco hacky eu sinto
fonte