配置 GitHub 和 Gitee 共存环境
配置 GitHub 和 Gitee 共存环境
前言
-
Git支持多级配置,分别是
system(系统级)
、global(用户级)
、local(项目级)
和worktree(工作区级)
,其中常用的就用户级和项目级。 -
在Linux中,用户和项目级配置
-
global
~/.gitconfig
: 用户级配置文件;用户目录下的配置文件只适用于该用户。使用git config --global
读写的就是这个文件。
-
local
$RepoPath/.git/config
: 项目级配置文件;当前项目的 git仓库目录中的配置文件(也就是工作目录中的.git/config
文件),这里的配置仅仅针对当前项目有效。使用git config --local
或省略 local参数
,读写的就是这个文件。
note
:- 每一个级别的配置都会覆盖上层的相同配置,所以
.git/config
里的配置会覆盖/etc/gitconfig
中的同名变量。 $RepoPath
为某仓库的本地路径
-
-
在 Windows 系统上
- Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings$USER。此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。
准备
-
GitHub账号: https://github.com
-
Gitee账号: https://gitee.com
配置
-
清除 git 的全局设置 (没配置全局则跳过)
-
查看全局变量
git config --global --list
-
清除全局
user.name
和user.email
git config --global --unset user.name git config --global --unset user.email
-
-
生成并添加 SSH Keys
-
多环境配置config文件
-
在
~/.ssh/
目录下创建config文件touch ~/.ssh/config
-
配置config文件内容
-
最简配置
# GitHub Host github.com HostName github.com IdentityFile ~/.ssh/id_ed25519
-
完整配置
# Default gitHub user Self Host github.com HostName github.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/id_ed25519 AddKeysToAgent yes # Add gitee user Host gitee.com HostName gitee.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/id_ed25519 AddKeysToAgent yes
-
参数解释
-
Host
它涵盖了下面一个段的配置,我们可以通过他来替代将要连接的服务器地址。 这里可以使用任意字段或通配符。 当ssh的时候如果服务器地址能匹配上这里Host指定的值,则Host下面指定的HostName将被作为最终的服务器地址使用,并且将使用该Host字段下面配置的所有自定义配置来覆盖默认的/etc/ssh/ssh_config配置信息。
-
Port
自定义的端口。默认为22,可不配置
-
User
自定义的用户名,默认为git,也可不配置
-
HostName
真正连接的服务器地址
-
PreferredAuthentications
指定优先使用哪种方式验证,支持密码和秘钥验证方式
-
IdentityFile
指定本次连接使用的密钥文件
-
AddKeysToAgent yes
将私钥加载到 ssh-agent, 等同于 ssh-add ~/.ssh/id_ed25519
-
-
-
检验
-
clone 测试
-
GitHub 项目
$ git clone git@github.com:librarookie/spring-boot.git Cloning into 'spring-boot'... remote: Enumerating objects: 15, done. remote: Total 15 (delta 0), reused 0 (delta 0), pack-reused 15 Receiving objects: 100% (15/15), done.
-
Gitee 项目
$ git clone git@gitee.com:librarookie/test.git Cloning into 'test'... remote: Enumerating objects: 19, done. remote: Counting objects: 100% (19/19), done. remote: Compressing objects: 100% (9/9), done. remote: Total 19 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (19/19), done.
-
-
push 测试
-
commit
$ git commit -am "test" Author identity unknown *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'noname@G3.(none)')
-
原因是没有配置
user.name
和user.email
- 方案一: 设置全局变量的
user.name
和user.email
git config --global user.email "you@example.com" git config --global user.name "Your Name"
note: 此方案适合只使用GitHub 或Gitee(可以试试GitHub和Gitee使用同一个账号)
- 方案二: 设置项目库局部
user.name
和user.email
- 进入项目本地仓库
- 设置
user.name
和user.email
git config --local user.email "you@example.com" git config --local user.name "Your Name"
- 方案一: 设置全局变量的
-
-
commit 2
$ git commit -am "5555" [test 52bcd83] 5555 1 file changed, 1 insertion(+)
-
push
$ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Writing objects: 100% (3/3), 242 bytes | 242.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 remote: Powered by GITEE.COM [GNK-6.1] To gitee.com:librarookie/test.git a14d3de..52bcd83 test -> test
-
拓展
Ref