多个同平台 git 账号在同一台电脑上共存的解决方案
同一 git 代码托管平台的账号,在同一台电脑上共存的解决方案
- 项目地址:https://github.com/skiy/docker-git
同一 git 代码托管平台的账号,在同一台电脑上共存的解决方案
依赖环境
- Docker
- docker compose v2 (按教程方式二时需要此扩展)
文件
docker-compose.yaml
init.sh
.ssh/
文件说明
init.sh 文件
GIT_USER 和 GIT_EMAIL 改为对应的信息
#!/bin/sh
# 中科大
#sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
git config --global user.name "{GIT_USER}"
git config --global user.email "{GIT_EMAIL}"
git config --global init.defaultBranch main
docker-compose.yaml 文件
version: '3'
services:
git:
container_name: git-alpine
image: devcto/git:latest
volumes:
- ./init.sh:/app/init.sh
- ./.ssh:/root/.ssh
- /work_code:/srv
restart: unless-stopped
command: -D
image为基础镜像。即alpine镜像,该镜像比较小,最适合此项目。container_name为该容器名称。GIT_USER为 git 用户的账号GIT_EMAIL为 git 用户的邮箱- 文件
/app/init.sh为初始化命令脚本,可自行修改。 - 文件夹
./.ssh为该账号在平台的SSH 密钥。必须设置,否则删除该容器再重建后,会遗失相关密钥。 - 文件夹
/work_code为代码存放目录,即项目存放目录。多个项目比较分散的话,可自行在volumes添加。 restart为该容器重启的条件,防止意外终止。unless-stopped的意思为 “除非本人执行停止的操作”
使用说明
方式一
- 执行
docker run --rm --name git-alpine -itd \
-v $(pwd)/init:/app/init.sh
-v $(pwd)/.ssh:/root/.ssh
-v $(pwd)/work_code:/srv
devcto/git:latest
文件夹
/.ssh为该账号在平台的SSH 密钥。必须设置,否则删除该容器再重建后,会遗失相关密钥。若/.ssh目录未存在SSH 密钥,需要自行生成(注意:删除容器会自动丢失)。
- 初始化
docker exec -it git-alpine sh init.sh
- 进入容器,在对应的项目工程目录下执行相关的 git 命令行,即可。
docker exec -it git-alpine sh
方式二
-
首次使用需要执行
docker compose up -d。 -
在终端窗口下执行
docker exec -it git-alpine /bin/sh进入该容器。 -
首次进入容器都需要先执行
sh /app/init.sh安装依赖组件和配置信息。若./.ssh目录未存在SSH 密钥,则也需要自行生成。 -
在对应的项目工程目录下执行相关的 git 命令行,即可。