git 中心服务搭建
中心服务方式选择 git 本身是一个分布式的版本管理系统,但如果要设置一个中心库方便很多开发者同步,或者像SVN 一样使用它,就需要搭建一个中心库。有几种方式可以选择:
gitosis :
这个是比较老的方式。不推荐
详情参考: https://git-scm.com/book/en/v1/Git-on-the-Server-Gitosis
GitLab: git 结合web 服务来管理,方便issue 和权限管理。比较推荐。收费版还可提供更多功能。参考:https://about.gitlab.com/install/
只用ssh git 用户管理
开一个git 用户,设定好权限,也比较方便。但是缺少管理issue 功能。
参考:https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
ssh git用户设置 ssh key证书生成 $ ssh-keygen –t rsa –C “user@host”
将id_rsa.pub 发给git服务器管理员添加进/home/git/.ssh/authorized_keys 即可,或者直接用 ssh-copy-id 到服务器即可。
$ git clone git@IP:/srv/git/test.git
有几个注意点:
使用 ssh key 登陆 git 用户时,home目录只能是git 可写的,否则当git组包含多个用户时会出现不用能ssh key 登录的问题。具体debug ssh key 登录问题,可以查看 /var/log/auth 下的日志来解决。.ssh/ 的权限是700,.ssh/authorized_keys 权限是600。 最后用chsh 修改 git用户shell 为 git-shell,不让git 用户有其它多余的权限。 创建仓库可以用git 组的其它用户来创建。注意使用newgrp 将创建文件夹时用户的默认组改成git, 这样整个git 组的用户都有读写权限。 一些实用的git 命令记录 git checkout --patch BRANCH FILE git checkout --theirs PATH/FILE
git clean -n //演习
git ls-files
git ls-files | xargs -n 1 dirname | uniq
git diff master sync --name-only
git config --global core.