Git,如何将裸机改为共享仓库?

bot*_*oot 31 git shared repository git-bare

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

git init --bare
Run Code Online (Sandbox Code Playgroud)

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

git init --bare --shared
Run Code Online (Sandbox Code Playgroud)

现在我尝试这样工作,幸运的是我们在开始,所以我可以再次设置git.我仍然想知道,当你处于项目中间时,你无法做到这一点.有没有办法可以将裸仓库改为共享仓库?

mik*_*iku 40

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

$ chmod -R g+w the/repo/path
Run Code Online (Sandbox Code Playgroud)

另外,添加

sharedrepository = 1
Run Code Online (Sandbox Code Playgroud)

在该[core]节中.git/config.共享存储库还具有默认定义的以下接收选项(您可能需要也可能不需要):

[receive]
    denyNonFastforwards = true
Run Code Online (Sandbox Code Playgroud)

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


jør*_*sen 5

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


小智 5

可能如果您尝试共享现有存储库,则可能有许多不同的用户提交.

1.如果您拥有超级用户权限,则可以使用第二步自行更改所有权限,在任何其他情况下,您需要向所有用户询问使用其用户创建的对象,使用以下命令了解谁他们是:

$ ls -la | awk '{print $3}' | sort -u 
<your user_name>
<his user_name>
Run Code Online (Sandbox Code Playgroud)

2.现在您和所有文件的所有者用户必须更改这些文件权限,执行以下操作:

$ chmod -R 774 .
Run Code Online (Sandbox Code Playgroud)

3.之后,您将需要添加一个新属性,该属性相当于--shared =为新存储库完成的组,根据文档,这使存储库组可写,执行它:

$ git config core.sharedRepository group
Run Code Online (Sandbox Code Playgroud)