2010-10-08 48 views
16

我的本地机器上有一个现有的Git存储库。我想将该存储库移动到我的Web服务器,然后在本地计算机上登录git clone以从服务器中检出我的存储库。我正计划在本地计算机上开发并将更新推送回服务器。我可以从本地机器ssh到服务器,但反之亦然。我应该怎么做呢?我认为git bundle应该以某种方式使用,虽然当我试图git clone我的服务器上的捆绑,我得到了一个“警告:远程HEAD指的是不存在的裁决,无法检出”错误。我的本地机器正在运行OS X,服务器正在运行Linux。Git:将现有的存储库从PC移动到服务器,从服务器克隆

回答

29

在Linux服务器上,在一个新的目录下执行:

git init --shared --bare 

然后在本地计算机上:

git remote add origin server:path/to/repo 
git push --all origin 

之后,服务器将具有存储库的完整副本,以及你将能够推动和拉出它。当你已经有一个本地的服务器时,不需要从服务器中检查另一个克隆。

+0

一旦做'git push origin master',我得到一个长的错误,以“总0(delta 0),重用0(delta 0) 开始:错误:拒绝更新检出分支:refs/heads/master remote:error:默认情况下,更新非裸存储库中的当前分支“。我在Linux服务器上回购的唯一内容是“.git HEAD分支配置描述钩子信息对象引用”,这就是'git init --shared --bare'命令创建的内容。我在两台计算机上都使用git 1.7.1.1。 – 2010-10-09 19:37:16

+0

呐喊,没关系!我刚刚开始工作。我并没有在Linux服务器上创建一个新的目录,而是在运行'git init ...'命令之前删除了我所有的内容。创建一个新目录,'git init ...',更改为使用我的本地仓库中的原始目录,然后推送工作。 – 2010-10-09 19:42:45

+0

这在原则上工作正常,但我需要一些额外的步骤使其工作,因为我的服务器运行非标准的ssh端口:在OS X上。我通过安装ssh-askpass(https://github.com/ markcarver/mac-ssh-askpass),然后我必须使用SCP风格的URL在〜/ .ssh/config(请参阅http://stackoverflow.com/a/5738592/217953)中配置端口。 – xgretsch 2015-09-18 11:12:19

2

如何:

local> cd my_repo.git 
local> git remote add origin [email protected]:/path/to/my_repo.git 
local> git config branch.master.remote origin 
local> git config branch.master.merge refs/heads/master 
local> git push origin master 

这将从本地回购将数据发送到服务器。然后执行此操作:

local> cd .. 
local> git clone [email protected]:/path/to/my_repo.git my_repo2.git 

然后您将从服务器克隆。满意后,您可以摆脱原始回购,并可能重命名第二个回购。

9

而是“混帐推主产地”使用“混帐推--all原点”,让你动过所有分支,而不仅仅是主分支的。

相关问题