我在本地计算机上有各种Git项目。我有一台服务器,我想用作我的远程Git存储库。如何将本地Git存储库(项目)移动到我的服务器,同时保持历史记录不变?
谢谢!
编辑: 感谢所有的好答案。我选择的回答对我有限的GIT知识有意义。
编辑#2:编辑#2: 我注意到我的原始答案选择没有复制我的标签。git push --mirror <path>
会复制标签。
答案 0 :(得分:61)
在您的服务器上创建git存储库作为裸存储库
git init --bare repo.git
然后,推送本地存储库的提交
git push --mirror ssh://yourserver/~/repo.git
答案 1 :(得分:56)
首先,在您的服务器上创建一个git仓库
git init --bare /path/to/repo
然后将远程仓库添加到本地仓库(ssh://或https://)
git remote add origin ssh://server/path/to/repo
并推送文件/提交
git push origin master
最后,推送标签
git push origin --tags
答案 2 :(得分:10)
Ralf Wernders blog有一个很好的教程。假设您知道如何在服务器上创建存储库,或者已经完成了存储库:
git remote add <remote> <url>
将遥控器添加到本地存储库。 <remote>
是遥控器的名称(通常是“原点”)。 <url>
是具有写访问权限的存储库的URL(如git @ ...)
git push <remote> <branch>
将提交移至原点。 <branch>
是您正在推动的分支(通常是“主人”)。
答案 3 :(得分:4)
在服务器上创建一个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
现在,使用
为每个本地存储库创建一个新的裸存储库mkdir projectName
cd projectName
git init --bare
之后,网址将为git@yourserver:projectName
。
答案 4 :(得分:3)
如果您想要一个普通的(例如:非裸)存储库,只需复制它。没有什么特别需要做的。
如果要在服务器上使用裸存储库,只需在服务器上初始化它,将其作为远程添加到“本地”副本,然后推送到它。 (git push --mirror
将完成所有事情。)
答案 5 :(得分:1)
如果您有一个独立的本地工作树存储库(里面有“.git”文件夹的文件夹),您想要将遥控器添加到:
在本地存储库中,将新远程设置为源:
cd localrepo
git remote add origin REMOTEURL#(使用git remote -v验证)
将所有本地分支推送到远程,并设置每个本地分支以跟踪相应的远程分支:
git push --all --set-upstream origin#(使用git branch -vv验证)
将所有本地标签推送到遥控器:
git push --tags origin
此时,本地存储库的行为就像它从遥控器克隆一样。
如果您有一个裸的本地存储库(名称以.git结尾的文件夹),您只想将其复制到远程:
在本地存储库中,将其所有分支推送到远程
cd localrepo.git
git push --all REMOTEURL
将所有本地标签推送到遥控器:
git push - 标记REMOTEURL
答案 6 :(得分:0)
也许这是“倒退”,但我一直都在做
git clone --bare localrepo localrepo.git
scp -r localrepo.git remoteserver:/pathTo
mv localrepo localrepo-prev
git clone remoteserver:/pathTo/localrepo
证明新的回购是好的,使用git status / log等让我感觉更好
将不受版本控制的任何文件从-prev移动到新的localrepo
rm -rf localrepo.git localrepo-prev
答案 7 :(得分:0)
我有一个带有提交日志的本地仓库。我想添加一个新的github远程存储库,保留所有提交日志。方法如下:
在github上创建远程仓库。并从“克隆或下载”绿色按钮获取repo URL,例如https://github.com/mhisoft/eVault.git
如果本地仓库附加到旧的orgin。先删除它
git remote remove origin
从命令行添加现有存储库
git remote add origin https://github.com/mhisoft/eVault.git
git push -u origin master
答案 8 :(得分:0)
我尝试了前两个最受好评的答案。但它会引发各种错误。也许是因为“git”中的内容已更新。 这就是我所做的。 如果您尝试过任何其他方法,请通过“rm -rf ./.git”删除“.git”文件夹,如果您创建了远程存储库,请删除它以重新开始。
#。在您的本地存储库中启动 git。
git init
#。添加文件(如果您想忽略某些文件或文件类型或文件夹,您可以创建一个 .gitignore 文件,这是可选的)。
git add .
#。进行第一次提交
git commit -m "First commit"
#。现在在 bitbucket/github 中创建一个 empty 存储库 登录到 bitbucket/github 并创建一个没有自述文件或 .gitignore 的新存储库。如果有任何文件 tnere 或 commit,它将产生问题。还有其他程序。
#。在 BitBucket/Github 中将此存储库添加为本地存储库的“远程”。转到本地存储库目录的根目录。
git remote add origin Remote_URL_Of_the_Repo
#。 Remote_URL 看起来像 https://UserName@bitbucket.org/UserName/RepositoryName.git
#。将本地文件推送到远程仓库
git push origin master
#。完成后,您将看到本地文件、master 分支、远程提交。