0

我在 Heroku 上使用 git,一切都很顺利。现在我试图在 VPS 服务器上使用 git,但我无法让它工作。

我正在通过 ssh 在终端上执行此操作。这是一个轨道应用程序。当我创建一个新的 Rails 应用程序时,我会git init git add .提交。在服务器上,我使用git init --bare. 当我尝试推动它时它只是失败了。

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

我真的做了更多的事情,试图自己找出失败的原因。有很多不同的错误和不同的方法......我阅读了不同的教程,甚至我自己的服务器提供商作为我遵循的一个并且得到了错误。

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

在过去的 48 小时里,我实际上只是在电脑上试图完成这项工作,每次都重新开始并尝试不同的事情。

我认为这一次我离做对只有一步之遥。之后才意识到(并且不记得我遵循的步骤)它可能是使用不同分支的东西,因为我做到了,它看起来有点奇怪(对我来说):

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

$ git branch
* master

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

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

实际上,我已经将所有关于此的谷歌结果都标记为已访问,甚至这里的大多数问题都与我的问题有关。所以希望有人能告诉我正确的方法。

4

3 回答 3

1

你的步骤看起来不错,不过我会再提供一次

[user@server] cd path/to/repo
[user@server] git init --bare projekt
[user@home] git push user@server:path/to/repo --all
于 2013-03-16T18:58:11.420 回答
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
于 2013-03-16T19:12:17.603 回答
1

不知道为什么它不适合你,但这是设置远程仓库的另一种方式。

(以下内容基于Pro Git 的第 4.2 章。有关更详尽的说明,请参阅链接。)

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

local$ git clone --bare my_project my_project.git

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

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

现在应该可以通过从本地存储库根运行以下命令从现有存储库访问它:

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
于 2013-03-16T19:28:58.380 回答