configuração git .ignore
- .ignore cenários de uso
- Uso de .gitignore em novos projetos
- .gitignore uso avançado
- Resumir
.ignore cenários de uso
No projeto, nem todos os arquivos são salvos no repositório, como arquivos de log, arquivos temporários, arquivos de grande peso, arquivos gerados por ferramentas, etc.
Uso de .gitignore em novos projetos
git ignore Este é um repositório de código java e ainda não foi controlado remotamente.
1 Inicialize e gere a pasta .git
A pasta antes da inicialização
usa git init -b main para criar o branch principal, inicializar a pasta local e realizar o controle de versão. Uma
pasta .git é gerada para controle de versão.
2 git status Ver o status atual da pasta
Copiei uma pasta .idea/, então agora tenho essa pasta adicional. Este é o cache do IDEA e não quero carregá-lo.
Dica: Todo o conteúdo será incluído no repositório neste momento
3 Crie um arquivo .ignore para ignorar os arquivos que você não deseja enviar.
Crie um arquivo .gitignore. Se houver, não há necessidade de criá-lo. Abra o arquivo com um editor de texto e configure-o.
4 Edite o arquivo .gitignore git status para ver se ele entra em vigor
Agora quero ignorar as pastas de destino e ideia
Este é o status do git antes da modificação
* Cada configuração possui sua própria linha.
*O conteúdo de cada linha pode ser: o nome do arquivo/diretório, o caminho ou sua correspondência de padrão.
Verifique o status atual do git. O acima é a comparação que não foi adicionada ao .gitignore.
Você pode ver que a parte vermelha foi ignorada.
Se você ainda quiser ignorar o arquivo txt, basta adicionar o nome do arquivo ao arquivo .gitignore.
Verifique o status do git
e você descobrirá que a.txt e b.txt foram ignorados. O uso mais básico está aqui.
.gitignore uso avançado
Muitas vezes, em cenários reais de desenvolvimento, por exemplo, projetos de microsserviços geralmente têm vários diretórios hierárquicos, e cada diretório tem os mesmos arquivos, ou há um arquivo grande em um diretório profundo que não queremos carregar, e há muitos cenários complicados . Neste momento, não basta copiarmos os diretórios um por um para a pasta .gitignore. Então, vamos pegar o artefato .gitignore para superar esses problemas idiotas.
correspondência de padrões
Cenário 1: Além de a.txt e b.txt, também tenho centenas de arquivos que terminam em txt no diretório raiz. Não quero fazer upload desses arquivos para o armazém remoto. Existe alguma maneira melhor do que copiar os nomes dos arquivos linha por linha?
É claro que podemos escrever uma regra para combinar múltiplos resultados, conseguindo assim o efeito de um homem ser capaz de passar no teste sem ser repassado por milhares de outros. Você pode usar nossa correspondência de padrões , que deve ser familiar para aqueles que aprenderam expressões regulares.
1 Uma linha em branco não corresponde a nenhum arquivo, por isso é frequentemente usada como delimitador (para facilitar a leitura).
2 # é usado para comentários, \ representa escape (se precisar usar entidade \, adicione "").
3 * pode corresponder a qualquer caractere (0 ou mais vezes), ? pode corresponder a qualquer caractere (1 vez) (nota: nenhum deles pode corresponder a / ).
4 / é usado para separar diretórios:
4.1 Quando / está no início, significa que a correspondência só começará a partir do diretório onde o arquivo .gitignore está localizado, caso contrário, todos os arquivos subordinados serão correspondidos.
4.2 Quando / estiver no final, apenas o diretório será correspondido, caso contrário, diretórios e arquivos com o mesmo nome serão correspondidos.
5 ! significa negação. O arquivo que foi originalmente excluído será incluído novamente após usar o modo !. Mas se o diretório pai for excluído, o uso! não será incluído novamente (este é um erro comum).
6 [ ] geralmente é usado para corresponder a uma lista de caracteres, como: a[mn]z pode corresponder a amz e anz.
7 ** Usado para corresponder a diretórios de vários níveis, como a/**/b, que pode corresponder a "a/b", "a/x/b", "a/x/y/b", etc.
/ax só pode corresponder a arquivos ax no diretório raiz.
ax pode corresponder a ax em todos os diretórios no diretório raiz. Por exemplo, /b/ax, c/d/ax, etc. podem ser correspondidos e trazidos para
ax/. só pode corresponder ao diretório ax. Não é possível corresponder aos arquivos ax.
Exemplos de exercícios de correspondência de padrões
1 Ignore tudo
Primeiro comente o que você escreveu antes e digite * ou **
git status para verificar o status.
2 Ignore todos os diretórios
Lembra o que o catálogo significa?
O final de / indica o diretório.
Todos os diretórios são */. Insira-o no arquivo .gitignore e verifique os resultados com git status.
Os resultados são os seguintes: verifica-se que, exceto a pasta do diretório, outros arquivos não são ignorados.
3 Ignore todo o conteúdo do diretório src, exceto o arquivo GulimallCouponApplication.java
Esta é a estrutura de diretórios dos arquivos java.
\git ignore\src\main\java\com\atguigu\gulimall\coupon\GulimallCouponApplication.java
Observação: o Windows copia diretamente o diretório de arquivos da pasta src\test. Este diretório é dividido por barras, não pela estrutura de diretórios no git. \ representa escape (se você precisar usar entidade \, adicione ""). Você precisa alterar \ para / no arquivo .gitignore.
Talvez a maioria deles simplesmente ignore a pasta src e use um ponto de exclamação para cancelar o arquivo .java.
Isso é um erro, Tietie! ! Dê uma olhada no efeito.
Todo o diretório src desapareceu! ! !
Leia a Bíblia novamente.
!significa negação. O arquivo que foi originalmente excluído será incluído novamente após usar o modo !. Mas se o diretório pai for excluído, então usar !
não será incluído novamente (este é um erro comum).
Então, neste momento, precisamos fazer isso passo a passo.
Ignore primeiro todos os arquivos na pasta cupon e depois cancele o arquivo .java.
Neste momento, você precisa verificar o diretório de nível superior e ignorar
a estrutura do diretório de cupons da seguinte maneira.
\git ignore\src\main\java\com\atguigu\gulimall\coupon
Há outro diretório no diretório de nível superior até que haja o diretório principal, então também precisamos ignorar o diretório de recursos.
Há também dois diretórios no diretório src, então também precisamos ignorar manualmente o diretório de teste.
Escreva nosso considerações no arquivo .gitignore conforme mostrado
abaixo. Descobri que não há diretório /src na parte vermelha! ! ! Minha mentalidade está quebrada! ! ! Mais tarde descobri #Don’t follow! Use-os juntos e coloque-os no final da linha.
Obs: #Não carregue o final da linha, isso causará bugs. Você pode pensar erroneamente que a sequência a seguir contém apenas caracteres e, então, ela não pode ser reconhecida. Tenho trabalhado nesse bug a tarde toda. Será normal se eu deletar o sinal # e o texto a seguir, ou colocá-lo em uma linha separada.
Neste momento, o status do git é razoável. Os programadores realmente têm muitos bugs inesperados, então não tome isso como garantido. Encontre-o passo a passo usando o método de variável de controle! ! !
git add Adicione à área de teste
git status Visualize o status do arquivo
Neste momento, o arquivo .java em nosso diretório src finalmente chegou.
Mude a maneira de escrever
#强制删除缓存
git rm -r -f --cached .
Use /**/ em vez de diretórios multinível, o resultado ainda é o mesmo
4 Mantenha todos os arquivos apenas a{um caracter}z.{nome do sufixo} no diretório de destino
A estrutura do diretório de destino é a seguinte.
Primeiro, mantemos apenas o diretório de destino. Como o diretório de destino está no mesmo nível do diretório .gitignore, podemos usar / * diretamente para ignorar primeiro todos os arquivos no diretório raiz (não é possível usar * diretamente, o diretório raiz também será ignorado diretamente) ), então use ! para manter a pasta de destino.
Verifique o status do git.
A primeira etapa foi bem-sucedida. Agora estamos considerando como implementar a segunda parte
a{um caracter}z.{nome do sufixo} para todos os arquivos.
Primeiro, filtre outras pastas
/target/*
e, em seguida, retenha todos os arquivos a{um caractere}z.{nome do sufixo}
!/target/a?z.*
Use git add. Depois de adicionar ao warehouse local, use git status para visualizar Status do arquivo
Você pode ver que apenas o arquivo a9z.txt foi carregado, indicando que foi bem-sucedido.
Verifique se a regra de ignorar é válida?
git check-ignore -v {
文件或者目录路径}
Nas condições da quarta questão, verifique se o arquivo a.txt no diretório de destino é ignorado.
git check-ignore target/a.txt
Se target/a.txt for exibido, significa que foi ignorado.
Se quiser ver qual regra específica a ignorou, você pode adicionar -v
git check-ignore -v target/a.txt
.gitignore:4:/target/* target/a.txt~
Indica a quarta linha de instruções no arquivo .gitignore: /target/* ignora target/a.txt
66666
Como ignorar arquivos que já possuem rastreamento de versão?
Método: Adicionar gitignore -> excluir cache local -> adicionar novamente.
# 将缓存文件加入gitignore
git rm -r --cached .
git rm -r -f --cached . #强制删除缓存
git add .
git status
Recuperar rastreamento de versão de arquivo
Método: Remova a configuração do gitignre -> Adicione novamente.
Resumir
Se você ignorar Youdao, preste atenção e pesquise-o no subdiretório.
Se o diretório pai for ignorado, o ponto de exclamação será inútil.
Ignore a hierarquia claramente e obtenha o status passo a passo.
git check-ignore -v {
}
git rm -r --cached .
aprendizagem por vídeo
Autor: Misterhang https://www.bilibili.com/read/cv19909520 Fonte: bilibili