如何将我的本地Git存储库移动到远程Git存储库
我有我的本地机器上的各种Git项目。 我有一个服务器,我想用作我的远程Git存储库。 如何将我的本地Git存储库(项目)移动到我的服务器,同时保持历史logging不变?
谢谢!
编辑:感谢所有伟大的答案。 我select的答案对我有限的GIT知识是有意义的。
编辑#2:我注意到我原来的答案select没有复制我的标签。 git push --mirror <path>
不会复制标签。
在你的服务器上创buildgit仓库作为裸仓库
git init --bare repo.git
然后推送你本地仓库的提交
git push --mirror ssh://yourserver/~/repo.git
首先,在你的服务器上创build一个git仓库
git init --bare /path/to/repo
然后将远程回购添加到您的本地
git remote add origin ssh://server/path/to/repo
最后,推
git push origin master
Ralf Wernders博客上有一个很好的教程。 假设您知道如何在服务器上创build存储库,或者已经完成:
git remote add <remote> <url>
将远程添加到您的本地存储库。 <remote>
是远程(通常是“起源”)的名称。 <url>
是你的版本库的写入权限(比如git @ …)
git push <remote> <branch>
将提交移动到原点。 <branch>
是你推动的分支(通常是“主”)。
如果你想要一个正常的(例如:不是空的)存储库,只需复制它。 没有什么特别的事情需要去做。
如果要在服务器上使用裸存储库,只需在服务器上初始化该存储库,将其作为远程“本地”副本添加,然后推送到该服务器。 ( git push --mirror
会让所有的东西通过。)
在服务器上创build一个git仓库(你可以使用gitolite / gitosis或只是一个普通的用户帐户+ pubkey ssh auth),使用服务器添加到你的本地git仓库
git remote add name url
并使用git push -u name master
( -u
将当前分支标记为跟踪,因此您可以将git pull
改为git pull name master
)。
在服务器端(基于Debian的系统):
adduser --system --home /home/git --bash /bin/bash git su - git mkdir .ssh cat yourkey.pub > .ssh/authorized_keys
现在,为每个本地资源库使用创build一个新的裸仓库
mkdir projectName cd projectName git init --bare
之后,该url将是git@yourserver:projectName
。
如果您有一个独立的本地工作树资料库(里面有一个“.git”文件夹的文件夹),您想要添加一个远程工具:
- 在远程中创build一个新的空存储库。
-
在本地存储库中,将新的远程设置为原点:
CD localrepo
git remote add origin REMOTEURL#(用git remote -vvalidation)
-
将所有本地分支推送到远程,并设置每个本地分支来跟踪相应的远程分支:
git push –all –set-upstream origin#(用git分支validation-vv)
-
将所有本地标签推送到远程:
git push – 标签的来源
在这一点上,本地存储库的行为就像从远程克隆的一样。
如果您只有一个裸露的本地存储库(名称以.git结尾的文件夹),您只需将其复制到远程:
- 在远程中创build一个新的空存储库。
-
在本地存储库中,将其所有分支推送到远程
cd localrepo.git
git push –all REMOTEURL
-
将所有本地标签推送到远程:
git push – 标签REMOTEURL
也许这是“倒退”,但我一直这样做
git clone --bare localrepo localrepo.git scp -r localrepo.git remoteserver:/pathTo mv localrepo localrepo-prev git clone remoteserver:/pathTo/localrepo
certificate新的回购是好的,与GIT状态/日志等,使我感觉更好
将不在版本控制下的任何文件从-prev移动到新的localrepo
rm -rf localrepo.git localrepo-prev