我在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。
我实际上所有谷歌搜索结果都标记为已访问,即使此处的大多数问题与我的问题有关。所以希望有人能以正确的方式告诉我。
答案 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