Pode ser uma pergunta vaga, mas atualmente não consigo encontrar uma boa solução na minha cabeça.
Tenho um aplicativo BookStack em execução em um servidor da empresa. Para simplificar e por segurança, tenho um .gitignore
arquivo personalizado que ignora tudo, exceto nossas extensões e .env
configurações personalizadas.
A ideia é que os desenvolvedores possam adicionar o repositório de produção como fonte remota em um diretório com o BookStack junto com um banco de dados simulado para testá-lo com segurança.
Agora, isso é bom, desde que eu não tenha que buscar do repositório BookStack. Se eu adicionar agora o BookStack como fonte remota no servidor de produção, ele entrará em conflito com a .gitignore
atualização.
Você tem algum conselho sobre como eu poderia resolver esse problema, além de resolver esse conflito a cada atualização?
Esta é apenas uma ideia e um pequeno guia geral sobre o que você pode fazer com
worktree
.Como mencionado, há diversas possibilidades.
Você também pode usar ramificações separadas para personalizações ou usar um script personalizado automatizado, etc.
Git Worktree para separação limpa
Com o Git Worktree, você pode criar dois diretórios de trabalho separados para o mesmo repositório:
Isso evita conflitos e permite que você gerencie ambas as versões em paralelo.
Passos:
Clone seu repositório para o servidor
Adicione o repositório BookStack como um repositório remoto upstream
Crie um novo diretório de trabalho (Worktree) para o branch upstream
Trabalhe em seu diretório principal em uma ramificação separada
Atualizar a árvore de trabalho upstream com
git pull
Mescle as alterações em seu branch personalizado, se necessário
Use
.git/info/exclude
para ignorar arquivos como.env
ou extensões personalizadasAlterações upstream e suas próprias personalizações são separadas e podem ser atualizadas independentemente do seu código.
Você pode usar ambas as versões em paralelo sem alternar constantemente entre ramificações.
árvore de trabalho
git-worktree - Gerenciar múltiplas árvores de trabalho
Para que eu usaria o git-worktree?
Árvore de trabalho do Git
.git/info/excluir
Excluindo arquivos locais sem criar um arquivo .gitignore
gitignore - Especifica arquivos intencionalmente não rastreados para ignorar
Quando você usaria .git/info/exclude em vez de .gitignore para excluir arquivos?