当前位置: 首页 > news >正文

git 多用户管理 跨平台

一、概述

​ 相信大家都遇到过这样的问题,实际开发中需要在一台PC上用到 不同平台git的账号甚至同一个平台的多个账号(比如本人gitee 、字自己在nas上搭建的gitea ,另外还有github账号,有时还会有公司的代码仓库,账号就更多了)。

​ 于是就有了这次的笔记,多用户管理,即在同一台设备上,使用 git管理来自 GiteeGiteaGithub 的不同仓库,各自使用不同的身份(SSH 密钥或账号),互不冲突。

二、方案

简单整理一下要求:

  1. 一键操作切换用户配置,不希望额外单步配置 用户名 邮件 密码 等一系列繁琐操作
  2. 配置管理简单,不能有用户配置冲突
  3. 扩展复用性需要较强,适合随时添加用户
  4. 跨平台使用,Linux / Termux(android) / Git Bash(windows)

那么目前可以想到的最优方案就是为每个用户创建不同的空目录并单独局部配置,项目结构如下:

/project_git/
├── gitee/
│   ├── user_a
│   │   ├── env.sh
│   │   ├── .gitconfig
│   │   ├── .ssh/
│   │   │   ├── config
│   │   │   ├── id_rsa
│   │   │   ├── id_rsa.pub
│   │   └── project/
│   ├── user_b
│   │   ├── ...
│   ├── ...
├── gitea/
│   ├── user_a
│   │   ├── env.sh
│   │   ├── .gitconfig
│   │   ├── .ssh/
│   │   │   ├── config
│   │   │   ├── id_rsa
│   │   │   ├── id_rsa.pub
│   │   └── project/
│   ├── user_b
│   │   ├── ...
│   ├── ...
├── ...

三、具体步骤

1、创建目录并生成密钥

# 创建目录结构
mkdir -p /project_git/gitee/.ssh
mkdir -p /project_git/gitee/project# 为Gitee创建SSH密钥,建议gitee@example.com替换为实际邮箱(即使错误也不影响,仅用于管理区分)
# 注意检查 .ssh/id_rsa 权限需要为 600
ssh-keygen -t rsa -b 4096 -f /project_git/gitee/.ssh/id_rsa -C "gitee@example.com"

2、配置 Git 身份信息

  • 为每一个用户环境新建/gitee/.gitconfig文件

    [user]name = user_nameemail = gitee@example.com
    
  • 注意:

    • gitee_user 改成实际用户名。
    • gitee@example.com 改成实际邮件名。

3、配置 SSH 文件

  • /project_git/gitee/.ssh/config

    Host giteeHostName gitee.example.comPort 23User gitIdentityFile /project-git/gitee/.ssh/id_rsaIdentitiesOnly yes
    
  • 注意:

    • gitee 自定义
    • gitee.example.com 改为实际服务器地址或 IP
    • 23 改为实际服务器端口(如果是服务器域名则不需要)。
    • IdentityFile 需要绝对地址(使用realpath ../.ssh/id_rsa获取绝对地址)

4、写入环境启动脚本

  1. 为每一个用户环境新建env.sh文件

    #!/bin/bashENV_DIR="$(dirname "$(realpath "$0")")"
    export GIT_CONFIG_GLOBAL="$ENV_DIR/.gitconfig"
    export GIT_SSH_COMMAND="ssh -F $ENV_DIR/.ssh/config"echo "✅ 已启用 GIT 环境"
    echo "👤 用户名: $(git config --global user.name)"
    echo "📧 邮箱: $(git config --global user.email)"
    echo "📁 工作目录: $ENV_DIR/project"cd "$ENV_DIR/project" || exit
    bash
    
  2. 赋权

    chmod +x env.sh
    

5、使用方法

# 配置环境
./env.sh# 测试验证环境配置,正确返回结果包含 “Hi there, user_name! You've successfully ...”
ssh -F ../.ssh/config -T gitee# gitee环境拉取或推送代码
git clone gitee:user_name/project.git

需要先将生成的密钥添加到对应的服务器(具体的步骤可以参考 gitee 使用笔记 —基础篇),

然后执行./env.sh后自动进入project文件夹,进入后就是处于当前账号绑定的 shell 环境下了,所有 Git 操作都使用它的身份和 SSH 密钥。

6、补充说明

配置用途
.gitconfig设置该身份的 user.nameuser.email
.ssh/config设置连接仓库所用的私钥
GIT_CONFIG_GLOBAL让 Git 使用局部配置替代默认全局配置
GIT_SSH_COMMAND强制 Git 使用该环境下的 SSH 配置
env.sh便捷脚本,加载配置 + 进入项目目录

四、极简超强方式

