Aprendendo a ignorar

Algumas vezes incluímos em nosso repositório arquivos que não queremos que apareça no GitHub, e que as mudanças também não sejam monitoradas. Por exemplo, um arquivo de texto que contém um manuscrito em progresso, ou uma imagem (ou várias imagens) que são muito pesadas para serem enviadas pelo git, entre outras situações variadas. Mas o ponto é, estes arquivos ainda fazem parte do projeto em andamento e você gostaria de mantê-los na pasta juntamente com os outros arquivos monitorados. A solução para isso é pedir que o git os ignore. Nesta seção aprenderemos como podemos fazer com que alguns arquivos escapem da observação do git, e, consequentemente, não apareçam no repositório remoto do GitHub.

O arquivo .gitignore

Para ignorarmos arquivos ou até mesmo pastas inteiras vamos utilizar um arquivo especial chamado .gitignore. Este arquivo não tem nome, apenas extensão, e fica hospedado na raiz do seu diretório. Algumas vezes ele é criado automáticamente ao iniar remotamente o repositório, outras ele é criado por você manualmente. Um arquivo do tipo .gitignore apresenta a seguinte aparência quando criado automaticamente

Note que ele é formado por algumas extensões apenas. De maneira resumida, qualquer arquivo que apresente as extensões indicadas no arquivo gitignore vai ser ignorado pelo git.

O arquivo gitignore é extremamente versátil para acomodar uma série de instruções. Podemos ignorar um arquivo específico ao indicar o caminho deste arquivo a partir da raiz do diretório. Podemos ignorar uma pasta inteira. Ou ainda um conjunto de arquivos que apresentem a mesma característica. Todas os padrões possíveis de serem utilizados no arquivo gitignore podem ser encontrados aqui

