这就是我设置项目的方式:
git init --bare
后来我了解到如果你想在一个有多个用户的项目上工作,我应该这样做:
git init --bare --shared
现在我尝试这样工作,幸运的是我们在开始时所以我可以再次设置git。我仍然想知道,当你处于项目中间时,你无法做到这一点。 有没有办法可以将裸仓库改为共享仓库?
答案 0 :(得分:40)
由于--shared
选项只是将存储库中所有内容的权限设置为可写组,因此您可以稍后手动执行此操作:
$ chmod -R g+w the/repo/path
另外,添加
sharedrepository = 1
在[core]
的{{1}}部分下。共享存储库还默认定义了以下receive option(您可能想要也可能不想要):
.git/config
注意:为了决定是否需要denyNonFastforwards:此选项意味着合并永远不会发生在共享存储库中,这反过来意味着共享存储库上永远不会发生合并冲突。相反,推送被拒绝强制用户在他们的本地存储库中进行合并,在那里它更容易修复,并且不会干扰其他人使用共享仓库。
答案 1 :(得分:5)
除了chmod -R g + w之外,您还需要修改(.git/)config
并设置core.sharedRepository = ...
。对于...,有一些值,在git-init(1)中描述。
答案 2 :(得分:5)
如果您尝试共享一个现有的存储库,可能会有很多不同的用户提交。
1.如果您拥有超级用户权限,则可以使用第二步自行更改所有权限,在任何其他情况下,您需要向所有用户询问使用其用户创建的对象,请使用以下命令要知道他们是谁:
$ ls -la | awk '{print $3}' | sort -u
<your user_name>
<his user_name>
2.现在您和所有文件的所有者用户必须更改这些文件权限,执行:
$ chmod -R 774 .
3.之后你将需要为新存储库添加一个等同于--shared = group done的新属性,根据文档,这使得存储库组可写,执行它:
$ git config core.sharedRepository group
答案 3 :(得分:3)
如果您尝试从其所在的主机上共享存储库,则必须执行其他配置步骤(ssh stuff)。
http://shapeshed.com/setting_up_git_for_multiple_developers/
http://www.jedi.be/blog/2009/05/06/8-ways-to-share-your-git-repository/