Criei um repositório git para espelhar um site ativo (que é um repositório git não nu):
git clone --mirror ssh://[email protected]/path/to/repo
Agora, para manter esse clone espelhado atualizado com todas as alterações de sua origem remota, qual comando ou comandos devo usar?
Gostaria de manter tudo atualizado: commits, refs, hooks, branches, etc.
Obrigado!
git fetch
? Ougit remote update
sozinho fará tudo isso?Em relação a commits, refs, branches e " et cetera ", a resposta Magnus simplesmente funciona (
git remote update
).Mas, infelizmente, não há como
clone
espelharupdate
os ganchos , como eu queria ...Eu encontrei este tópico muito interessante sobre clonagem / espelhamento de ganchos:
http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread
Eu aprendi:
Os ganchos não são considerados parte do conteúdo do repositório.
Há mais dados, como a
.git/description
pasta, que não é clonada, assim como os ganchos.Os ganchos padrão que aparecem no
hooks
diretório vêm doTEMPLATE_DIR
Existe esse
template
recurso interessante no git.Portanto, eu posso ignorar essa "coisa de clonar os ganchos" ou seguir uma
rsync
estratégia, considerando os propósitos do meu espelho (backup + fonte para outros clones, apenas).Bem ... Vou esquecer a clonagem de ganchos e
git remote update
seguir o caminho.clone
/update
process, mas também stashes, re -ereer, etc ... Portanto, para um backup rigoroso,rsync
ou equivalente, seria realmente o caminho a percorrer. Como isso não é realmente necessário no meu caso (posso me dar ao luxo de não ter ganchos, esconderijos etc.), como eu disse, vou me ater aoremote update
.Obrigado! Melhorei um pouco do meu "git-fu" ... :-)
fonte
Veja aqui: O Git não clona todas as ramificações dos clones subseqüentes?
Se você realmente quer isso puxando galhos em vez de
push --mirror
, pode dar uma olhada aqui:"buscar - todos" em um repositório git bare não sincroniza ramificações locais com as remotas
Esta resposta fornece etapas detalhadas sobre como conseguir isso com relativa facilidade:
fonte
push
não é uma opção para mim porque preciso fazê-lo no lado receptor (de onde o clone está);pull
também não é uma opção, porque um repositório espelho é um repositório vazio (sem árvore de trabalho, portanto, sem "puxar") - parece quegit remote update
realmente faz tudo (muito mais fácil que a resposta mencionada) ... De qualquer forma, obrigado! Certamente, há informações valiosas nas perguntas / respostas vinculadas.rsync
nesse caso. Além disso, suponho que você esteja se esquecendo de esconderijos (veja aqui ) e rerere informações também ...?