32

所以这就是我设置我的项目的方式:

git init --bare

后来我了解到,如果你想处理一个有多个用户的项目,我应该这样做:

git init --bare --shared

现在我试着像那样工作,幸运的是我们还处于起步阶段,所以我可以再次设置 git。我仍然想知道,当您处于项目中间时,您不能这样做。有没有办法可以将裸仓库更改为共享仓库?

4

4 回答 4

40

由于该--shared选项只是将存储库中所有内容的权限设置为组可写,您可以稍后手动执行此操作:

$ chmod -R g+w the/repo/path

另外,添加

sharedrepository = 1

在中的[core]部分下.git/config。默认情况下,共享存储库还定义了以下接收选项(您可能想要也可能不想要):

[receive]
    denyNonFastforwards = true

注意:为了决定是否需要denyNonFastforwards:此选项意味着共享存储库中永远不会发生合并,这反过来意味着共享存储库中永远不会发生合并冲突。相反,推送被拒绝,迫使用户在他们的本地存储库中进行合并,这样更容易修复并且不会干扰其他人对共享存储库的使用。

于 2012-01-16T16:40:05.720 回答
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
于 2014-02-13T23:16:54.740 回答
5

除了 chmod -R g+w 之外,你还需要编辑(.git/)config和设置core.sharedRepository = .... 对于 ...,有一些值,在 git-init(1) 中进行了描述。

于 2012-01-16T16:44:57.340 回答
3

如果您尝试从它所在的主机共享存储库,则必须执行其他配置步骤(ssh 内容)。

http://shapeshed.com/setting_up_git_for_multiple_developers/

http://www.jedi.be/blog/2009/05/06/8-ways-to-share-your-git-repository/

于 2012-01-16T16:41:08.720 回答