通过ssh分享git repo的正确方法

时间:2010-09-07 14:35:06

标签: git ssh

我正在使用一个盒子作为共享仓库,我的团队通过 ssh 连接到它。

我的工作是:

  1. 在中央计算机git init

  2. 上创建一个空的git存储库
  3. 然后从每个工作站执行git clone ssh://user@central-box/Users/user/Projects/my-project/.git/

  4. 之类的操作

    这很好用,但每当我推动这样的事情时,git一直对我大喊大叫:

    alt text

    是否有更好的方法可以通过ssh 分享回购

    重要提示:我很清楚gitosis和这类工具的存在,我不想要任何花哨的东西。只需通过ssh共享.git回购。

    由于

2 个答案:

答案 0 :(得分:9)

在主机上你应该做

git init --bare

因为您不需要实际文件,只需要回购。

如果警告信息是第一次推送到回购,并且没有人触及它,请执行

git push -f

否则,此错误表示您的分支方案不正确。您不应该编辑分支origin / branchname。您需要自己的本地分支,名为branchname,然后当您准备好检查代码时

git commit
git pull
git push

您将从当地的branchname推送到origin / branchname。

修改

我想在本地仓库中看到此命令的输出:

git branch

您不应在输出

中的任何位置看到单词origin或服务器名称

答案 1 :(得分:3)

除了bwawok的解决方案,您还需要注意权限问题。默认情况下,当git代表用户创建文件时,他们的权限来自用户的umask,他们的组被设置为用户的默认组。对于常见的umasks和默认组,这将破坏共享仓库,因为这些文件将无法被其他用户修改。

幸运的是,git可以配置为在这种情况下做正确的事情:查看--shared选项git init(或core.sharedRepository设置)。最简单的选项可能是--shared=group,它授予“git”组中所有用户的写访问权。