关于git的几个问题。
目前,我是唯一的用户,并且在我的存储库中成功运行了一些基本命令,我对事情看起来很满意。但是,我希望允许不同的用户管理和更改存储库。我一直在读关于推/拉等的事情。但是还没完全理解它。如果我想实现这一目标,我可以就如何阅读提出建议:
[release-directory]例如:/ release / live
[developer1]例如:/ developers / developer1 [developer2]例如:/ developers / developer2
假设开发人员在他的目录中工作,然后想让他的版本最终。他需要“推动”他的临时区域“/ release / live”吗?而且,如果他推出一个搞砸了的版本怎么办?我该怎么回去?内容也存储在哪个分支中?我需要哪些权限才能允许developer1推送到release-directory?两个目录都在同一台服务器上,因此我不需要为SSH或其他任何事情烦恼。
答案 0 :(得分:1)
两个目录都在同一台服务器上,所以我不需要为SSH或其他任何事情烦恼。
当所有内容都在同一台服务器上时,您需要一个裸存储库(git init --bare
),其中每个开发人员都可以将其更改为(=所有用户都可写)。推入非裸存储库是一件麻烦事。
[我假设您的服务器运行的是linux / bsd / macos]当您的用户是不同的unix用户时,您不仅需要chmod g+w
repositoy,还需要在所有目录上设置粘滞位(这意味着新创建的目录也会继承权限位,否则第一个用户创建的目录很可能是755,这意味着没有其他用户可以在此目录中创建文件。)
假设开发人员在他的目录中工作,然后想让他的版本最终。他需要“推动”他的临时区域“/ release / live”吗?
典型的工作流程是开发人员将更改推送到公共存储库,然后这些更改由/release/live
从git pull
传输到/release/live
。 (您也可以使用公共存储库中的钩子自动执行此步骤。)
当新的分支头是已经存在的头部的后代时,人们也只能进入远程分支。这意味着当没有其他人将某些内容推入此分支时,您只能进入远程分支。当有人推入此分支时,您需要提取此新分支内容,然后使用新分支内容合并或重新定义您自己的更改。
此外,如果他推出一个搞砸了的版本,该怎么办?我该怎么回去?
您始终可以git checkout
旧版本的项目。还有git revert
命令,它取消给定提交的更改。
内容也存储在哪个分支中?
当您启动新的git仓库时,您的更改将存储在master
分支中。您可以使用git branch MyNewBranchName
创建一个新分支(然后保持静止在master
)或git checkout -b MyNewBranchName
(这也会将您的工作副本移动到新分支)。您可以使用git branch
(没有任何参数)找到当前的分支名称,然后您当前的分支在其前面标有一个星号。当您不再需要分支时,可以使用git branch -d MyNewBranchName
删除它(这可以确保此分支的所有提交都合并到其他生命分支中)或git branch -D MyNewBranchName
(这将删除分支,并提交没有合并到其他分支的东西最终会在垃圾收集运行期间丢失。)
关于分支的一个很好的资源是http://nvie.com/git-model。
答案 1 :(得分:0)
开始学习工作流程(并且通常更熟悉Git)的一个好地方是git pro book The O'Reilly book也很棒;我强烈推荐。
为了防止“搞砸了”,我建议更深入地挖掘,并通过分支和标记来获得更多的舒适感。
为防止不受欢迎的开发人员访问特定分支(例如“发布”分支),请考虑gitolite。
祝你好运。