Aqui alguns dos padrões mais comuns

  1. para ignorar um arquivo único dentro de uma pasta use pasta/nomeDoArquivo.extensao
  2. para ignorar todos os arquivos dentro de uma pasta específica use pasta/. isso irá ignorar caminhos abaixo do indicado
  3. para ignorar arquivos inteiros dentro de uma pasta use pasta/*. Isso irá ignorar qualquer arquivo dentro da pasta.
  4. para ignorar arquivos a partir de um dado padrão de nome use padrao.*. Isso irá ignorar qualquer arquivo dentro do diretório e suas subpastas que apresentem o padrão indicado. Por exemplo, digamos que exista o arquivo chamado padrao.docx e padrao.txt, ambos os arquivos serão ignorados

Parar de monitorar um arquivo que já está sendo monitorado

Algumas vezes queremos que um arquivo que já está sendo monitorado pelo git pare de ser observado. Para isso não basta que este arquivo seja apenas incluído no .gitignore, precisamos incluí-lo no .gitignore e removê-lo do cache. Vamos supor que queremos ignorar o arquivo chamado arrependimento.docx No terminal faça o seguinte

git rm --cached arrependimento.docx

A partir de então o arquivo passará a ser ignorado pelo git, ou seja, mesmo que mudanças sejam feitas nele, elas não aparecerão.

LS0tCnRpdGxlOiAnVXRpbGl6YW5kbyBvIGdpdGlnbm9yZScKYXV0aG9yOiAiR2FicmllbCBOYWthbXVyYSIKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6IGh0bWxfZG9jdW1lbnQKLS0tCgpgYGB7ciBrbGlwcHksIGVjaG89RkFMU0UsIGluY2x1ZGU9VFJVRX0Ka2xpcHB5OjprbGlwcHkoKQpgYGAKCiMgQXByZW5kZW5kbyBhIGlnbm9yYXIKCkFsZ3VtYXMgdmV6ZXMgaW5jbHXDrW1vcyBlbSBub3NzbyByZXBvc2l0w7NyaW8gYXJxdWl2b3MgcXVlIG7Do28gcXVlcmVtb3MgcXVlIGFwYXJlw6dhIG5vIEdpdEh1YiwgZSBxdWUgYXMgbXVkYW7Dp2FzIHRhbWLDqW0gbsOjbyBzZWphbSBtb25pdG9yYWRhcy4gUG9yIGV4ZW1wbG8sIHVtIGFycXVpdm8gZGUgdGV4dG8gcXVlIGNvbnTDqW0gdW0gbWFudXNjcml0byBlbSBwcm9ncmVzc28sIG91IHVtYSBpbWFnZW0gKG91IHbDoXJpYXMgaW1hZ2VucykgcXVlIHPDo28gbXVpdG8gcGVzYWRhcyBwYXJhIHNlcmVtIGVudmlhZGFzIHBlbG8gZ2l0LCBlbnRyZSBvdXRyYXMgc2l0dWHDp8O1ZXMgdmFyaWFkYXMuIE1hcyBvIHBvbnRvIMOpLCBlc3RlcyBhcnF1aXZvcyBhaW5kYSBmYXplbSBwYXJ0ZSBkbyBwcm9qZXRvIGVtIGFuZGFtZW50byBlIHZvY8OqIGdvc3RhcmlhIGRlIG1hbnTDqi1sb3MgbmEgcGFzdGEganVudGFtZW50ZSBjb20gb3Mgb3V0cm9zIGFycXVpdm9zIG1vbml0b3JhZG9zLiBBIHNvbHXDp8OjbyBwYXJhIGlzc28gw6kgcGVkaXIgcXVlIG8gZ2l0IG9zIGlnbm9yZS4gTmVzdGEgc2XDp8OjbyBhcHJlbmRlcmVtb3MgY29tbyBwb2RlbW9zIGZhemVyIGNvbSBxdWUgYWxndW5zIGFycXVpdm9zIGVzY2FwZW0gZGEgb2JzZXJ2YcOnw6NvIGRvIGdpdCwgZSwgY29uc2VxdWVudGVtZW50ZSwgbsOjbyBhcGFyZcOnYW0gbm8gcmVwb3NpdMOzcmlvIHJlbW90byBkbyBHaXRIdWIuCgojIE8gYXJxdWl2byBgLmdpdGlnbm9yZWAKClBhcmEgaWdub3Jhcm1vcyBhcnF1aXZvcyBvdSBhdMOpIG1lc21vIHBhc3RhcyBpbnRlaXJhcyB2YW1vcyB1dGlsaXphciB1bSBhcnF1aXZvIGVzcGVjaWFsIGNoYW1hZG8gYC5naXRpZ25vcmVgLiBFc3RlIGFycXVpdm8gbsOjbyB0ZW0gbm9tZSwgYXBlbmFzIGV4dGVuc8OjbywgZSBmaWNhIGhvc3BlZGFkbyBuYSByYWl6IGRvIHNldSBkaXJldMOzcmlvLiBBbGd1bWFzIHZlemVzIGVsZSDDqSBjcmlhZG8gYXV0b23DoXRpY2FtZW50ZSBhbyBpbmlhciByZW1vdGFtZW50ZSBvIHJlcG9zaXTDs3Jpbywgb3V0cmFzIGVsZSDDqSBjcmlhZG8gcG9yIHZvY8OqIG1hbnVhbG1lbnRlLiBVbSBhcnF1aXZvIGRvIHRpcG8gLmdpdGlnbm9yZSBhcHJlc2VudGEgYSBzZWd1aW50ZSBhcGFyw6puY2lhIHF1YW5kbyBjcmlhZG8gYXV0b21hdGljYW1lbnRlCgpgYGB7ciBlY2hvPUZBTFNFLGV2YWw9VFJVRX0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoaGVyZTo6aGVyZSgiZmlncyIsICJnaXRpZ25vcmUtZXhlbXBsby5wbmciKSkKYGBgCgpOb3RlIHF1ZSBlbGUgw6kgZm9ybWFkbyBwb3IgYWxndW1hcyBleHRlbnPDtWVzIGFwZW5hcy4gRGUgbWFuZWlyYSByZXN1bWlkYSwgcXVhbHF1ZXIgYXJxdWl2byBxdWUgYXByZXNlbnRlIGFzIGV4dGVuc8O1ZXMgaW5kaWNhZGFzIG5vIGFycXVpdm8gZ2l0aWdub3JlIHZhaSBzZXIgaWdub3JhZG8gcGVsbyBnaXQuIAoKTyBhcnF1aXZvIGdpdGlnbm9yZSDDqSBleHRyZW1hbWVudGUgdmVyc8OhdGlsIHBhcmEgYWNvbW9kYXIgdW1hIHPDqXJpZSBkZSBpbnN0cnXDp8O1ZXMuIFBvZGVtb3MgaWdub3JhciB1bSBhcnF1aXZvIGVzcGVjw61maWNvIGFvIGluZGljYXIgbyBjYW1pbmhvIGRlc3RlIGFycXVpdm8gYSBwYXJ0aXIgZGEgcmFpeiBkbyBkaXJldMOzcmlvLiBQb2RlbW9zIGlnbm9yYXIgdW1hIHBhc3RhIGludGVpcmEuIE91IGFpbmRhIHVtIGNvbmp1bnRvIGRlIGFycXVpdm9zIHF1ZSBhcHJlc2VudGVtIGEgbWVzbWEgY2FyYWN0ZXLDrXN0aWNhLiAKVG9kYXMgb3MgcGFkcsO1ZXMgcG9zc8OtdmVpcyBkZSBzZXJlbSB1dGlsaXphZG9zIG5vIGFycXVpdm8gZ2l0aWdub3JlIHBvZGVtIHNlciBlbmNvbnRyYWRvcyBbYXF1aV0oaHR0cHM6Ly9naXQtc2NtLmNvbS9kb2NzL2dpdGlnbm9yZSkKCkFxdWkgYWxndW5zIGRvcyBwYWRyw7VlcyBtYWlzIGNvbXVucwoKMS4gcGFyYSBpZ25vcmFyIHVtIGFycXVpdm8gw7puaWNvIGRlbnRybyBkZSB1bWEgcGFzdGEgdXNlIGBwYXN0YS9ub21lRG9BcnF1aXZvLmV4dGVuc2FvYAoyLiBwYXJhIGlnbm9yYXIgdG9kb3Mgb3MgYXJxdWl2b3MgZGVudHJvIGRlIHVtYSBwYXN0YSBlc3BlY8OtZmljYSB1c2UgYHBhc3RhL2AuIGlzc28gaXLDoSBpZ25vcmFyIGNhbWluaG9zIGFiYWl4byBkbyBpbmRpY2FkbwozLiBwYXJhIGlnbm9yYXIgYXJxdWl2b3MgaW50ZWlyb3MgZGVudHJvIGRlIHVtYSBwYXN0YSB1c2UgYHBhc3RhLypgLiBJc3NvIGlyw6EgaWdub3JhciBxdWFscXVlciBhcnF1aXZvIGRlbnRybyBkYSBwYXN0YS4KNC4gcGFyYSBpZ25vcmFyIGFycXVpdm9zIGEgcGFydGlyIGRlIHVtIGRhZG8gcGFkcsOjbyBkZSBub21lIHVzZSBgcGFkcmFvLipgLiBJc3NvIGlyw6EgaWdub3JhciBxdWFscXVlciBhcnF1aXZvIGRlbnRybyBkbyBkaXJldMOzcmlvIGUgc3VhcyBzdWJwYXN0YXMgcXVlIGFwcmVzZW50ZW0gbyBwYWRyw6NvIGluZGljYWRvLiBQb3IgZXhlbXBsbywgZGlnYW1vcyBxdWUgZXhpc3RhIG8gYXJxdWl2byBjaGFtYWRvIGBwYWRyYW8uZG9jeGAgZSBgcGFkcmFvLnR4dGAsIGFtYm9zIG9zIGFycXVpdm9zIHNlcsOjbyBpZ25vcmFkb3MKCiMgUGFyYXIgZGUgbW9uaXRvcmFyIHVtIGFycXVpdm8gcXVlIGrDoSBlc3TDoSBzZW5kbyBtb25pdG9yYWRvCgpBbGd1bWFzIHZlemVzIHF1ZXJlbW9zIHF1ZSB1bSBhcnF1aXZvIHF1ZSBqw6EgZXN0w6Egc2VuZG8gbW9uaXRvcmFkbyBwZWxvIGdpdCBwYXJlIGRlIHNlciBvYnNlcnZhZG8uIFBhcmEgaXNzbyBuw6NvIGJhc3RhIHF1ZSBlc3RlIGFycXVpdm8gc2VqYSBhcGVuYXMgaW5jbHXDrWRvIG5vIC5naXRpZ25vcmUsIHByZWNpc2Ftb3MgaW5jbHXDrS1sbyBubyAuZ2l0aWdub3JlIGUgcmVtb3bDqi1sbyBkbyBjYWNoZS4gVmFtb3Mgc3Vwb3IgcXVlIHF1ZXJlbW9zIGlnbm9yYXIgbyBhcnF1aXZvIGNoYW1hZG8gYGFycmVwZW5kaW1lbnRvLmRvY3hgIE5vIHRlcm1pbmFsIGZhw6dhIG8gc2VndWludGUKCmBgYHtyIGVjaG89VFJVRSwgZXZhbD1GQUxTRX0KZ2l0IHJtIC0tY2FjaGVkIGFycmVwZW5kaW1lbnRvLmRvY3gKYGBgCgpBIHBhcnRpciBkZSBlbnTDo28gbyBhcnF1aXZvIHBhc3NhcsOhIGEgc2VyIGlnbm9yYWRvIHBlbG8gZ2l0LCBvdSBzZWphLCBtZXNtbyBxdWUgbXVkYW7Dp2FzIHNlamFtIGZlaXRhcyBuZWxlLCBlbGFzIG7Do28gYXBhcmVjZXLDo28uCg==