近期这段时间使用github。有时在公司办公,想要用git提交代码到自己的github仓库,提交是显示的作者是自己在公司的账户。而不是自己的github账户。这就相当于提交到github的代码不是自己本人提交的,是其它人提交的。

如今的情况是这种:在公司我们也是使用git来管理代码。我们公司内部有自己的git仓库(B)。提交代码时用的账户就是公司的oa账号(A)。

而我自己有时候在家里做开发的时候。就是用自己注冊github账户(C)提交代码到自己账户下的github仓库(D)。

如今有时候在公司办公的时候。写一些demo或者好的代码时。想提交到自己的github账户(D)。因为用的是公司的电脑,提交到D时显示的username是A。

总结一下就是。怎样在同一台电脑使用不同的账号提交到同一个github仓库。这里我希望是用C账户提交到D仓库。而不是A账户提交到D仓库。

我查了两个链接资料:

1.怎样在同一台电脑上使用两个github账户:http://www.tuicool.com/articles/zqa6Rz

2.解决cygwin下的“Could not open a connection to your authentication agent.”:http://www.cnblogs.com/cheche/archive/2011/01/07/1918825.html

依据上面所说的我给自己的github账户配置了另外一个sshkey。用的是自己的私人邮箱生成的(之前已经在github上配置过了一个sshkey,用的是公司的邮箱)。

1:为工作账号生成SSH Key

$ ssh-keygen -t rsa -C "your-email-address"

#存储key的时候,不要覆盖现有的id_rsa。使用一个新的名字,比方id_rsa_work

2:把id_rsa_work.pub加到你的work账号上

3:把该key加到ssh agent上。因为不是使用默认的.ssh/id_rsa,所以你须要显示告诉ssh agent你的新key的位置

$ ssh-add ~/.ssh/id_rsa_work

# 能够通过ssh-add -l来确认结果

4:配置.ssh/config

$ vi .ssh/config

# 加上下面内容
#default github
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa Host github_work
HostName github.com
IdentityFile ~/.ssh/id_rsa_work

5:这种话,你就能够通过使用github.com别名github_work来明白说你要是使用id_rsa_work的SSH key来连接github,即使用工作账号进行操作。

#本地建库
$ git init
$ git commit -am "first commit' #push到github上去
$ git remote add origin git@github_work:xxxx/test.git
$ git push origin master

假设出现故障“Could
not open a connection to your authentication agent
”,须要须要ssh-agent启动bash。或者说把bash挂到ssh-agent以下。即运行以下两个命令:

 $ ssh-agent bash --login -i
 $ ssh-add

【ssh-agent介绍】

ssh-agent就是一个管理私钥的代理。受管理的私钥通过ssh-add来加入,所以ssh-agent的client都能够共享使用这些私钥。

优点1:不用反复输入password。

用 ssh-add 加入私钥时,假设私钥有password的话,照例会被要求输入一次password,在这之后ssh-agent可直接使用该私钥,无需再次password认证。

优点2:不用到处部署私钥

如果私钥分别能够登录同一内网的主机
A 和主机 B。出于一些原因,不能直接登录 B。能够通过在 A 上部署私钥或者设置 PortForwarding 登录 B,也能够转发认证代理连接在 A 上面使用ssh-agent私钥登录 B。

islue@localhost $ ssh -A HOST_A
islue@HOST_A $ ssh HOST_B
islue@HOST_B $

我的运行情况是这种:

运行完红色的三步之后,.ssh文件夹文件夹下的情况:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvS2luZ3Nvbl9XdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

把id_rsa_king4github.pub的sshkey加入到自己的github账户中:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvS2luZ3Nvbl9XdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

这里有两个ssh。一个在公司电脑用公司邮箱生成的。一个是在公司电脑用私人邮箱生成的。

接着继续操作:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvS2luZ3Nvbl9XdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

