[Git Advanced] .ignore ignora Youdao e ignora a verificação gitcheck-ignore -v

.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.

Insira a descrição da imagem aqui

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
Insira a descrição da imagem aqui
usa git init -b main para criar o branch principal, inicializar a pasta local e realizar o controle de versão. Uma
Insira a descrição da imagem aqui
pasta .git é gerada para controle de versão.
Insira a descrição da imagem aqui

2 git status Ver o status atual da pasta

Insira a descrição da imagem aqui

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.
Insira a descrição da imagem aqui

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
Insira a descrição da imagem aqui
* 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.
Insira a descrição da imagem aqui
Verifique o status atual do git. O acima é a comparação que não foi adicionada ao .gitignore.
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui
Verifique o status do git
Insira a descrição da imagem aqui
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 **
Insira a descrição da imagem aqui
git status para verificar o status.
Insira a descrição da imagem aqui

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.
Insira a descrição da imagem aqui
Os resultados são os seguintes: verifica-se que, exceto a pasta do diretório, outros arquivos não são ignorados.
Insira a descrição da imagem aqui

3 Ignore todo o conteúdo do diretório src, exceto o arquivo GulimallCouponApplication.java

Esta é a estrutura de diretórios dos arquivos java.
Insira a descrição da imagem aqui

\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.

Insira a descrição da imagem aqui

Talvez a maioria deles simplesmente ignore a pasta src e use um ponto de exclamação para cancelar o arquivo .java.
Insira a descrição da imagem aqui

Isso é um erro, Tietie! ! Dê uma olhada no efeito.
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui
Há também dois diretórios no diretório src, então também precisamos ignorar manualmente o diretório de teste.
Insira a descrição da imagem aqui
Escreva nosso considerações no arquivo .gitignore conforme mostrado
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
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.

Insira a descrição da imagem aqui
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! ! !
Insira a descrição da imagem aqui
git add Adicione à área de teste
git status Visualize o status do arquivo
Insira a descrição da imagem aqui
Neste momento, o arquivo .java em nosso diretório src finalmente chegou.

Mude a maneira de escrever

#强制删除缓存
git rm -r -f --cached . 

Insira a descrição da imagem aqui
Use /**/ em vez de diretórios multinível, o resultado ainda é o mesmo
Insira a descrição da imagem aqui

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.
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui
Verifique o status do git.
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui

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.
Insira a descrição da imagem aqui

git check-ignore target/a.txt

Insira a descrição da imagem aqui
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

Insira a descrição da imagem aqui

.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

Acho que você gosta

Origin blog.csdn.net/qq_41398619/article/details/132527332
Recomendado
Clasificación