Como posso ignorar diretórios ou pastas no Git usando o msysgit no Windows?
.gitkeep
) para indicar um diretório que deve ser mantido
/
no final o que o faz saber que é um diretório que ele deve ignorar?
Como posso ignorar diretórios ou pastas no Git usando o msysgit no Windows?
.gitkeep
) para indicar um diretório que deve ser mantido
/
no final o que o faz saber que é um diretório que ele deve ignorar?
Respostas:
Crie um arquivo nomeado .gitignore
no diretório do seu projeto. Ignore os diretórios inserindo o nome do diretório no arquivo (com uma barra anexada):
dir_to_ignore/
Mais informações estão aqui .
Por padrão, o Windows Explorer será exibido .gitignore
quando, de fato, o nome do arquivo for .gitignore.txt
.
Git não usará .gitignore.txt
E você não pode renomear o arquivo para .gitignore
, porque o Windows Explorer acha que é um arquivo do tipo gitignore sem nome.
Solução sem linha de comando:
Você pode renomear um arquivo para ".gitignore". e criará ".gitignore"
".gitignore"
e ele o salva sem adicionar automaticamente uma extensão.
".gitignore."
- Isso é ótimo truque! Eu sempre tive problemas com .htaccess
bem ...
Parece que, para ignorar arquivos e diretórios, existem duas maneiras principais:
.gitignore
.gitignore
arquivo na raiz do seu repositório além da .git
pasta (no Windows, verifique a verdadeira extensão do arquivo e, em seguida, faça .gitignore.
(com o ponto no final para criar uma extensão de arquivo vazia))~/.gitignore_global
e executando git config --global core.excludesfile ~/.gitignore_global
para adicionar isso à sua configuração do GitNota: os arquivos rastreados antes podem ser rastreados executando git rm --cached filename
Exclusão de repositório - Para arquivos locais que não precisam ser compartilhados, basta adicionar o padrão ou o diretório ao arquivo .git/info/exclude
. Essas regras não são confirmadas e, portanto, não são vistas por outros usuários . Mais informações estão aqui .
Para fazer exceções na lista de arquivos ignorados, consulte esta pergunta .
git rm --cached <filename>
. Absolutamente crítico para repositórios que existiam ANTES de você criar o.gitignore
Eu tive alguns problemas ao criar um arquivo no Windows Explorer com um .
no início.
Uma solução alternativa era entrar no shell de comando e criar um novo arquivo usando "editar".
.
no final, para que o explorer pare de pensar que .gitignore
é a extensão. Em seguida, na entrada que arrastando ponto sem extensão só fica comido e você é deixado com .gitignore
TL; DR: tentar nomeá-lo .gitignore.
=> você acabar com.gitignore
Para instruir o Git a ignorar determinados arquivos ou pastas, você precisa criar um .gitignore
arquivo.
Mas no Windows Explorer você precisa fornecer um nome para o arquivo. Você simplesmente não pode criar um arquivo com apenas uma extensão. O truque é criar um arquivo de texto vazio e ir para o prompt de comando e alterar o nome do arquivo para .gitignore
:
ren "New Text Document.txt" .gitignore
Agora abra o arquivo com o seu editor de texto favorito e adicione os nomes de arquivo / pasta que deseja ignorar. Você também pode usar curingas como este: *.txt
.
type nul > .gitignore
para criar um arquivo vazio
.gitignore.
quando as extensões de arquivo não estão escondidos em seu Windows Explorer
Se você deseja manter uma pasta e não os arquivos dentro dela, basta colocar um arquivo ".gitignore" na pasta com "*" como conteúdo. Este arquivo fará o Git ignorar todo o conteúdo do repositório. Mas .gitignore
será incluído no seu repositório.
$ git add path/to/folder/.gitignore
Se você adicionar uma pasta vazia, você receberá esta mensagem (.gitignore é um arquivo oculto)
The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added
Então, use "-f" para forçar a adição:
$ git add path/to/folder/.gitignore -f
No Windows, há um problema extra com barras. Excluindo um único diretório no .gitignore com
dir_to_exclude /
possivelmente funcionará, mas excluindo todos os diretórios com
/
causa problemas quando você tem nomes de arquivos com espaços (como my file.txt
) no diretório: Git Bash escapa esses espaços com uma barra invertida (como my\ file.txt
) e o Git for Windows não faz distinção entre /
e \
.
Para excluir todos os diretórios, use melhor:
** /
Dois asteriscos consecutivos significam o conteúdo do diretório.
Também no \.git\info
diretório de projetos, há um arquivo de exclusão que é efetivamente a mesma coisa que .gitignore
(eu acho). Você pode adicionar arquivos e diretórios para ignorar isso.
Caso precise excluir subpastas, você pode usar o **
curinga para excluir qualquer nível de subdiretório.
**/build/output/Debug/
Para ignorar um diretório inteiro no Git, a maneira mais fácil é incluir um arquivo .gitignore no diretório de destino, que simplesmente contém "*".
Um exemplo ilustrativo,
Sistema de exemplo
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
Objetivo
Nível superior .gitignore (/root/.gitignore)
Diretório ignorado .gitignore (/root/dirB.gitignore)
E é simples assim :)
Quando tudo mais falhar, tente editar o arquivo
/.git/info/exclude
e adicionando os diretórios que você deseja ao final do arquivo, assim:
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/
Eu adicionei as pastas "assets" e "compiled" à lista de arquivos e diretórios a serem ignorados.
No Unix:
touch .gitignore
No Windows:
echo > .gitignore
Esses comandos executados em um terminal criarão um .gitignore
arquivo no local atual.
Em seguida, basta adicionar informações a este .gitignore
arquivo (usando o Notepad ++ por exemplo) quais arquivos ou pastas devem ser ignorados. Salve suas alterações. É isso aí :)
Mais informações: .gitignore
Você pode criar o arquivo ".gitignore" com o conteúdo:
*
!.gitignore
Funciona para mim.
Eu tive alguns problemas com o Git para pegar o .gitignore
arquivo no Windows. O $GIT_DIR/info/exclude
arquivo sempre parece funcionar.
A desvantagem dessa abordagem, no entanto, é que os arquivos no $GIT_DIR
diretório não são incluídos no check-in e, portanto, não são compartilhados.
ps
$GIT_DIR
é geralmente a pasta oculta chamada.git
Presumo que o problema é que sua árvore de trabalho é como:
a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore
... com o que .gitignore
você descreve. Isso lhe dará uma git status
saída como:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
# a-cache/
# b-cache/
... se os index.html
arquivos ainda não foram adicionados ao repositório. (O Git vê que existem arquivos não-registrados nos diretórios de cache, mas apenas os reporta.) Para corrigir isso, verifique se você adicionou e confirmou os index.html
arquivos:
git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
... e sua git status
vontade se parecerá com:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
nothing added to commit but untracked files present (use "git add" to track)
(Obviamente, você também quer se comprometer .gitignore
. Eu estava sendo preguiçoso neste caso de teste.)
No Windows e Mac, se você deseja ignorar uma pasta chamada Flower_Data_Folder no diretório atual, pode:
echo Flower_Data_Folder >> .gitignore
Se for um arquivo chamado data.txt
:
echo data.txt >> .gitignore
Se for um caminho como "Data / passwords.txt"
echo "Data/passwords.txt" >> .gitignore.
Eu tive problemas semelhantes. Eu trabalho em uma cadeia de ferramentas do Windows com um repositório compartilhado com os funcionários do Linux, e eles criam arquivos com o mesmo nome (exceto no caso) em uma determinada pasta.
O efeito é que eu posso clonar o repositório e ter imediatamente dezenas de arquivos 'modificados' que, se eu fizessem check-in, causariam estragos.
Eu tenho o Windows definido para maiúsculas e minúsculas e o Git para não ignorar maiúsculas e minúsculas, mas ainda falha (nas chamadas da API do Win32 aparentemente).
Se eu fizer o gitignore dos arquivos, lembre-se de não acompanhar o arquivo .gitignore.
Mas eu encontrei uma boa resposta aqui:
http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html
Basta criar um .gitignore
arquivo na sua pasta do projeto. Em seguida, adicione o nome da pasta nela, por exemplo:
frontend/node_modules