Eu tenho um servidor que estou desativando. A única coisa que resta para migrar é o meu repositório. Este servidor está listado como a origem (mestre) de um dos meus projetos. Qual é a maneira correta de mover o repositório para manter o histórico.
Eu tenho um servidor que estou desativando. A única coisa que resta para migrar é o meu repositório. Este servidor está listado como a origem (mestre) de um dos meus projetos. Qual é a maneira correta de mover o repositório para manter o histórico.
Respostas:
Para adicionar o novo local de repo,
git remote add new_repo_name new_repo_url
Em seguida, empurre o conteúdo para o novo local
git push new_repo_name master
Por fim, remova o antigo
git remote rm origin
Depois disso, você pode fazer o que o bdonlan disse e editar o arquivo.git / config para alterar o new_repo_name para origem. Se você não remover a origem (repositório remoto original), basta enviar as alterações para o novo repositório com
git push new_repo_name master
git push -u new_repo_name --all
.
git remote rename new_repo_name origin
Se você deseja migrar todas as ramificações e tags, use os seguintes comandos:
git clone --mirror [oldUrl]
clonar o repositório antigo com todos os ramos
cd the_repo
git remote add remoteName newRepoUrl
configurar um novo controle remoto
git push -f --tags remoteName refs/heads/*:refs/heads/*
empurrar todas as refs sob refs / heads (que provavelmente é o que você deseja)
--tags
e refs/heads/*:refs/heads/*
não é compatível --mirror
. stackoverflow.com/a/26552740/1484831 funcionou bem.
refs/heads/refs/heads
usando git push -f --tags remoteName refs/heads/*:refs/heads/*
para que eu tenha trocado paragit push remoteName --mirror
push
também suporta --mirror
. git clone --mirror; cd repo; git push --mirror new_remote
deve fazer o truque
Isso funcionou para mim na perfeição .
git clone --mirror <URL to my OLD repo location>
cd <New directory where your OLD repo was cloned>
git remote set-url origin <URL to my NEW repo location>
git push -f origin
Devo mencionar, no entanto, que isso cria um espelho do seu repo atual e o envia para o novo local. Portanto, isso pode levar algum tempo para repositórios grandes ou conexões lentas .
git push --mirror origin
mais -f
.
Copie-o. É realmente assim tão simples. :)
No lado do cliente, basta editar .git / config no repositório local do cliente para apontar seus controles remotos para o novo URL, conforme necessário.
Isso é feito parcialmente em algumas das outras respostas.
git clone --mirror git@oldserver:oldproject.git
cd oldproject.git
git remote add new git@newserver:newproject.git
git push --mirror new
--mirror
no impulso é muito importante: esta deve ser a resposta correta
git init --bare
Estou apenas reposicionando o que os outros disseram, em uma lista simples de seguir as instruções.
Mova o repositório: Simplesmente faça login no novo servidor, cd
no diretório pai onde você deseja manter o repositório e use rsync
para copiar do servidor antigo:
new.server> rsync -a -v -e ssh user@old.server.com:path/to/repository.git .
Faça com que os clientes aponte para o novo repositório: Agora, em cada cliente usando o repositório, basta remover o ponteiro para a origem antiga e adicionar um ao novo.
client> git remote rm origin
client> git remote add origin user@new.server.com:path/to/repository.git
git remote set-url origin user@new.server.com:path/to/repository.git
Dê uma olhada nesta receita no GitHub: https://help.github.com/articles/importing-an-external-git-repository
Eu tentei vários métodos antes de descobrir git push --mirror
.
Trabalhou como um encanto!
git clone --mirror ...
, git remote add ...
,git push --mirror ...
Eu segui as instruções no BitBucket para mover um repositório com todos os seus ramos lá. Aqui estão as etapas com explicações após o #
personagem:
cd path/to/local/repo
git remote remove origin # to get rid of the old setting, this was not in the BitBucket instructions
git remote add origin ssh://git@bitbucket.org/<username>/<newrepo> # modify URL as needed
git push -u origin --all # pushes _ALL_ branches in one go
git push -u origin --tags # pushes _ALL_ tags in one go
Funcionou bem para mim.
Esta é uma variação desta resposta , atualmente sugerida pelo gitlab para "migrar" um repositório git de um servidor para outro.
Vamos supor que seu projeto antigo seja chamado existing_repo
, armazenado em uma existing_repo
pasta.
Crie um repositório em seu novo servidor. Vamos assumir que o URL desse novo projeto égit@newserver:newproject.git
Abra uma interface da linha de comandos e digite o seguinte:
cd existing_repo
git remote rename origin old-origin
git remote add origin git@newserver:newproject.git
git push -u origin --all
git push -u origin --tags
Os benefícios dessa abordagem são que você não exclui a filial que corresponde ao seu servidor antigo.
Você pode usar o seguinte comando:
git remote set-url --push origin new_repo_url
Exemplo de http://gitref.org/remotes/
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/github/git-reference.git (push)
$ git remote set-url --push origin git://github.com/pjhyett/hw.git
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/pjhyett/hw.git (push)
Deve ser tão simples quanto:
git remote set-url origin git://new.url.here
Dessa forma, você mantém o nome origin
do seu novo repositório - e depois envia para o novo repositório o antigo, conforme detalhado nas outras respostas. Supondo que você trabalhe sozinho e tenha um repositório local que deseja espelhar com todo o seu dinheiro, você também deve (de dentro do repositório local)
git push origin --mirror # origin points to your new repo
mas consulte "Git push --mirror" é suficiente para fazer backup do meu repositório? (em todos, não use --mirror
apenas uma vez).
Se você deseja mover de uma origem para outra e também manter um backup da sua origem atual em sua máquina local, siga estas etapas:
Agora na pasta faça
git remote get-url origin
O comando acima fornece o URL de origem remota atual, útil para definir a origem de volta na última etapa
git remote set-url origin git@github.newlocation:folder/newrepo.git
O comando acima define a origem remota para o novo local
git push --set-upstream origin develop
O comando acima envia o ramo local ativo atual para remoto com o desenvolvimento do nome da filial. É claro que preserva toda a história, pois com o git toda a história também é empurrada.
git remote set-url origin <original old origin>
O comando acima recupera a origem remota para a sua origem atual: você deseja isso porque está na pasta existente e provavelmente não deseja misturar o nome atual da pasta local com a nova pasta que você criará para clonar o repositório você acabou de empurrar para.
Espero que isto ajude,
Se você deseja migrar um repositório #git de um servidor para um novo, faça o seguinte:
git clone OLD_REPOSITORY_PATH
cd OLD_REPOSITORY_DIR
git remote add NEW_REPOSITORY_ALIAS NEW_REPOSITORY_PATH
#check out all remote branches
for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done
git push --mirror NEW_REPOSITORY_PATH
git push NEW_REPOSITORY_ALIAS --tags
Todas as ramificações e tags remotas do repositório antigo serão copiadas para o novo repositório.
Executando este comando sozinho:
git push NEW_REPOSITORY_ALIAS
copiava apenas uma ramificação principal (apenas ramificações de rastreamento) para o novo repositório.