Git:如何通过ssh开始使用repo在远程服务器上使用它

时间:2013-03-16 18:48:25

标签: ruby-on-rails git ssh

我在Heroku上使用git,一切都很顺利。现在我尝试在VPS服务器上使用git,但我无法使其正常工作。

我是通过ssh在终端上做的。它是一个rails应用程序。当我创建一个新的rails应用程序时,我会git init git add .并提交。在服务器上,我使用git init --bare创建一个裸仓库。当我试图推动它时,它就失败了。

然后我尝试手动将文件上传到服务器,在那里创建一个repo并在本地克隆它,但是当我在本地进行更改,提交它并上传它们时,它也会失败。

我真的做了一些事情,试图自己解决失败的问题。有很多不同的错误和不同的方法...我阅读不同的教程,甚至我自己的服务器提供程序,因为我遵循并出错。

当我收到错误消息时,我试图找到解决方案,但我最终无法推动。好吧,在某些情况下推送顺利,但远程回购似乎没有改变(git push之后没有错误。)

过去48小时我真的只是在电脑上尝试做这项工作,每次重新开始尝试不同的事情。

我想我曾经只是向前迈出了一步。刚刚意识到(并且不能记住我遵循的步骤)它可能是使用不同分支的东西,因为我做到了,它看起来有点奇怪(对我来说):

$ git branch -r
origin/HEAD -> origin/master
origin/master

$ git branch
* master

奇怪,因为我认为可能没有列出相同的远程和本地分支。

所以我的问题是如何使用空白的rails应用程序启动新的git repo,并将所有内容首次上传到我的服务器。不知道它是否重要,但我使用ssh从终端连接到服务器,服务器作为Apache / Phusion Passenger。

我实际上所有谷歌搜索结果都标记为已访问,即使此处的大多数问题与我的问题有关。所以希望有人能以正确的方式告诉我。

3 个答案:

答案 0 :(得分:1)

你的步骤似乎很好,不过我会再给他们一次

[user@server] cd path/to/repo
[user@server] git init --bare projekt
[user@home] git push user@server:path/to/repo --all

答案 1 :(得分:1)

看起来你非常接近。在您的开发机器上,确保您具有正确的远程定义:

git remote add origin ssh://<username>@<hostname>[:<port>]/path/to/repo/dir

然后确保您的推送包括分支:

git push origin master

你会得到类似的东西:

ebg@ebg(21)$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 207 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://gozoner@<hostname>:2222/home/gozone/git/foo
 * [new branch]      master -> master

我的确切过程:

$ mkdir /tmp/foo; cd /tmp/foo; touch foo.c; git init;
$ git add .; git commit -m 'foo'
$ ssh remote
> mkdir ~/git/foo; cd ~/git/foo; git init --bare
> ^D
$ git remote add origin ssh://.../home/gozoner/git/foo
$ git push origin master

[编辑]

如果您再查看远程存储库,在我上面的示例中的〜/ git / foo中,您将只看到.git文件。要获取存储库内容,要运行rails应用程序,请执行克隆。

$ ssh remote
> git clone ~/git/foo ~/rails/foo
> cd ~/rails/foo
> # your files are there; run web server

答案 2 :(得分:1)

不确定为什么它不适合你,但这是一种设置远程回购的不同方式。

(以下内容基于Chapter 4.2 of Pro Git。请参阅链接以获得更详尽的解释。)

创建回购的“裸”版本。从git存储库的父目录运行此命令。

local$ git clone --bare my_project my_project.git

将裸存储库复制到远程服务器。此示例将裸仓库放入~user/git

local$ scp -r my_project.git user@your-remote-server.com:git

现在可以通过从本地repo root运行此命令从现有存储库访问它:

local$ git remote add origin user@your-remote-server.com:git/my_project.git

或者你可以克隆整个事情:

local$ git clone user@your-remote-server.com:git/my_project.git