页面“Git fetch和git pull的区别”与“多个git账号之间的切换 多个git账号指定不同的key”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
docker>Evan
(导入1个版本)
 
docker>Evan
(导入1个版本)
 
第1行: 第1行:
  
 +
多个git账号之间的切换 多个git账号指定不同的key
  
 +
ssh可以通过-i使用指定的私钥文件,如:
  
 +
ssh -i ~/mykey_rsa username@host
  
== git fetch ==
+
但是走ssh协议的git却没有类似的参数可以指定,只能是使用用户默认的ssh私钥。
  
相当于是从远程获取最新版本到本地,不会自动merge(合并)
+
而git 一般也是用key认证的,如果你来我一样的情形 ,怎么办 ? 先假设我有两个账号,一个是github上的,一个是公司gitlab上面的。先为不同的账号生成不同的ssh-key
<pre>
 
git fetch origin master
 
git log -p master..origin/master
 
git merge origin/master </pre>
 
  
以上命令的含义:<br/> 首先从远程的origin的master主分支下载最新的版本到origin/master分支上<br/> 然后比较本地的master分支和origin/master分支的差别,最后进行合并
+
ssh-keygen  -t rsa -f ~/.ssh/id_rsa_work -C [email protected]
  
上述过程其实可以用以下更清晰的方式来进行:
+
然后根据提示连续回车即可在~/.ssh目录下得到id_rsa_work和id_rsa_work.pub两个文件,id_rsa_work.pub文件里存放的就是我们要使用的key
<pre>git fetch origin master:tmp
 
git diff tmp
 
git merge tmp</pre>
 
  
&nbsp;从远程获取最新的版本到本地的test分支上<br/> &nbsp;之后再进行比较合并
+
ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C [email protected]
  
&nbsp;
+
然后根据提示连续回车即可在~/.ssh目录下得到id_rsa_github和id_rsa_github.pub两个文件,id_rsa_gthub.pub文件里存放的就是我们要使用的key
 +
 
 +
编辑 ~/.ssh/config,设定不同的git 服务器对应不同的key
 +
 
 +
在本机添加
 +
<pre>cat ~/.ssh/config
 +
 
 +
Host github.com
 +
  hostname github.com
 +
  User git
 +
  #port 22
 +
  IdentityFile /home/evan/.ssh/id_rsa_github
 +
  IdentitiesOnly yes
 +
 
 +
</pre>
 +
 
 +
#建一个gitlab别名,新建的帐号使用这个别名做克隆和更新
 +
<pre>Host 192.168.11.11
 +
  HostName 192.168.11.11
 +
  User work
 +
  IdentityFile ~/.ssh/id_rsa_work
 +
 
 +
</pre>
 +
 
 +
打开 [https://github.com/settings/ssh https://github.com/settings/ssh] 把pub key (id_rsa_github.pub) 添加一下
 +
 
 +
 +
 
 +
看到 You’ve successfully 就表示OK了
 +
 
 +
多个git账号之间的切换 也可以多个github 帐号 [http://memoryboxes.github.io/blog/2014/12/07/duo-ge-gitzhang-hao-zhi-jian-de-qie-huan/ http://memoryboxes.github.io/blog/2014/12/07/duo-ge-gitzhang-hao-zhi-jian-de-qie-huan/]
 +
 
 +
命令行下的git配置问题: 多个sshkey, 多个用户身份, git alias [http://www.liaohuqiu.net/cn/posts/git-setup-and-setting/ http://www.liaohuqiu.net/cn/posts/git-setup-and-setting/]
 +
 
 +
Git Config 命令查看配置文件 [https://cnbin.github.io/blog/2015/06/19/git-config-ming-ling-cha-kan-pei-zhi-wen-jian/ https://cnbin.github.io/blog/2015/06/19/git-config-ming-ling-cha-kan-pei-zhi-wen-jian/]
  
&nbsp;
+
ssh-keygen -t rsa -f ~/.ssh/id_rsa_evan -C [email protected]
  
[[Category:Git]]
+
[https://www.linuxchina.net/?p=3393 https://www.linuxchina.net/?p=3393]
  
== git pull==
+
&nbsp;
相当于是从远程获取最新版本并merge到本地<br/> git pull origin master
 
  
上述命令其实相当于git fetch 和 git merge<br/> 在实际使用中,git fetch更安全一些<br/> 因为在merge前,我们可以查看更新情况,然后再决定是否合并,但是git hook 用 git pull多一些&nbsp;
+
&nbsp;
  
&nbsp;http://www.tech126.com/git-fetch-pull/&nbsp;
+
[[Category:git]]

2017年1月23日 (一) 09:56的版本

多个git账号之间的切换 多个git账号指定不同的key

ssh可以通过-i使用指定的私钥文件,如:

ssh -i ~/mykey_rsa username@host

但是走ssh协议的git却没有类似的参数可以指定,只能是使用用户默认的ssh私钥。

而git 一般也是用key认证的,如果你来我一样的情形 ,怎么办 ? 先假设我有两个账号,一个是github上的,一个是公司gitlab上面的。先为不同的账号生成不同的ssh-key

ssh-keygen  -t rsa -f ~/.ssh/id_rsa_work -C [email protected]

然后根据提示连续回车即可在~/.ssh目录下得到id_rsa_work和id_rsa_work.pub两个文件,id_rsa_work.pub文件里存放的就是我们要使用的key

ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C [email protected]

然后根据提示连续回车即可在~/.ssh目录下得到id_rsa_github和id_rsa_github.pub两个文件,id_rsa_gthub.pub文件里存放的就是我们要使用的key

编辑 ~/.ssh/config,设定不同的git 服务器对应不同的key

在本机添加

cat ~/.ssh/config

Host github.com
  hostname github.com
  User git
  #port 22
  IdentityFile /home/evan/.ssh/id_rsa_github
  IdentitiesOnly yes
  
  1. 建一个gitlab别名,新建的帐号使用这个别名做克隆和更新
Host 192.168.11.11
  HostName 192.168.11.11
  User work
  IdentityFile ~/.ssh/id_rsa_work

打开 https://github.com/settings/ssh 把pub key (id_rsa_github.pub) 添加一下

ssh -vT [email protected]

看到 You’ve successfully 就表示OK了

多个git账号之间的切换 也可以多个github 帐号 http://memoryboxes.github.io/blog/2014/12/07/duo-ge-gitzhang-hao-zhi-jian-de-qie-huan/

命令行下的git配置问题: 多个sshkey, 多个用户身份, git alias http://www.liaohuqiu.net/cn/posts/git-setup-and-setting/

Git Config 命令查看配置文件 https://cnbin.github.io/blog/2015/06/19/git-config-ming-ling-cha-kan-pei-zhi-wen-jian/

ssh-keygen -t rsa -f ~/.ssh/id_rsa_evan -C [email protected]

https://www.linuxchina.net/?p=3393