在Linux系统上通过Git实现团队协作,需要先完成基础环境搭建与核心配置,再逐步完善协作相关的规则与权限设置,让团队开发流程更规范高效。

一、基础环境准备
首先需要在所有协作成员的Linux设备上安装Git,主流的Linux发行版都可以通过包管理器直接安装。
以Ubuntu/Debian系统为例,执行以下命令安装:
# 更新软件包索引 sudo apt update # 安装Git sudo apt install git -y
CentOS/RHEL系统则使用yum命令安装:
# 安装Git sudo yum install git -y
安装完成后可以通过git --version命令验证是否安装成功,正常会输出当前安装的Git版本号。
二、Git基础用户配置
每个协作成员都需要先配置自己的Git用户信息,这样提交记录才能区分不同开发者的操作。
执行以下命令配置全局用户名和邮箱:
# 配置全局用户名,替换为自己的名字 git config --global user.name "zhangsan" # 配置全局邮箱,替换为自己的邮箱 git config --global user.email "zhangsan@ipipp.com"
如果需要针对某个项目单独配置用户信息,可以进入项目目录后去掉--global参数重新执行上述命令即可。
三、搭建团队共享远程仓库
团队协作需要一个共享的远程仓库来同步代码,我们可以选择搭建本地Git服务器,也可以使用第三方托管平台,这里以搭建本地Linux Git服务器为例。
1. 服务器侧配置
首先在作为仓库服务器的Linux设备上创建专门的Git用户,用于管理仓库权限:
# 创建git用户 sudo adduser git # 切换为git用户 su git
之后创建存放仓库的目录,并初始化裸仓库:
# 创建仓库存放目录 mkdir -p /home/git/repos # 进入目录 cd /home/git/repos # 初始化裸仓库,项目名替换为实际项目名 git init --bare project_name.git
裸仓库没有工作区,适合作为远程共享仓库使用,团队成员推送和拉取代码都会操作这个仓库。
2. 成员侧关联远程仓库
团队成员在自己的Linux设备上,进入本地项目目录后,执行以下命令关联远程仓库:
# 关联远程仓库,服务器IP替换为实际仓库服务器的IP地址 git remote add origin git@192.168.0.1:/home/git/repos/project_name.git # 验证远程仓库是否关联成功 git remote -v
四、配置团队协作权限
为了保证仓库安全,需要配置合理的权限,避免无关人员随意修改仓库内容。
1. SSH密钥认证配置
推荐使用SSH密钥的方式认证,避免每次操作都输入密码,同时提升安全性。
团队成员在自己的设备上生成SSH密钥:
# 生成SSH密钥,一路回车即可 ssh-keygen -t rsa -C "zhangsan@ipipp.com"
生成后把~/.ssh/id_rsa.pub文件的内容发给仓库管理员,管理员把公钥内容添加到服务器git用户的~/.ssh/authorized_keys文件中即可完成认证配置。
2. 分支权限管理
可以通过Git的分支保护规则限制核心分支的修改权限,比如禁止直接推送到main分支,只能通过合并请求更新。
如果是使用GitLab等托管平台,可以在平台的项目设置中直接开启分支保护;如果是自建裸仓库,可以通过钩子脚本实现简单的权限控制,比如创建project_name.git/hooks/update钩子:
#!/bin/bash
# 限制只有指定用户能推送到main分支
refname="$1"
oldrev="$2"
newrev="$3"
# 允许推送的分支列表,这里只允许推送到dev分支,main分支需要管理员处理
if [ "$refname" = "refs/heads/main" ]; then
echo "错误:不允许直接推送到main分支,请通过合并请求更新"
exit 1
fi
exit 0
创建后给钩子文件添加执行权限:
chmod +x /home/git/repos/project_name.git/hooks/update
五、制定团队协作流程
配置好基础环境后,还需要制定统一的协作流程,避免代码冲突和流程混乱。
推荐采用以下通用流程:
- 开发者从远程dev分支拉取最新代码到本地
- 创建自己的功能分支进行开发,分支名建议采用
feature/功能名的格式 - 开发完成后提交到自己的功能分支,推送到远程仓库
- 发起合并请求,将功能分支合并到dev分支,由负责人审核代码
- dev分支测试稳定后,再合并到main分支发布
以下是常用的分支操作命令示例:
# 拉取远程dev分支最新代码 git pull origin dev # 创建并切换到功能分支 git checkout -b feature/user_login # 开发完成后提交代码 git add . git commit -m "feat: 完成用户登录功能开发" # 推送功能分支到远程 git push origin feature/user_login
六、冲突处理与辅助配置
团队协作过程中难免出现代码冲突,需要掌握基本的冲突处理方法。
当拉取代码或者合并分支出现冲突时,Git会提示冲突的文件,打开文件会看到类似以下的冲突标记:
<<<<<<< HEAD 当前分支的代码内容 ======= 合并分支的代码内容 >>>>>>> feature/user_login
手动修改文件保留需要的内容,删除冲突标记后,执行以下命令完成冲突解决:
git add 冲突文件名 git commit -m "fix: 解决代码合并冲突"
另外可以配置Git的别名提升操作效率,比如配置git st代替git status:
git config --global alias.st status git config --global alias.co checkout git config --global alias.cm commit git config --global alias.br branch