配置 GitHub 和 Gitee 共存环境
<h1 id="配置-github-和-gitee-共存环境">配置 GitHub 和 Gitee 共存环境</h1><br>
<br>
<h2 id="前言">前言</h2>
<ul>
<li>
<p>Git支持多级配置,分别是<code>system(系统级)</code>、<code>global(用户级)</code>、<code>local(项目级)</code>和<code>worktree(工作区级)</code>,其中常用的就用户级和项目级。</p>
</li>
<li>
<p>在Linux中,用户和项目级配置</p>
<ul>
<li>
<p><code>global</code></p>
<ul>
<li><code>~/.gitconfig</code>: 用户级配置文件;用户目录下的配置文件只适用于该用户。使用 <code>git config --global</code>读写的就是这个文件。</li>
</ul>
</li>
<li>
<p><code>local</code></p>
<ul>
<li><code>$RepoPath/.git/config</code>: 项目级配置文件;当前项目的 git仓库目录中的配置文件(也就是工作目录中的 <code>.git/config</code> 文件),这里的配置仅仅针对当前项目有效。使用 <code>git config --local</code>或 <code>省略 local参数</code>,读写的就是这个文件。</li>
</ul>
<p><code>note</code> :</p>
<ul>
<li>每一个级别的配置都会覆盖上层的相同配置,所以 <code>.git/config</code> 里的配置会覆盖 <code>/etc/gitconfig</code> 中的同名变量。</li>
<li><code>$RepoPath</code>为某仓库的本地路径</li>
</ul>
</li>
</ul>
</li>
<li>
<p>在 Windows 系统上</p>
<ul>
<li>Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings$USER。此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。</li>
</ul>
</li>
</ul>
<br>
<h2 id="准备">准备</h2>
<ol>
<li>
<p>git工具: https://git-scm.com/downloads</p>
</li>
<li>
<p>GitHub账号: https://github.com</p>
</li>
<li>
<p>Gitee账号: https://gitee.com</p>
</li>
</ol>
<br>
<h2 id="配置">配置</h2>
<ol>
<li>
<p>清除 git 的全局设置 (没配置全局则跳过)</p>
<ul>
<li>
<p>查看全局变量</p>
<pre><code class="language-py">git config --global --list
</code></pre>
</li>
<li>
<p>清除全局<code>user.name</code>和<code>user.email</code></p>
<pre><code class="language-py">git config --global --unset user.name
git config --global --unset user.email
</code></pre>
</li>
</ul>
</li>
<li>
<p>生成并添加 SSH Keys</p>
<ul>
<li>点此进入生成并添加 SSH Keys</li>
</ul>
</li>
<li>
<p>多环境配置config文件</p>
<ul>
<li>
<p>在<code>~/.ssh/</code>目录下创建config文件</p>
<blockquote>
<p>touch ~/.ssh/config</p>
</blockquote>
</li>
<li>
<p>配置config文件内容</p>
<ul>
<li>
<p>最简配置</p>
<pre><code class="language-py"># GitHub
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_ed25519
</code></pre>
</li>
<li>
<p>完整配置</p>
<pre><code class="language-py"># 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
</code></pre>
</li>
<li>
<p>参数解释</p>
<ul>
<li>
<p>Host</p>
<pre><code class="language-py">它涵盖了下面一个段的配置,我们可以通过他来替代将要连接的服务器地址。
这里可以使用任意字段或通配符。
当ssh的时候如果服务器地址能匹配上这里Host指定的值,则Host下面指定的HostName将被作为最终的服务器地址使用,并且将使用该Host字段下面配置的所有自定义配置来覆盖默认的/etc/ssh/ssh_config配置信息。
</code></pre>
</li>
<li>
<p>Port</p>
<pre><code class="language-py">自定义的端口。默认为22,可不配置
</code></pre>
</li>
<li>
<p>User</p>
<pre><code class="language-py">自定义的用户名,默认为git,也可不配置
</code></pre>
</li>
<li>
<p>HostName</p>
<pre><code class="language-py">真正连接的服务器地址
</code></pre>
</li>
<li>
<p>PreferredAuthentications</p>
<pre><code class="language-py">指定优先使用哪种方式验证,支持密码和秘钥验证方式
</code></pre>
</li>
<li>
<p>IdentityFile</p>
<pre><code class="language-py">指定本次连接使用的密钥文件
</code></pre>
</li>
<li>
<p>AddKeysToAgent yes</p>
<pre><code class="language-py">将私钥加载到 ssh-agent,
等同于 ssh-add ~/.ssh/id_ed25519
</code></pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ol>
<br>
<h2 id="检验">检验</h2>
<ol>
<li>
<p>clone 测试</p>
<ul>
<li>
<p>GitHub 项目</p>
<pre><code class="language-py">$ 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.
</code></pre>
</li>
<li>
<p>Gitee 项目</p>
<pre><code class="language-py">$ 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.
</code></pre>
</li>
</ul>
</li>
<li>
<p>push 测试</p>
<ul>
<li>
<p>commit</p>
<pre><code class="language-py">$ 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)')
</code></pre>
<ul>
<li>
<p>原因是没有配置 <code>user.name</code>和 <code>user.email</code></p>
<ul>
<li>方案一: 设置全局变量的 <code>user.name</code>和 <code>user.email</code></li>
</ul>
<pre><code class="language-py">git config --global user.email "you@example.com"
git config --global user.name "Your Name"
</code></pre>
<p>note: 此方案适合只使用GitHub 或Gitee(可以试试GitHub和Gitee使用同一个账号)</p>
<ul>
<li>方案二: 设置项目库局部 <code>user.name</code>和 <code>user.email</code>
<ol>
<li>进入项目本地仓库</li>
<li>设置 <code>user.name</code>和 <code>user.email</code></li>
</ol>
</li>
</ul>
<pre><code class="language-py">git config --local user.email "you@example.com"
git config --local user.name "Your Name"
</code></pre>
</li>
</ul>
</li>
<li>
<p>commit 2</p>
<pre><code class="language-py">$ git commit -am "5555"
5555
1 file changed, 1 insertion(+)
</code></pre>
</li>
<li>
<p>push</p>
<pre><code class="language-py">$ 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
To gitee.com:librarookie/test.git
a14d3de..52bcd83test -> test
</code></pre>
</li>
</ul>
</li>
</ol>
<h2 id="拓展">拓展</h2>
<ul>
<li>如何将 GitHub 项目导入码云?一步搞定!</li>
<li>git-config 配置多用户环境以及 includeIf用法</li>
</ul>
<br>
<br>
<p>Ref</p>
<ul>
<li>https://duter2016.github.io/2021/01/22/Git同时使用Gitee和Github并设置代理/</li>
<li>https://www.jianshu.com/p/68578d52470c</li>
</ul><br><br>
来源:https://www.cnblogs.com/librarookie/p/15390709.html
頁:
[1]