我正在使用一个盒子作为共享仓库,我的团队通过 ssh 连接到它。
我的工作是:
在中央计算机git init
然后从每个工作站执行git clone ssh://user@central-box/Users/user/Projects/my-project/.git/
这很好用,但每当我推动这样的事情时,git一直对我大喊大叫:
是否有更好的方法可以通过ssh 分享回购。
重要提示:我很清楚gitosis
和这类工具的存在,我不想要任何花哨的东西。只需通过ssh共享.git回购。
由于
答案 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”组中所有用户的写访问权。