下载链接:(多用户管理一键执行应用git-env.bin)[https://download.csdn.net/download/Primary_rookie/91161710]

当前制作了适用于Linux / Termux(android)的一键执行应用git-env.bin,操作如下:

work@work:~/user_project/project-gitee$ ls
git-env.bin
work@work:~/user_project/project-gitee$ sudo chmod +x git-env.bin 
[sudo] work 的密码: 
work@work:~/user_project/project-gitee$ ./git-env.bin 
▶ Git 用户姓名 (user.name): aaa
▶ Git 用户邮箱 (user.email): aaa@aaaa.com
▶ SSH 主机别名(如 gitee/gitea/github): 👉 gitee
▶ 服务器域名或 IP (HostName): gitee.com
▶ SSH 端口[回车默认22]: 
📁 已创建目录: /home/work/user_project/project-gitee/{.ssh,project}
✅ 生成 .gitconfig
✅ 生成 SSH 密钥: .ssh/id_rsa(.pub)
✅ 生成 .ssh/config
✅ 生成 env.sh🎉 全部完成!接下来 3 步即可开始使用:
1) 打开远程平台(如 Gitee)> 个人设置 > SSH 公钥 > 添加:
----------------------------------------------------------------
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCfMVj/w6kVMDh2ox6Ee2NtgtQkXTarllo2Rx/pb4/8NZY5gR/jmeXcOBH9ByEbFwXAzZZp8NpomZvu4QhC6ogFN4jsPdxXvJbVigIJB0U+yocRE8St+FkHYkY1NIkqDyQhu+7oGyG7IkV469Q7wW7Z64DDCD7ZIkB2Qc2qKvK/212XX1HWAjtNGTUMxTfbLHf4fnYABSOY/MBC+/3qdvo/2xo8CYhsuuH1YvVL3UD0nAT1nywR1fAdUHaIK8G3kps7+hbAvBVrLdRr51scdj0RWTqKDkGt6MDgj/U2h3V1cW8gSeRuMzSyjiu5ojXG120iY0LJS4iUrAhlr/WhWVMYiHb71/xF7bFjOcbFWsIPE3PGwuDQNJZKbCVmT/0wFpdDw5dG9f3QkVzYktgupHRMmkM46QKX8wTTzbkqbOcPE5oEXs08OSU+kvOMfnye3uWKSMW4phPII2ebqMi3uXiGQyjNnds+QL4CSug+8gFGwoL1oqzQZkDJarcQsC+fRLbWdM9nqq2bYZ+YOBkx3IeowA4kg6HJLe8Qc31Og4JV4GfLqghJQwcV5h2juUuWsIDjoYGFNogIPb9vPGk1yFEKJpqlLmmyOpD+/3haTDv5XdiCzwhN4K0I6OT8ix58fs96ZL/K995DYQRuF+ERfqG/uLQMAETKrx7Q/h4IphHHvw== aaa@aaaa.com
----------------------------------------------------------------
2) 在本机运行:  ./env.sh将自动进入 project/ 并载入 Git 身份。
3) 在 project/ 里执行 git clone gitee:<user>/<repo>.git   即可。
work@work:~/user_project/project-gitee$ ls -a
.  ..  env.sh  .gitconfig  git-env.bin  project  .ssh
work@work:~/user_project/project-gitee$ ./env.sh 
✅ 启动 GIT 环境:Gitea
👤 用户名: aaa
📧 邮箱: aaa@aaaa.com
📁 工作目录: /home/work/user_project/project-gitee/project
🔧 当前操作: git pull
📝 自动提交模式: false🔍 正在扫描 Git 仓库...📋 执行摘要:
✅ 成功仓库: 0
❌ 失败仓库: 0
⏭️ 跳过非 Git 目录: 1- */🚀 操作完成,进入交互环境
work@work:~/user_project/project-gitee/project$ 
http://www.lqws.cn/news/526213.html

相关文章:

  • 远程玩3A大作要多少帧?ToDesk、向日葵、UU远程性能对决
  • mysql 安装vc++2013 没有权限问题。
  • 使用 DHTMLX Gantt 添加迷你地图:提升大型项目可视化与导航体验
  • 996引擎-假人系统
  • el-select封装下拉加载组件
  • 《量子计算对加密体系的降维打击:RSA2048在Shor算法下的生存时间预测》的终极解析,结合量子算法推演/后量子加密实战/蒙特卡洛预测模型
  • 编程语言与认知科学:构建理解机器与人类共同语言的桥梁
  • Rust 中的时间处理利器:chrono
  • AI是什么有什么用
  • FFmpeg音视频同步思路
  • 游戏App前端安全加固:利用AI云防护技术抵御恶意攻击
  • 《市梦录》这款游戏的完整商业计划书
  • 16.1 Python应用容器化终极指南:Dockerfile多阶段构建与安全优化实战
  • 《网络攻防技术》《数据分析与挖掘》《网络体系结构与安全防护》这三个研究领域就业如何?
  • MIT 6.824学习心得(1) 浅谈分布式系统概论与MapReduce
  • jina-embeddings-v4
  • Oracle 角色与自定义角色深度解析
  • vllm加载多个Lora部署
  • Linux系统(信号篇):信号的产生
  • 重塑音视频叙事:Premiere文本剪辑与Podcast AI降噪的革命性工作流
  • dify小用
  • 操作系统面试知识点(1):操作系统基础
  • unibest+uniapp+vue3+TS+Wot UI分包
  • uniapp页面间通信uni.$on与通过uni.navigateTo中eventChannal的方式的区别
  • 【重点】【DP】174.地下城游戏
  • HTML表单元素
  • Webpack 核心概念
  • 数的范围(连续数字边界)
  • 大语言模型(LLM)初探:核心概念与应用场景
  • 【深度学习新浪潮】什么是上下文工程?