Para a conveniência da discussão a seguir, chamaremos o armazém git a ser migrado como um armazém local e o armazém git remoto como um armazém remoto. Exigindo manter os registros de envio, a seguir estão as etapas de migração.
1. Crie um armazém remoto vazio
1.1 Crie na página da web GitLab
Após a conclusão da criação, você obterá o endereço git: http://10.69.12.11/android/hello.git
1.2 Crie usando a API fornecida pelo GitLab ou GitHub
Para usar a API da maneira mais simples, escreverei um script de shell no arquivo de configuração ~ / .bashrc para concluir:
~$ vim ~/.bashrc
Adicione o seguinte conteúdo no final de .bashrc:
- Versão do GitLab:
repo_create(){
# 判断是否存在参数,有,则赋给repo_name变量,否则使用当前目录作为repo_name的值
if [ $1 ];then
repo_name=$1
else
repo_name=`basename $(pwd)`
echo "set Repo Name to ${repo_name}"
fi
# 使用GitLab Api创建远程仓库
# oExkVZEW2WKDcoF6mXdW是Personal access tokens,在gitlab web上创建
# name=${repo_name}是指定仓库的名称
# namespace_id=12是group id可以在gitlab上查到
# http://10.69.12.11/api/v4/projects,则是GitLab服务器的地址,及api
curl -k --request POST --header "PRIVATE-TOKEN:oExkVZEW2WKDcoF6mXdW" --data "name=${repo_name}&namespace_id=12" http://10.69.12.11/api/v4/projects
}
- Versão do GitHub:
repo_create(){
# 判断是否存在参数,有,则赋给repo_name变量,否则使用当前目录作为repo_name的值
if [ $1 ];then
repo_name=$1
else
repo_name=`basename $(pwd)`
echo "set Repo Name to ${repo_name}"
fi
# 使用GitHub Api创建远程仓库
# 8ad7a0e3faaa7574c4c1f38b5280c7d9ecf980ab是Personal access tokens,在GitHub上创建
# '{"name":"'${repo_name}'"}'是指定仓库的名称
curl -u '[email protected]:8ad7a0e3faaa7574c4c1f38b5280c7d9ecf980ab' https://api.github.com/user/repos -d '{"name":"'${repo_name}'"}'
}
Execute o comando de origem para usar o arquivo de configuração para entrar em vigor:
~$ source ~/.bashrc
Use repo_create para criar um armazém remoto:
~$ repo_create Hello
Após a criação bem-sucedida, ele retornará para http://10.69.12.11/android/hello.git.
Referência da API do GitLab https://docs.gitlab.com/ce/api/
2. Exclua o armazém remoto originalmente associado ao armazém local
~/local_project$ git remote rm origin
3. Associe o armazém local ao novo armazém remoto
~/local_project$ git remote add origin http://10.69.12.11/android/hello.git
Nota : Se a operação do ponto 2 não for realizada, o seguinte erro será relatado:
fatal: origem remota já existe.
4. Envie o código do armazém local para o cache a ser enviado
~/local_project$ git add .
5. Escreva uma nota (opcional)
~/local_project$ git commit -m "迁移Local_project项目到远程hello仓库"
6. Histórico de mesclagem (quando o armazém remoto é criado e inicializado, ele realiza a operação git init, é necessário executar esta etapa; caso contrário, pule
6.1 Especifique a filial a ser mesclada
~/local_project$ git branch --set-upstream-to=origin/master master
Nota: O acima mencionado significa mesclar a filial principal local com a origem remota / filial principal.
6.2 Iniciar fusão
~/local_project$ git pull origin master --allow-unrelated-histories
7. Envie o código
Enviar código para armazém remoto
~/local_project$ git push -u origin master
Clique para seguir: