Git同时使用Gitee和Github并设置代理
<h1 id="git同时使用gitee和github并设置代理">Git同时使用Gitee和Github并设置代理</h1><h5 id="linux中git设置方法及proxy设置分别为gitee-和-github建立两个密钥不同账号配置不同的密钥为github和gitee仓库配置不同密钥">Linux中Git设置方法及Proxy设置;分别为Gitee 和 Github建立两个密钥,不同账号配置不同的密钥,为github和gitee仓库配置不同密钥。</h5>
<hr>
<h3 id="1清除-git-的全局设置针对已安装-git">1.清除 git 的全局设置(针对已安装 git)</h3>
<h6 id="新安装-git-请跳过">新安装 git 请跳过。</h6>
<p>若之前对 git 设置过全局的 <code>user.name</code> 和 <code>user.email</code>。<br>类似 (用 <code>git config --global --list</code> 进行查看你是否设置)</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">$ git config <span class="pun">--<span class="kwd">global<span class="pln"> user<span class="pun">.<span class="pln">name <span class="str">"你的名字"<span class="pln">
$ git config <span class="pun">--<span class="kwd">global<span class="pln"> user<span class="pun">.<span class="pln">email<span class="str">"你的邮箱"</span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>必须删除该设置</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">$ git config <span class="pun">--<span class="kwd">global<span class="pln"> <span class="pun">--<span class="pln">unset user<span class="pun">.<span class="pln">name <span class="str">"你的名字"<span class="pln">
$ git config <span class="pun">--<span class="kwd">global<span class="pln"> <span class="pun">--<span class="pln">unset user<span class="pun">.<span class="pln">email <span class="str">"你的邮箱"</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h3 id="2生成新的-ssh-keys">2.生成新的 SSH keys</h3>
<h4 id="1github-的钥匙">1)GitHub 的钥匙</h4>
<p>指定文件路径,方便后面操作:<code>~/.ssh/id_rsa.gitlab</code></p>
<pre class="prettyprint prettyprinted"><code><span class="pln">ssh<span class="pun">-<span class="pln">keygen <span class="pun">-<span class="pln">t rsa <span class="pun">-<span class="pln">f <span class="pun">~<span class="str">/.ssh/<span class="pln">id_rsa<span class="pun">.<span class="pln">github <span class="pun">-<span class="pln">C <span class="str">"xx@qq.com"</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>直接回车3下,什么也不要输入,就是默认没有密码。<br>注意 github 和 gitee 的文件名是不同的。</p>
<h4 id="2gitee-的钥匙">2)Gitee 的钥匙</h4>
<pre class="prettyprint prettyprinted"><code><span class="pln">ssh<span class="pun">-<span class="pln">keygen <span class="pun">-<span class="pln">t rsa <span class="pun">-<span class="pln">f <span class="pun">~<span class="str">/.ssh/<span class="pln">id_rsa<span class="pun">.<span class="pln">gitee <span class="pun">-<span class="pln">C <span class="str">"lx@qq.com"</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h4 id="3完成后会在ssh--目录下生成以下文件">3)完成后会在~/.ssh / 目录下生成以下文件</h4>
<pre class="prettyprint prettyprinted"><code><span class="pun">*<span class="pln"> id\_rsa<span class="pun">.<span class="pln">github
<span class="pun">*<span class="pln"> id\_rsa<span class="pun">.<span class="pln">github<span class="pun">.<span class="pln">pub
<span class="pun">*<span class="pln"> id\_rsa<span class="pun">.<span class="pln">gitee
<span class="pun">*<span class="pln"> id\_rsa<span class="pun">.<span class="pln">gitee<span class="pun">.<span class="pln">pub</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h3 id="3添加识别ssh-keys新的私钥并添加到ssh-agent">3.添加识别SSH keys新的私钥,并添加到ssh-agent</h3>
<p>默认只读取 <code>id_rsa</code> ,为了让 SSH 识别新的私钥,需要将新的私钥加入到 ssh-agent 中</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">$ ssh<span class="pun">-<span class="pln">agent bash
$ ssh<span class="pun">-<span class="kwd">add<span class="pln"> <span class="pun">~<span class="str">/.ssh/<span class="pln">id_rsa<span class="pun">.<span class="pln">github
$ ssh<span class="pun">-<span class="kwd">add<span class="pln"> <span class="pun">~<span class="str">/.ssh/<span class="pln">id_rsa<span class="pun">.<span class="pln">gitee</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h3 id="4-多个账号必须配置-config-文件重点">4. 多个账号必须配置 config 文件(重点)</h3>
<p>若无 <code>config</code> 文件,则需创建 config 文件(注意config文件无后缀名)</p>
<h4 id="1创建config文件">1)创建config文件</h4>
<p>在 <code>.ssh/</code> 目录下新建一个名为 config 的文件。 用文本编辑器打开,并进行编辑,或执行下面命令。</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">$ touch <span class="pun">~<span class="str">/.ssh/<span class="pln">config</span></span></span></span></code></pre>
<h4 id="2config-里需要填的内容">2)config 里需要填的内容</h4>
<p>可以不缩进,但是为了方便看,建议缩进。</p>
<p>最简配置</p>
<pre class="prettyprint prettyprinted"><code><span class="com">#github<span class="pln">
<span class="typ">Host<span class="pln"> github<span class="pun">.<span class="pln">com
<span class="typ">HostName<span class="pln"> github<span class="pun">.<span class="pln">com
<span class="typ">IdentityFile<span class="pln"> <span class="pun">~<span class="str">/.ssh/<span class="pln">id_rsa<span class="pun">.<span class="pln">github</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>完整配置</p>
<pre class="prettyprint prettyprinted"><code><span class="com">#Default gitHub user Self<span class="pln">
<span class="typ">Host<span class="pln"> github<span class="pun">.<span class="pln">com
<span class="typ">HostName<span class="pln"> github<span class="pun">.<span class="pln">com
<span class="typ">User<span class="pln"> your@email
<span class="typ">PreferredAuthentications<span class="pln"> publickey
<span class="typ">IdentityFile<span class="pln"> <span class="pun">~<span class="str">/.ssh/<span class="pln">id_rsa<span class="pun">.<span class="pln">github
<span class="typ">AddKeysToAgent<span class="pln"> yes
<span class="com">#Add gitee user<span class="pln">
<span class="typ">Host<span class="pln"> gitee<span class="pun">.<span class="pln">com
<span class="typ">HostName<span class="pln"> gitee<span class="pun">.<span class="pln">com
<span class="typ">User<span class="pln"> your@email
<span class="typ">PreferredAuthentications<span class="pln"> publickey
<span class="typ">IdentityFile<span class="pln"> <span class="pun">~<span class="str">/.ssh/<span class="pln">id_rsa<span class="pun">.<span class="pln">gitee
<span class="typ">AddKeysToAgent<span class="pln"> yes</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>下面对上述配置文件中使用到的配置字段信息进行简单解释:</p>
<pre class="prettyprint prettyprinted"><code><span class="typ">Host<span class="pln">
<span class="pun">它涵盖了下面一个段的配置,我们可以通过他来替代将要连接的服务器地址。<span class="pln">
<span class="pun">这里可以使用任意字段或通配符。<span class="pln">
<span class="pun">当<span class="pln">ssh<span class="pun">的时候如果服务器地址能匹配上这里<span class="typ">Host<span class="pun">指定的值,则<span class="typ">Host<span class="pun">下面指定的<span class="typ">HostName<span class="pun">将被作为最终的服务器地址使用,并且将使用该<span class="typ">Host<span class="pun">字段下面配置的所有自定义配置来覆盖默认的/<span class="pln">etc<span class="pun">/<span class="pln">ssh<span class="pun">/<span class="pln">ssh_config<span class="pun">配置信息。<span class="pln">
<span class="typ">Port<span class="pln">
<span class="pun">自定义的端口。默认为<span class="lit">22<span class="pun">,可不配置<span class="pln">
<span class="typ">User<span class="pln">
<span class="pun">自定义的用户名,默认为<span class="pln">git<span class="pun">,设置为你的注册邮箱,也可不配置,不写邮箱,每次都报<span class="pln">please tell who you are<span class="pun">!<span class="pln">
<span class="typ">HostName<span class="pln">
<span class="pun">真正连接的服务器地址<span class="pln">
<span class="typ">PreferredAuthentications<span class="pln">
<span class="pun">指定优先使用哪种方式验证,支持密码和秘钥验证方式<span class="pln">
<span class="typ">IdentityFile<span class="pln">
<span class="pun">指定本次连接使用的密钥文件<span class="pln">
<span class="typ">AddKeysToAgent<span class="pln"> yes
<span class="pun">加载到<span class="pln"> ssh<span class="pun">-<span class="pln">agent<span class="pun">,等同于<span class="pln">$ ssh<span class="pun">-<span class="kwd">add<span class="pln"> <span class="pun">~<span class="str">/.ssh/<span class="pln">id_rsa<span class="pun">.<span class="pln">github</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h3 id="5在-github-和-gitee-网站添加-ssh">5.在 github 和 gitee 网站添加 ssh</h3>
<h4 id="1-github">1) Github</h4>
<p>Github:添加SSH公钥直达地址:https://github.com/settings/keys</p>
<p>具体过程如下:</p>
<h5 id="1-登录-github">(1) 登录 Github</h5>
<h5 id="2-点击右上方的头像点击-settings">(2) 点击右上方的头像,点击 <code>settings</code></h5>
<h5 id="3-选择-ssh-key">(3) 选择 <code>SSH key</code></h5>
<h5 id="4-点击-add-ssh-key">(4) 点击 <code>Add SSH key</code></h5>
<p>在出现的界面中填写 SSH key 的名称,填一个你自己喜欢的名称即可。<br>将上面拷贝的 <code>~/.ssh/id_rsa.xxx.pub</code> 文件内容粘帖到 key 一栏,在点击 “add key” 按钮就可以了。</p>
<p>添加过程 github 会提示你输入一次你的 github 密码 ,确认后即添加完毕。</p>
<h4 id="2-gitee-码云">2) Gitee 码云</h4>
<p>码云:添加SSH公钥直达地址:https://gitee.com/profile/sshkeys</p>
<p>具体过程如下:</p>
<h5 id="1-登录-gitee">(1) 登录 Gitee</h5>
<h5 id="2-点击右上方的头像点击-设置">(2) 点击右上方的头像,点击 <code>设置</code></h5>
<h5 id="3-后续步骤如-github">(3) 后续步骤如 Github</h5>
<p>添加过程 码云 会提示你输入一次你的 Gitee 密码 ,确认后即添加完毕。</p>
<h3 id="6测试是否连接成功">6.测试是否连接成功</h3>
<p>由于每个托管商的仓库都有唯一的后缀,比如 Github 的是 git@github.com:*。</p>
<p>所以可以这样测试:</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">ssh <span class="pun">-<span class="pln">T git@github<span class="pun">.<span class="pln">com</span></span></span></span></span></code></pre>
<p>而 gitlab 的可以这样测试:</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">ssh <span class="pun">-<span class="pln">T git@gitee<span class="pun">.<span class="pln">com</span></span></span></span></span></code></pre>
<p>如果能看到一些 Welcome 信息,说明就是 OK 的了。</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">$ ssh <span class="pun">-<span class="pln">T git@github<span class="pun">.<span class="pln">com
<span class="typ">Warning<span class="pun">:<span class="pln"> <span class="typ">Permanently<span class="pln"> added the RSA host key <span class="kwd">for<span class="pln"> IP address <span class="str">'13.250.177.223'<span class="pln"> to the list <span class="kwd">of<span class="pln"> known hosts<span class="pun">.<span class="pln">
<span class="typ">Hi<span class="pln"> dragon<span class="pun">!<span class="pln"> <span class="typ">You<span class="str">'ve successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@gitee.com
The authenticity of host '<span class="pln">gitee<span class="pun">.<span class="pln">com <span class="pun">(<span class="lit">116.211<span class="pun">.<span class="lit">167.14<span class="pun">)<span class="str">' can'<span class="pln">t be established<span class="pun">.<span class="pln">
ECDSA key fingerprint <span class="kwd">is<span class="pln"> SHA256<span class="pun">:<span class="pln">FQGC9Kn<span class="pun">/<span class="pln">eye1W8icdBgrp<span class="pun">+<span class="typ">KkGYoFgbVr17bmjeyc<span class="pun">.<span class="pln">
<span class="typ">Are<span class="pln"> you sure you want to <span class="kwd">continue<span class="pln"> connecting <span class="pun">(<span class="pln">yes<span class="pun">/<span class="kwd">no<span class="pun">)?<span class="pln"> yes
<span class="typ">Warning<span class="pun">:<span class="pln"> <span class="typ">Permanently<span class="pln"> added <span class="str">'gitee.com,116.211.167.14'<span class="pln"> <span class="pun">(<span class="pln">ECDSA<span class="pun">)<span class="pln"> to the list <span class="kwd">of<span class="pln"> known hosts<span class="pun">.<span class="pln">
<span class="typ">Hi<span class="pln"> <span class="pun">我是<span class="pln">x<span class="pun">!<span class="pln"> <span class="typ">You<span class="str">'ve successfully authenticated, but GITEE.COM does not provide shell access.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>结果如果出现这个就代表成功:</p>
<pre class="prettyprint prettyprinted"><code><span class="pun">*<span class="pln"> <span class="typ">GitHub<span class="pln"> <span class="pun">-><span class="pln"> successfully
<span class="pun">*<span class="pln"> <span class="typ">GitLab<span class="pln"> <span class="pun">-><span class="pln"> <span class="typ">Welcome<span class="pln"> to <span class="typ">GitLab<span class="pln">
<span class="pun">*<span class="pln"> <span class="typ">Gitee<span class="pln"> <span class="pun">-><span class="pln"> successfully</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>测试 clone 项目</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">$ git clone git@gitlab<span class="pun">.<span class="pln">com<span class="pun">:<span class="pln">d<span class="pun">-<span class="pln">d<span class="pun">-<span class="pln">u<span class="pun">/<span class="pln">java<span class="pun">-<span class="pln">xxx<span class="pun">.<span class="pln">git
<span class="typ">Cloning<span class="pln"> <span class="kwd">into<span class="pln"> <span class="str">'java-basic'<span class="pun">...<span class="pln">
remote<span class="pun">:<span class="pln"> <span class="typ">Enumerating<span class="pln"> objects<span class="pun">:<span class="pln"> <span class="lit">3<span class="pun">,<span class="pln"> <span class="kwd">done<span class="pun">.<span class="pln">
remote<span class="pun">:<span class="pln"> <span class="typ">Counting<span class="pln"> objects<span class="pun">:<span class="pln"> <span class="lit">100<span class="pun">%<span class="pln"> <span class="pun">(<span class="lit">3<span class="pun">/<span class="lit">3<span class="pun">),<span class="pln"> <span class="kwd">done<span class="pun">.<span class="pln">
remote<span class="pun">:<span class="pln"> <span class="typ">Total<span class="pln"> <span class="lit">3<span class="pln"> <span class="pun">(<span class="pln">delta <span class="lit">0<span class="pun">),<span class="pln"> reused <span class="lit">0<span class="pln"> <span class="pun">(<span class="pln">delta <span class="lit">0<span class="pun">)<span class="pln">
<span class="typ">Receiving<span class="pln"> objects<span class="pun">:<span class="pln"> <span class="lit">100<span class="pun">%<span class="pln"> <span class="pun">(<span class="lit">3<span class="pun">/<span class="lit">3<span class="pun">),<span class="pln"> <span class="kwd">done<span class="pun">.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h3 id="7操作过程出现的问题或报错">7.操作过程出现的问题或报错</h3>
<p><code>tilde\_expand\_filename: No such user</code></p>
<p>检查是否成功的时候,报错:</p>
<p><code>tilde_expand_filename: No such user .</code></p>
<p>解决方法:</p>
<p>此问题是因为 <code>写错文件路径</code> 或者 <code>大小写有误</code> ,删除重新配置,或者直接复制我的改好粘贴进去。</p>
<h3 id="8git设置代理">8.GIT设置代理</h3>
<p>如果使用 socks5,本地 ip 和端口是 127.0.0.1:1080</p>
<h4 id="1仅设置github代理">1)仅设置github代理:</h4>
<p>这个只设置了github的git服务走代理通道,不会对国内仓库gitee使用代理。</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">git config <span class="pun">--<span class="kwd">global<span class="pln"> http<span class="pun">.<span class="pln">https<span class="pun">:<span class="com">//github.com.proxy socks5://127.0.0.1:1080<span class="pln">
git config <span class="pun">--<span class="kwd">global<span class="pln"> https<span class="pun">.<span class="pln">https<span class="pun">:<span class="com">//github.com.proxy socks5://127.0.0.1:1080<span class="pln">
<span class="com">#取消设置的代理<span class="pln">
git config <span class="pun">--<span class="kwd">global<span class="pln"> <span class="pun">--<span class="pln">unset http<span class="pun">.<span class="pln">https<span class="pun">:<span class="com">//github.com.proxy<span class="pln">
git config <span class="pun">--<span class="kwd">global<span class="pln"> <span class="pun">--<span class="pln">unset https<span class="pun">.<span class="pln">https<span class="pun">:<span class="com">//github.com.proxy</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h4 id="2设置git全面代理">2)设置git全面代理:</h4>
<p>包括github、gitee等git服务全部走代理通道。</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">git config <span class="pun">--<span class="kwd">global<span class="pln"> http<span class="pun">.<span class="pln">proxy socks5<span class="pun">:<span class="com">//127.0.0.1:1080<span class="pln">
git config <span class="pun">--<span class="kwd">global<span class="pln"> https<span class="pun">.<span class="pln">proxy socks5<span class="pun">:<span class="com">//127.0.0.1:1080<span class="pln">
<span class="pun">取消设置的代理<span class="pln">
git config <span class="pun">--<span class="kwd">global<span class="pln"> <span class="pun">--<span class="pln">unset http<span class="pun">.<span class="pln">proxy
git config <span class="pun">--<span class="kwd">global<span class="pln"> <span class="pun">--<span class="pln">unset https<span class="pun">.<span class="pln">proxy</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h3 id="9git其他参数配置">9.git其他参数配置</h3>
<p>git 的配置文件在 <code>~/.gitconfig</code> ,仓库的配置文件是仓库内的 <code>.git/config</code> 。</p>
<p>可运行 <code>git help git config</code> 和 <code>man git</code> 查看更多帮助信息。</p>
<p>官方文档 <code>git-config Manual Pagee</code></p>
<h4 id="1部分设置命令">1)部分设置命令:</h4>
<p>加上 <code>--global</code> 参数,则设置内容对当前用户生效,不加 <code>--global</code> 则对当前仓库生效。</p>
<p>检查配置情况:<code>git config --list</code></p>
<p>设置默认编辑器,如 nano: <code>git config --global core.editor nano</code></p>
<p>设置默认对比工具,如 meld:<code>git config --global merge.tool meld</code></p>
<p>彩色输出:<code>git config --global color.ui true</code></p>
<p>中文文件名显示:<code>git config --global core.quotepath false</code>(避免中文显示成数字 )</p>
<p>显示历史记录时每个提交的信息显示一行: <code>git --global config format.pretty oneline</code></p>
<h4 id="2设置全局用户名和电子邮箱不建议">2)设置全局用户名和电子邮箱(不建议)</h4>
<pre class="prettyprint prettyprinted"><code><span class="pln">git config <span class="pun">--<span class="kwd">global<span class="pln"> user<span class="pun">.<span class="pln">name <span class="str">"your name"<span class="pln">
git config <span class="pun">--<span class="kwd">global<span class="pln"> user<span class="pun">.<span class="pln">email <span class="str">"email@example.com</span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h4 id="3协议更换">3)协议更换</h4>
<p>如 https 替代 git 协议</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">git config <span class="pun">--<span class="kwd">global<span class="pln"> url<span class="pun">.<span class="str">"https://"<span class="pun">.<span class="pln">insteadof <span class="str">"git://"<span class="pln">
git config <span class="pun">--<span class="kwd">global<span class="pln"> url<span class="pun">.<span class="str">"https://github.com/"<span class="pun">.<span class="pln">insteadof <span class="str">"git@github.com:"</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<p>4)设置命令别名:</p>
<pre class="prettyprint prettyprinted"><code><span class="pln">git config <span class="pun">--<span class="kwd">global<span class="pln"> <span class="kwd">alias<span class="pun">.<<span class="pln">another name<span class="pun">><span class="pln"> status</span></span></span></span></span></span></span></span></span></code></pre><br><br>
来源:https://www.cnblogs.com/lychee-wang/p/17084951.html
頁:
[1]