这是我设置项目的方式:
git init --bare
后来我了解到,如果要在一个项目中与多个用户一起工作,这就是我应该做的方式:
git init --bare --shared
现在我已经尝试过这样的工作方式,幸运的是我们还处于开始阶段,所以我可以再次设置git。不过我仍然想知道,当你处于项目中途时,是否有办法将裸仓库更改为共享仓库?
这是我设置项目的方式:
git init --bare
后来我了解到,如果要在一个项目中与多个用户一起工作,这就是我应该做的方式:
git init --bare --shared
现在我已经尝试过这样的工作方式,幸运的是我们还处于开始阶段,所以我可以再次设置git。不过我仍然想知道,当你处于项目中途时,是否有办法将裸仓库更改为共享仓库?
因为--shared
选项只是将存储库中的所有内容权限设置为组可写,所以您可以稍后手动执行此操作:
$ chmod -R g+w the/repo/path
加上,添加
sharedrepository = 1
在 .git/config
文件的 [core]
部分。共享仓库默认情况下还具有以下接收选项(可能需要也可能不需要):
[receive]
denyNonFastforwards = true
注意:为了决定是否想要使用denyNonFastforwards选项:该选项意味着合并从不会在共享存储库中发生,这反过来又意味着共享存储库上永远不存在合并冲突。相反,推送将被拒绝,强制用户在其本地存储库中进行合并,这样更容易修复,并且不会干扰其他人使用共享存储库。
chmod -R g+s ...
。一个新的 git init --bare --shared
将具有组权限 "rws"。(Ubuntu 12.04) - Unapiedrasharedrepository = group
,根据 man 页面,这与 sharedrepository = 1
相同! - lanoxx如果你尝试分享一个现有的仓库,可能会出现许多不同用户的提交。
1.如果你拥有超级用户权限,你可以继续使用步骤二自己更改所有权限。否则,你需要向所有具有使用其用户创建对象的用户询问,使用以下命令了解他们是谁:
$ ls -la | awk '{print $3}' | sort -u
<your user_name>
<his user_name>
2.现在,您和所有文件所有者的用户都需要更改这些文件的权限,执行以下操作:
$ chmod -R 774 .
3. 接下来,您需要添加一个新的属性,相当于为新存储库完成的 --shared=group 属性。根据文档,这将使存储库具有组可写性。执行以下操作:
$ git config core.sharedRepository group
http://shapeshed.com/setting_up_git_for_multiple_developers/
http://www.jedi.be/blog/2009/05/06/8-ways-to-share-your-git-repository/
git 1.7.1
版本中,您只需在 现有 裸仓库中运行git init --bare --shared
命令,git
就会使用指定的共享方式重新初始化该仓库。 - go2null