vi /c/Users/kxw/.ssh/config

Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa Host gitlab.tools.XXX.com
HostName gitlab.tools.XXX.com
IdentityFile ~/.ssh/id_rsa_XXX

这样假设我訪问时使用的是github.com,就是使用公司邮箱生成的ssh(E)訪问github。假设我使用github_king,即使用的是私人邮箱生成的ssh(F)。也就是我github账户注冊的邮箱。

情况也确实如此这样,这样去訪问我的github仓库使用的是不同的ssh。这样你也许会认为。假设使用ssh(F)訪问gitghub,那么提交代码时就是我的私人账户提交的。但是事实并非这种,提交之后显示的作者还是公司的账号,名称是kingson.wu(G),而不是我的私人账户名称kingson4wu(H)。

原因就是由于我设置的全局用户和邮箱都是公司的,这个配置在文件.gitconfig中:

打开之后:

平时在公司工作时都是用公司的账号提交,不太有必要改这里的配置。

所以假设要使用自己的私人账号提交代码的话。要又一次配置user和email(不要设置全局)。进入本地的某个git repository中,运行下面命令:

git config user.name "kingson4wu"

git config user.email "Kingson_Wu@163.com"



这样提交代码到自己的github仓库之后,显示的提交作者就是kingson4wu,即自己提交的。



如今有几个问题:

(1)假设使用私人邮箱生成的ssh(F)来訪问github,是不是能够不用运行命令git config user.email "Kingson_Wu@163.com"?

(2)假设使用公司邮箱生成的ssh(E)来訪问github,是不是假设运行

git config user.name "kingson4wu"

git config user.email "Kingson_Wu@163.com"

这两条命令,则提交代码时显示的名称是kingson4wu。并且是自己提交的?



    带着这几个问题我做了几个试验(各种情形),结论例如以下:

问题(1),提交代码之后显示的名称确实是kingson4wu,可是遗憾的是,名称尽管是kingson4wu,可是却显示是别人提交的。

原因还是由于全局的邮箱是公司的邮箱,我github账户注冊的是我的私人邮箱。所以(1)是不行的。

问题(2),提交代码之后显示的名称确实是kingson4wu。显示的居然是自己提交的。不是别人提交的。





    也许这时你会想到其它几种情况结果会是如何的,好吧。我都做了实验。终于的结论例如以下:

不管你是使用ssh(E),还是ssh(F)。事实上假设想要是自己私人的账户提交,都要又一次设置name和email,不同的仅仅是使用不同的ssh訪问github而已。

假设仅仅设置了name还是不行,提交之后名称尽管是对的,可是仍然显示是别人提交的。

想要看看是不是自己提交的。看看提交者是不是自己github的头像,或者是自己的今天的commit数有没有添加就可以。

终于的总结就是:

不用设置多个私人的ssh(F)。仅仅须要从github拉代码下来,进入git仓库,运行

git config user.name "kingson4wu"

git config user.email "Kingson_Wu@163.com"

这两条命令就可以。

