如何使用Git初始推送到远程存储库?


173

我已经阅读了无数的教程,并且我总是简短。这是我得到的:

-我在Windows桌面上运行RubyMine-
按照他们的指示在WebFaction托管帐户上安装了Git-
两台机器上的Git都运行良好

下面是我在做什么:
1.在服务器:
         一。mkdir 项目
         b。git init
         c。git添加
         d。git的承诺“---“没有承诺”
2.在客户端:
         一。在RubyMine中创建新项目。
         b。项目
         c的顶层目录中的“ git init” 。服务器“ <将更改推送到” <----“无法将某些引用推送到...”。

我缺少什么步骤?

Answers:


393

在服务器上:

mkdir my_project.git
cd my_project.git
git --bare init

在客户端上:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

请注意,添加原点时,可以使用多种格式和模式。我建议您查看托管服务提供的内容。


自从我使用RubyMine以来,我唯一更改的就是我用创建有66个默认文件的rails项目替换了touch .gitignore。非常感谢你!
唐纳德·休斯2010年

列出命令的荣誉。这也是我设置远程存储库的方式。
Dave Bacher 2010年

5
我应该补充一点,如果您希望其他人在此仓库上与您合作,则应添加--sharedgit --bare init命令末尾。这将设置必要的权限。
Josh Lindsey '02

感谢您的回答。这样的东西可以填补git很好的书籍中缺少的东西,这非常有帮助,但是仍然不能涵盖CVS的大量转换工作。
octopusgrabbus

21
我喜欢跑步,git push --set-upstream origin master而不是git push origin master第一次。这使我可以输入git pushgit pull而不是git push origin master每次输入。符合您的喜好。
里克·史密斯

8

您可以尝试以下方法:

在服务器上:

/etc/group喜欢添加新组(示例)

mygroup:1001:michael,nir

创建新的git仓库:

mkdir /srv/git
cd /srv/git
mkdir project_dir
cd project_dir
git --bare init (initial git repository )
chgrp -R mygroup objects/ refs/ (change owner of directory )
chmod -R g+w objects/ refs/ (give permission write)

在客户端上:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

(感谢Josh Lindsey的客户端)

客户端之后,在服务器上执行以下命令:

cd /srv/git/project_dir
chmod -R g+w objects/ refs/

如果在git pull之后出现此错误:

There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details

git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream new origin/<branch>

尝试:

git push -u origin master

我会帮你的。



5

如果您的项目没有上游分支,也就是说,这是远程存储库第一次了解本地存储库中创建的分支,那么以下命令应该起作用。

git push --set-upstream origin <branch-name>

3

@Josh Lindsey已经很好回答了。但是我想添加一些信息,因为我经常使用ssh。

因此,只需更改:

git remote add origin youruser@yourserver.com:/path/to/my_project.git

至:

git remote add origin ssh://youruser@yourserver.com/path/to/my_project

请注意,域和路径之间的冒号不再存在。


1

您需要在客户端上设置远程存储库:

git remote add origin ssh://myserver.com/path/to/project

我运行了该命令,但是“ git push origin master”仍然导致“无法推送某些引用”。我尝试做一个“ git pull origin master”,并收到“找不到远程ref master”。
唐纳德·休斯2010年

我不确定是否会git --bare init有所作为,但是我的远程存储库是按照@Josh Lindsey建议的方式创建的。
Dave Bacher 2010年

我遇到了同样的问题“无法推送一些引用” ...试图将主分支从一个回购推送到我创建的那个...然后我注意到源没有主分支-确保您正在尝试的分支推动存在:)
Datum Geek
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.