如何在同一台电脑使用不同的账号提交到同一个github仓库

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

现在的情况是这样的:在公司我们也是使用git来管理代码,我们公司内部有自己的git仓库(B),提交代码时用的账户就是公司的oa账号(A)。而我自己有时候在家里做开发的时候,就是用自己注册github账户(C)提交代码到自己账户下的github仓库(D)。现在有时候在公司办公的时候,写一些demo或者好的代码时,想提交到自己的github账户(D),由于用的是公司的电脑,提交到D时显示的用户名是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 [email protected]_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的客户端都可以共享使用这些私钥。

好处1:不用重复输入密码。

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

好处2:不用到处部署私钥

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

[email protected] $ ssh -A HOST_A
[email protected]_A $ ssh HOST_B[email protected]_B $

我的执行情况是这样的:

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

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

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

接着继续操作:

这样如果我访问时使用的是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 "[email protected]"

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

现在有几个问题:

(1)如果使用私人邮箱生成的ssh(F)来访问github,是不是可以不用执行命令git config user.email "[email protected]"?

(2)如果使用公司邮箱生成的ssh(E)来访问github,是不是如果执行

git config user.name "kingson4wu"

git config user.email "[email protected]"

这两条命令,则提交代码时显示的名称是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 "[email protected]"

这两条命令即可。

时间: 2024-11-06 14:45:21

如何在同一台电脑使用不同的账号提交到同一个github仓库的相关文章

怎样在同一台电脑使用不同的账号提交到同一个github仓库

近期这段时间使用github.有时在公司办公,想要用git提交代码到自己的github仓库,提交是显示的作者是自己在公司的账户.而不是自己的github账户.这就相当于提交到github的代码不是自己本人提交的,是其它人提交的. 如今的情况是这种:在公司我们也是使用git来管理代码.我们公司内部有自己的git仓库(B).提交代码时用的账户就是公司的oa账号(A). 而我自己有时候在家里做开发的时候.就是用自己注冊github账户(C)提交代码到自己账户下的github仓库(D). 如今有时候在公

解决Skype一台电脑登陆多个账号的问题

Skype默认是一台电脑只能登陆一个skype账号,有小伙伴儿捉急一台电脑只能登陆一个skype账号这个问题,现在有新技能可以在同一台电脑上登陆十个八个skype账号都不是问题!欲知详情,请点赞,O(∩_∩)O谢谢 准备工作是先要找到系统上安装的skype程序位置,我的是windows 8操作系统,默认情况下skype程序的安装位置在:C:\Program Files (x86)\Skype\Phone\skype.exe.大家如果在安装的时候更改了安装路径的话,那么找到这个绝对位置,复制路径.

2Ubuntu下nfs服务器搭建,Linux多台电脑共享目录

 1安装nfs(网络文件系统)服务器 共享的原理: 安装命令: sudo apt-get install nfs-kernel-server 2设置/etc/exports配置文件 添加以下这行配置 其中: *表示所有ip,如果想指定ip,可以把*换成你自己的ip地址. rw:表示只读权限,如果想变成只读的,修改配置为ro sync:表示同步的方式.任何人对这个目录的修改,其它人都可以看到. 3.在用户目录下创建nfs目录 4.重启服务器,发现有4个OK,这时候说明配置成功了. 5.磁盘挂载

如何在同一台电脑(windows系统)上同时搭建python2和python3环境

我们都知道python现在主要使用的有2个版本2.x和3.x,而这2个版本的语法却有很多的不同,python3.x并不是向下兼容2.x的.虽然说3.x是未来python的主流,但是很多工具和个人还是倾向于python2.x.所以在同一台电脑上安装2个python版本就很有必要了. 1.首先到python官网(https://www.python.org/downloads/)下载2个版本的安装包. 2.安装包都下载完成后,双击开始安装,全部默认即可. 3.安装完成后复制安装的路径,python2

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

我们平时在做Java开发的时候,有时需要使用多个版本的jdk, 那么一台电脑上需要安装多个JDK了. 那一台电脑上可不可以同时安装多个版本的jdk呢? 答案是可以的! 但使用的时候,只能使用一个,不能同时使用,需要切换. 下面讲讲怎么操作吧  呵呵 ! 1.安装   这个就不需要将了,和平时安装jdk一样!不过环境变量的配置,先不弄,等下一步. 2. JDK版本间的切换 a) 修改注册表: HKEY_LOCAL_MACHINE  -----> SOFTWARE   -----> JavaSof

安卓手机屏幕投射到电脑以及一台电脑控制多台手机技术原理浅析

奥创软件研究院推出的奥创微群控让越来越多的人了解到了电脑控制手机的操作.自奥创软件研究院首家发布电脑批量控制手机的解决方案以来,有很多人开始探讨电脑控制手机技术在实际工作中的应用. 由于市场太大,仅靠奥创软件研究院一家也是做不过来的,现在将手机屏幕投射到到电脑的技术原理,以及一台电脑批量控制多台手机的技术(即所谓的手机反响控制)简单的给大家介绍下,在此抛砖引玉,希望能给大家一些思路上的指导. 说到安卓手机的屏幕投射,就不得不说安卓的adb,ADB的全称为Android Debug Bridge这

Input Director 一套键盘鼠标同时控制多台电脑

Input Director 一套键盘鼠标同时控制多台电脑 下载安装 通过搜索或直接到页面底部网盘下载,完成下载后,双击exe文件即可进入安装界面,勾选"I accept"同意协议单击"Next",选择安装路劲,单击"Install"开始安装: 显示如下界面单击"Close"关闭界面即可完成安装(控制端和被控端电脑都进行安装,安装步骤相同): 配置控制端(本机可以控制谁) 首先将鼠标键盘接到控制端电脑(配置完成后默认移动鼠标,

一个ADSL账号实现多台电脑上网

有些人肯定遇到过这样的问题:我有一个宽带账号,可我有两台电脑,该怎么样同时上网呢? 其实,如果资金允许的话你不如添一个设备,叫 “路由器”.路由器简而言之就是起到分配线路的作用,其路由器本身充当网关.同时,如果你是电话线接入的家庭宽带,“Modem”还是一个必不可少的设备,俗称“猫”,它的作用就是将电话线的模拟信号转换为数字信号,这是电话线上网必不可少的一步.如果拥有多台计算机达到同时上网的目的,拥有这两个设备就基本上可以满足了.不过值得注意的是因为“猫” 和路由器的外形很相似,很多人区分不出“

多台电脑共享打印机的方法

多台电脑共享打印机的方法 办公室办公经常遇到这样的情况,一个办公室有若干台电脑,但是只有一台打印机,由于条件所限,不可能为每一台电脑配备一台打印机,那么,怎样使所有的电脑都共享这台打印机,在任何一台电脑上完成打印呢?百度经验:jingyan.baidu.com 方法/步骤1 首先,把这台已经连接打印机的电脑设置“打印机共享”,点击“开始”→“打印机和传真”,点击打印机的属性,可以看到这样的窗口 步骤阅读2 选择第二个按钮“共享”,选择“共享这台打印机,在这里,可以看到共享名,比如“hplaser