Quero mostrar alguns dos meus trabalhos, enviando-os para minha conta do GitHub. No entanto, existem alguns arquivos que contêm senhas, como conexões com o banco de dados.
Existe uma maneira de marcar um arquivo como incompatível com o Git para que ele não possa aparecer no GitHub?
.gitignore
. AFAIK, não há uma maneira 100% completa de informargit
para evitar o comprometimento de um arquivo específico em todos os casos. Embora isso possa ser visto como um recurso ... permite que comandos explícitos substituam configurações genéricas.Respostas:
Primeiro, não há como ter alguns arquivos e confirmações visíveis no seu repositório Git local, mas de alguma forma não visível no GitHub; se você tiver um arquivo confirmado no Git, ele aparecerá no GitHub.
Segundo, não existe uma maneira simples e prática de marcar um arquivo individual como "inconstante". Mas há definitivamente uma maneira de ignorar um arquivo em um repositório Git: adicionando o (s) arquivo (s) - incluindo seu caminho relativo, se necessário - para um
.gitignore
arquivo :Criar um básico
.gitignore
é bastante fácil, pois é apenas um arquivo de texto simples. Então, por exemplo, se eu tivesse umconfig.php
arquivo na sua raiz, você faria isso; supondo que você esteja usando PHP, mas o conceito se aplica a qualquer configuração. Também estou usando o Nano como meu editor de texto neste exemplo, mas fique à vontade para usar o editor de texto que você normalmente usa para isso:E basta adicionar esse nome de arquivo ao arquivo:
Salve-o e agora o Git simplesmente ignorará esse arquivo.
Dito isto, o que eu gosto de fazer em configurações como essa é manter uma configuração de exemplo / exemplo neutralizada de detalhes sensíveis no repositório, para que eu tenha alguma referência sobre o formato do arquivo de configuração como um arquivo chamado algo como isto:
Dessa forma, você sabe exatamente como o
config.php
arquivo deve ser configuradoconfig.SAMPLE.php
e você pode garantir que o atualconfig.php
nunca seja tocado pelo Git.Além disso, se você planeja exibir seu código, precisa esperar que alguém tente pegar esse código e implementá-lo em seu próprio sistema de alguma forma. Lembre-se de que não somos você e, sem um exemplo de arquivo de configuração no seu repositório, as pessoas realmente não entenderão como implementar o código por conta própria. Caramba, eles podem até achar que você não é competente porque não forneceu um exemplo básico de configuração.
fonte
database_url = Environment.DATABASE_URL
e deixar um comentário acima como# postgres://username:password@localhost/dbname
.Você também pode adicionar um gancho de pré-confirmação para implementar verificações de sanidade. O diretório
.git/hooks
de todo repositório git possui alguns scripts de amostra.O script chamado
pre-commit
é executado se existir antes de cada confirmação e um valor de retorno diferente de zero anula a confirmação.Por exemplo, você pode ter um script simples como este:
E se isso
filename
corresponder, a confirmação falhará.fonte
.gitignore
é uma prática muito comum - e comumente entendida - para quem usa o Git. Mas um script de pré-confirmação não é realmente usado pela maioria dos usuários do Git. Isso requer algum conhecimento de configuração e um verdadeiro motivo pelo qual um método como esse seria preferível ao simples uso de um.gitignore
arquivo. Mas isso é muito útil para alguns casos mais complexos, mas é definitivamente um conceito que você usaria quando realmente souber que precisa usá-lo.O que @JakeGould disse. Em alguns casos, você também pode usar bits de arquivo especiais como
skip-worktree
ouassume-unchanged
que podem ser configurados da seguinte maneira; para as diferenças entre os dois, consulte esta resposta de estouro de pilha :O que ocultará alterações adicionais em um arquivo já existente e que você poderá usar se realmente desejar que um arquivo esteja lá após cada solicitação. Mas eu aconselho você a usá-lo apenas se realmente souber o que está fazendo.
fonte
Use um
.gitignore
como @JakeGould disse. Além disso, algumas informações relacionadas:.gitignore
impede que os arquivos sejam rastreados; se eles já estiverem rastreados, use-osgit rm --cached
para removê-los$GIT_DIR/info/exclude
também serão ignorados~/.gitconfig
também são ignorados.Veja a documentação oficial do Git para mais detalhes.
fonte
Para estender as respostas de Jake e 46: uma prática muito boa é ter uma extensão consistente usada para arquivos nos quais você inclui informações privadas e
.gitignore
sempre excluir arquivos com essa extensão globalmente (usando o.gitconfig
arquivo conforme mencionado em outro lugar para sempre ignorá-lo) para o seu usuário).Dessa forma, você pode ter, por exemplo:
e se você excluiu
*.exc
globalmente, sabe que não será confirmado, mesmo se você esquecer de excluir individualmente esse arquivo específico.fonte