怎样在同一台电脑使用不同的账号提交到同一个github仓库的更多相关文章

  1. 四步实现在一台电脑上使用多个github账号

    四步实现在一台电脑上同时使用多个GitHub账号 今天和大家聊一下如何在一台电脑上同时使用多个GitHub账号,通过以下四个步骤就可以实现,其中第二个步骤为了便于叙述分成了几个小步骤. 1. 取消全局 ...

  2. 一台电脑安装多个版本的jdk

    我们平时在做Java开发的时候,有时需要使用多个版本的jdk, 那么一台电脑上需要安装多个JDK了. 那一台电脑上可不可以同时安装多个版本的jdk呢? 答案是可以的! 但使用的时候,只能使用一个,不能 ...

  3. 【转载】 删除Win10“这台电脑”中的6个文件夹

    转载地址:http://www.myxzy.com/post-431.html Windows 8.1/windows 10对比windows 7都有一个变化,打开“这台电脑”(或“我的电脑”)后,“ ...

  4. 一个github账户多台电脑代码提交

    在实际工作生活中,我们可能不一定仅仅在一台电脑上编码,比如:我们平时在单位电脑1上写代码,提交代码到github账户,而我们也可能会在在家里的电脑2上继续工作,提交代码,这样就是在不同的电脑上提交代码 ...

  5. 如何在一台电脑上开启多个tomcat

    大家基本上都只在一台电脑上面启动一个Tomcat,而启动多个Tomcat会提示报错等相关故障.而假如调试负载均衡及集群的时候,需要在一台电脑上面开启多个Tomcat,那么怎么开启呢? 首先需要知道的是 ...

  6. (转)如何在一台电脑上开启多个tomcat 和配置让系统识别哪个具体的tomcat

    大家基本上都只在一台电脑上面启动一个Tomcat,而启动多个Tomcat会提示报错等相关故障.而假如调试负载均衡及集群的时候,需要在一台电脑上面开启多个Tomcat,那么怎么开启呢? 方法/步骤 首先 ...

  7. 在同一台电脑上同时安装Python2和Python3

    目前Python的两个版本Python2和Python3同时存在,且这两个版本同时在更新与维护. 到底是选择Python2还是选择Python3,取决于当前要使用的库.框架支持哪个版本. 例如:HTM ...

  8. BitTorrent Sync - 神奇的文件同步软件,无需服务器让多台电脑互相同步!

    176,487 微博 腾讯 空间 微信 141 49 如今人们对文件备份和同步的需求已经越来越强烈了.像 Dropbox 一样的云存储网盘有很多,但它们都有一个局限性,就是所有的文件都得经过它们的服务 ...

  9. [转]Windows 8.1删除这台电脑中视频/文档/下载等六个文件夹的方法

    Windows 8.1 已将“计算机”正式更名为“这台电脑”,当我们双击打开“这台电脑”后,也会很明显得发现另外一些变化:Windows 8.1  默认将视频.图片.文档.下载.音乐.桌面等常用文件夹 ...

随机推荐

  1. python spark 决策树 入门demo

    Refer to the DecisionTree Python docs and DecisionTreeModel Python docs for more details on the API. ...

  2. BZOJ 1531 二进制优化多重背包

    思路: 讲道理我应该写单调队列优化多重背包的 但是我不会啊 但是我现在! 还不会啊 我就写了个二进制优化的.. 过了 //By SiriusRen #include <cstdio> #i ...

  3. Spring《七》ApplicationContext

    1.国际化支持 getMessage()提供了国际化支持. Bean中必须定义为messageSource. <bean id="messageSource" class=& ...

  4. Solr.NET快速入门(九)【二进制文档上传】【完】

    二进制文档上传 SolrNet支持Solr"提取"功能(a.k.a. Solr"Cell")从二进制文档格式(如Word,PDF等)索引数据. 这里有一个简单的 ...

  5. 浅析CLR的异常处理模型

    文章目录: 异常概述 CLR中的异常处理机制 CLR中异常的核心类System.Exception类 异常处理的设计规范和最佳实践 异常处理的性能问题 其他拓展 1.异常概述 异常我们通常指的是行动成 ...

  6. 异步lambda表达式

  7. lua math.random()

    math.random([n [,m]]) 用法:1.无参调用,产生[0, 1)之间的浮点随机数. 2.一个参数n,产生[1, n]之间的整数. 3.两个参数,产生[n, m]之间的整数. math. ...

  8. css要点

    1.对inline-block设置overflow: hidden会造成baseline移动,因此需要设置vertical-align才不会出现样式问题. 2.使用flex时,需要对设置flex: 1 ...

  9. [Offer收割]编程练习赛37

    热门号码 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<vector> ...

  10. art-template简单使用

    art-template是一款较通用的前端模板引擎. 简单的使用方法如下: 具备3个要素 1)模板 <script type="text/template" id=" ...