zoukankan      html  css  js  c++  java
  • 怎样在同一台电脑使用不同的账号提交到同一个github仓库

        近期这段时间使用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文件夹文件夹下的情况:


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



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

    接着继续操作:




    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"
    这两条命令就可以。



  • 相关阅读:
    CommonJs、AMD、CMD模块化规范
    在 repeater控件中有button控件,如何点击button按钮在后头产生方法
    DropdownList动态绑定数据库中的字段
    电脑操作的快捷键
    多条件查询
    asp.Net_图片上传的一个类库的源码
    日期转换_中文To数字
    VS2010断点设置技巧
    附加进程调试
    电脑常用的几个快捷键
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7098119.html
Copyright © 2011-2022 走看看