git多用户设置

 

github多用户

生成多个key, 如 user1, user2

ssh-keygen -t rsa -C user1 -f ~/.ssh/user1
ssh-keygen -t rsa -C user2 -f ~/.ssh/user2

上传 key 到分别的 github 账户

~/.ssh/config

Host user1
    HostName github.com
    IdentityFile ~/.ssh/user1

Host user2
    HostName github.com
    IdentityFile ~/.ssh/user2

克隆时使用, 使用@host区分用户

git clone git@user1:project
git clone git@user2:project

如果已经clone下来了, 进入项目修改remote地址

git remote origin set-url <url>

git多用户

通过目录区分, 推荐

参考includeIf, 示例

在2017年,git新发布的版本2.13.0包含了一个新的功能includeIf配置

git config --global user.name "FIRST_NAME LAST_NAME"
git config --global user.email "[email protected]"

如个人和公司区分开, 使用includeIf引入多个配置

注意结尾的/, 如果不加不会匹配子目录, 参考

# 通过以下配置来引入新的用户名和邮箱
[includeIf "gitdir:D:/project/company/"]
    path = C:/Users/Lenovo/.gitconfig-company

另一个配置文件C:/Users/Lenovo/.gitconfig-company

[user]
    name = zhangsan
    email = zs@compay.com

通过项目区分, 项目少, 临时设置

进入A项目

git config user.name "USER_A"
git config user.email "[email protected]"

进入B项目

git config user.name "USER_B"
git config user.email "[email protected]"

git批量删除远程分支

Delete multiple remote branches in git

git branch -r | awk -Forigin/ '/\/release/ {print $2}' | xargs -I {} git push origin :{}
# 命令解释
# awk -F 指定分隔符, /\release/, 只输出release开头的行
# xargs -I 指定占位符 {}
# git push origin :release-xxx 删除release-xxx分支

如果private key有密码, 可能需要一次次输入, 通过启动ssh-agent, ssh-add, 添加私钥输入密码, 避免每次都输入密码, 参考Adding your SSH key to the ssh-agent

git切换远程地址

切换远程地址, 把原来的远程分支推送到新的远程分支

# 从一个远程, 批量添加远程到另一个远程
git remote add 新的远程名 新的远程地址
# 原来的origin的所有分支
git push 新的远程名 --tags "refs/remotes/origin/*:refs/heads/*"
# 单独一条
git push 远程名 本地分支名:远程分支名

其他人员配置

git remote set-url origin 新的远程地址
git fetch --prune
git branch -a -vv

git代理设置

如果socks5不能用, 请改为socks5h

# 设置全局代理
git config --global http.proxy  socks5://127.0.0.1:10808
git config --global https.proxy  socks5://127.0.0.1:10808
# 清除代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy

# 设置github全局代理
git config --global http.https://github.com.proxy  socks5://127.0.0.1:10808
git config --global https.https://github.com.proxy  socks5://127.0.0.1:10808
# 清除代理设置
git config --global --unset http.https://github.com.proxy
git config --global --unset https.https://github.com.proxy

参考