Estou usando o git em um projeto relativamente pequeno e acho que compactar o conteúdo do diretório .git pode ser uma boa maneira de fazer backup do projeto. Mas isso é meio estranho, porque, quando eu restauro, a primeira coisa que preciso fazer é git reset --hard
.
Há algum problema com o backup de um repositório Git dessa maneira? Além disso, existe alguma maneira melhor de fazê-lo (por exemplo, um formato portátil git ou algo semelhante?)?
git bundle
Respostas:
Comecei a cortar um pouco o script de Yar e o resultado está no github, incluindo páginas de manual e script de instalação:
https://github.com/najamelan/git-backup
Instalação :
Congratulando-se com todas as sugestões e solicitações de recebimento no github.
fonte
sudo install.sh
e o configura (ele usa o sistema de configuração do git) para definir o diretório de destino (consulte o arquivo leia-me no github). Em seguida, você executagit backup
dentro do seu repositório. Como nota de rodapé, este foi um experimento com o git bundle e uma resposta a essa pergunta, mas o git bundle nunca faz uma cópia exata absoluta (por exemplo, se me lembro bem, especialmente sobre os controles remotos do git), então pessoalmente eu realmente uso o tar para fazer backup. diretórios git.A outra maneira oficial seria usar o pacote git
Isso criará um arquivo compatível
git fetch
egit pull
para atualizar seu segundo repo.Útil para backup e restauração incrementais.
Mas se você precisar fazer backup de tudo (porque você não possui um segundo repositório com algum conteúdo antigo já existente), o backup é um pouco mais elaborado, como mencionado na minha outra resposta, após o comentário de Kent Fredric :
(É uma operação atômica , em vez de criar um arquivo da
.git
pasta, como comentado por fantabolous )Aviso: eu não recomendaria a solução de Pat Notz , que está clonando o repositório. Fazer backup de muitos arquivos é sempre mais complicado do que fazer backup ou atualizar ... apenas um.
Se você olhar para o histórico de edições da resposta do OP Yar , verá que Yar usou no início a , ... com a edição:
clone --mirror
A solução atual de Yar usa
git bundle
.Eu descanso meu caso.
fonte
git bundle
. Não é possível com um zip global de todo o repositório local.A maneira como faço isso é criar um repositório remoto (vazio) (em uma unidade separada, chave USB, servidor de backup ou mesmo github) e depois usá
push --mirror
-lo para fazer com que o repositório remoto pareça exatamente com o meu local (exceto que o controle remoto é vazio) repositório).Isso enviará todas as referências (ramificações e tags), incluindo atualizações de avanço rápido. Eu uso isso para criar backups do meu repositório local.
A página do manual descreve assim:
Fiz um alias para fazer o push:
Então, eu apenas corro
git bak
sempre que quero fazer um backup.fonte
--mirror
, na verdade, não executa nenhum tipo de verificação nos objetos que recebe. Provavelmente você deve executargit fsck
em algum momento para evitar corrupção.[Apenas deixando isso aqui para minha própria referência.]
Meu script de pacote chamado se
git-backup
parece com issoÀs vezes eu uso
git backup
e às vezes uso, ogit backup different-name
que me dá a maioria das possibilidades de que preciso.fonte
--global
opção, esse alias será visto apenas no seu projeto (está definido no seu.git/config
arquivo) - provavelmente é isso que você deseja. Obrigado pela resposta mais detalhada e bem formatada.As duas respostas para essas perguntas estão corretas, mas ainda estava faltando uma solução completa e curta para fazer backup de um repositório do Github em um arquivo local. A essência está disponível aqui, sinta-se à vontade para usar ou se adaptar às suas necessidades.
backup.sh:
restore.sh:
fonte
Você pode fazer backup do repositório git com git-copy . O git-copy salvou o novo projeto como um repositório simples, significa custo mínimo de armazenamento.
Em seguida, você pode restaurar seu projeto com
git clone
fonte
Encontre o caminho oficial simples, depois de percorrer as paredes do texto acima, que faria você pensar que não há.
Crie um pacote completo com:
Restaure-o com:
Esta operação é AFAIK atômica. Verifique os documentos oficiais para obter detalhes detalhados.
Em relação ao "zip": os pacotes configuráveis do git são compactados e surpreendentemente pequenos em comparação com o tamanho da pasta .git.
fonte
chegou a esta pergunta via google.
Aqui está o que eu fiz da maneira mais simples.
crie um novo ramo git a partir deste ramo
volte ao ramo original e continue:
Supondo que você tenha estragado tudo e precise restaurar algo do ramo de backup:
Melhor parte, se algo estiver errado, você pode simplesmente excluir o ramo de origem e voltar ao ramo de backup !!
fonte