热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

搭建团队git工作环境[完整流程记录]

服务器环境LinuxCentOS6.5(IP:192.168.1.101)客户机环境Mac(IP:192.168.1.100)本文使用管理员进行操作1.[服务器]安装git$sud
  • 服务器环境 Linux CentOS 6.5 (IP:192.168.1.101)

  • 客户机环境 Mac (IP:192.168.1.100)

  • 本文使用管理员进行操作

1. [服务器] 安装git

$ sudo yum install git

若sudo碰到如下报错(无错忽略这里):

sudo: /etc/sudoers is mode 0640, should be 0440

直接恢复 /etc/sudoers 权限为0440即可(需要管理员权限)。

$ chmod 440 /etc/sudoers

2. [服务器] 安装 openssh 服务器与客户端工具

$ sudo yum install openssh-server openssh-client

3. [服务器] 配置git用户

帐户创建后,默认家目录会在 /home/git(若设定为其它目录请修改路径)

$ sudo useradd -m git
$ sudo passwd git #密码你随意

4. [服务器] 创建git仓库目录

创建默认的仓库目录 repositories,此目录可以在后面 gitosis.conf 配置文件里进行修改

$ sudo mkdir /home/git/repositories

设置git仓库权限

$ sudo chown git:git /home/git/repositories
$ sudo chmod 755 /home/git/repositories

初始化git全局设置

$ git config --global user.name "myname"
$ git config --global user.email "myname@server"

5. [服务器] 安装 gitosis 管理工具

安装 python 的 setup tool

$ sudo yum install python-setuptools

安装 gitosis

$ cd /tmp
$ git clone https://github.com/res0nat0r/gitosis.git
$ cd gitosis
$ sudo python setup.py install

6. [服务器] 创建用于管理git的公钥和私钥

默认情况下,公钥和私钥会保存在~/.ssh目录下

$ ssh-keygen -t rsa

公钥需要添加到 /home/git/.ssh/authorized_keys 这里git操作时才不用输入密码,不过请不手动添加进来,我们需要使用gitosis来管理客户机git权限

注意:以前手动加进去的公钥是不受gitosis权限管理的,需要管理就删除手动加入的,让gitosis自动加入

7. [服务器] 配置gitosis

使用上面生成的公匙导入到gitosis里,本机就有了git的管理权限

$ cp ~/.ssh/id_rsa.pub /tmp
$ sudo -H -u git gitosis-init $ sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

8. [服务器] 管理gitosis

在服务器直接取出进行配置(配置好后,你也可以授权给某客户机帐户进行管理)

$ cd ~
$ git clone git@192.168.1.101:gitosis-admin.git
$ cd gitosis-admin/
$ ls -al

gitosis.conf是git仓库与权限配文件,keydir目录是存放其它客户机的公匙目录

$ more gitosis.conf

gitosis.conf 的内容

[gitosis]
## To override the default ~/repositories path
# repositories = repositories
[group gitosis-admin]
writable = gitosis-admin
members = root@localhost.localdomain

8. [服务器] 创建git项目

使用git用户创建测试项目(不要用root帐户创建,注意目录权限)

$ su - git
$ cd /home/git/repositories
$ mkdir test_project
$ cd test_project
$ git init --bare
$ logout

9. [客户机] 创建成员的公钥和私钥

创建本机公钥和私钥

$ ssh-keygen -t rsa -C "yeyingsenlin928@qq.com"

复制客户机的公钥到服务器上clone出的gitosis-admin/keydir目录中

$ scp ~/.ssh/id_rsa.pub root@192.168.1.101:~/gitosis-admin/keydir/yeyingsenlin.pub

10. [服务器] 在gitosis中给客户机授权

进入服务器上clone出的gitosis-admin目录中

$ cd ~/gitosis-admin
$ vi gitosis.conf

在 gitosis.conf 中添加授权配置

[gitosis]
## To override the default ~/repositories path
# repositories = repositories
[group gitosis-admin]
writable = gitosis-admin
#加入了客户机做为gitosis管理
members = root@localhost.localdomain yeyingsenlin
#添加一个组
[group myteam]
#项目仓库名
writable = test_project
#成员名称要写上面公匙文件名对应,多个成员可用空格隔开
members = yeyingsenlin

保存配置,将gitosis改动提交到库

$ git add .
$ git commit -a -m "Allow yeyingsenlin write access to test_project"
$ git push origin master

11. [客户机] 授权后可以使用git仓库了

直接操作不需要密码

$ cd ~
$ mkdir test_project
$ cd test_project
$ echo "testing" > test.txt
$ git init
$ git remote add origin git@192.168.1.101:test_project.git
$ git add .
$ git commit -a -m "ok"
$ git push origin master

换个目录看能否clone回来

$ cd /tmp
$ git clone git@192.168.1.101:test_project.git

12. [客户机] 可授权客户机管理gitosis

上面已经将yeyingsenlin客户公钥加入配置,直接clone仓库取出 gitosis-admin 即可,对keydir的公钥及gitosis.conf授权进行管理,与上面服务器方法相同

$ cd ~
$ git clone git@192.168.1.101:gitosis-admin.git

13. [服务器] 注意git用户权限

因为使用gitosis对git进行限制,要保证/etc/passwd里的git配置为

$ vi /etc/passwd

找到git (通常在最后面)

git:x:501:501::/home/git:/bin/bash

如果是 git-shell 会操作失败

完成!

参考:
Github的SSH KEY配置
在centos 下安装配置基于gitosis 的git 服务
服务器上的 Git – Gitosis
Git远程操作详解
git错误大汇总


推荐阅读
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了使用SSH免密登录的步骤,包括生成公私钥、传递公钥给被登录机、修改文件权限的操作。同时提醒用户注意私钥的传递方式,建议使用U盘等离线方式传递。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • PatchODAX8: ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
author-avatar
dsalkj08_789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有