1. 程式人生 > > (轉)windows一臺電腦新增多個git賬號

 (轉)windows一臺電腦新增多個git賬號

 

概述

電腦上已經配置了github的ssh連線。現在又有一個不同的git賬戶,也就是要在一臺電腦上配置兩個git賬號。
下面記錄一下我配置的方法。

取消git全域性配置

之前配置github的時候,用命令

git config --golbal user.name "XXX"
git config --golbal user.email "[email protected]"

因為需要用到兩個git賬戶,所以針對之前配置的全域性配置就得取消。
命令如下:

#全域性配置賬戶已經移除
git config 
--global --unset user.name #檢視全域性使用者名稱 git config --global user.name #全域性配置郵箱已經移除 git config --global --unset user.email #檢視全域性郵箱 git config --global user.email

生成新的SSH KEYS

  • 先用cd命令將當前目錄切換到~/.ssh目錄下
  • 用ssh-keygen命令生成一組新的id_rsa_new和id_rsa_new.pub
    生成方法用命令ssh-keygen -t rsa -C "[email protected]

    ",這裡確認之後和第一配置就有不同了。
    第一次給github配置sshkey時,直接按回車,其餘什麼都不管。最後看生成的id_rsa檔案和id_rsa.pub檔案。
    這次需要給這個生成的檔案起一個名,例如id_rsa_new.步驟如圖中所示。
    這裡寫圖片描述
    需要修改步驟1和步驟2

  • 執行ssh-agent讓ssh識別新的私鑰
    命令為下面兩步:

#Start the 'ssh-agent.exe' process
eval $(ssh-agent -s)
#install the SSH keys
ssh-add ~/.ssh/id_rsa_new
  • 配置多個賬戶的~/.ssh/config檔案檔案
# 該檔案用於配置私鑰對應的伺服器
# first user
Host [email protected]
HostName https://github.com
User git
IdentityFile ~/.ssh/id_rsa

# second user
Host [email protected]
HostName https://code.aliyun.com
User git
IdentityFile ~/.ssh/id_rsa_new

把公鑰新增到SSH KEYS

方法為:
在github找到Settings->SSH and GPG keys。然後新增

測試是否成功

用命令ssh -T [email protected]
成功的話,會返回包含Hi XXXXX! You've successfully authenticated的字串。

特別注意:github提交之後,contribution沒有提交記錄的小綠點問題

原因

這裡,因為取消了全域性的使用者名稱和密碼,在本地進行提交時,github不能將本地倉庫對應的提交者和遠端github賬號對應的使用者對應起來,所以就不記錄了。
可以通過在倉庫根目錄下git log檢視提交記錄,會發現有一些提交使用者名稱和郵箱和GitHub的賬號不對應。

解決方法

為每個倉庫設定單獨的使用者名稱和密碼。方法如下:

# 1.進入到需要修改的倉庫中
git config user.name GitHub的使用者名稱
git config user.email GitHub的登入郵箱

檢視是否修改成功的方法:
在程式碼倉庫的.git目錄中

[core]

[remote "origin"]

[branch "master"]

[user]
    name = 你的GitHub使用者名稱
    email = 你的GitHub郵箱

如果你已經提交了程式碼才發現這個問題也是有補救辦法的。
1.在倉庫中根目錄新建一個shell指令碼,命名為1.sh,內容如下:

#!/bin/sh
git filter-branch --commit-filter '
        if [ "$GIT_AUTHOR_EMAIL" = "之前不對應的郵箱" ];
        then
                GIT_AUTHOR_NAME="對應的使用者名稱";
                GIT_AUTHOR_EMAIL="對應的郵箱";
                git commit-tree "[email protected]";
        else
                git commit-tree "[email protected]";
        fi' HEAD

2.然後執行1.sh
3.git log檢視之前的記錄是否已經修改回來,正常的話應該都改回來了。
4.執行git push --force --tags origin 'refs/heads/*'將修改推送到遠端

補救參考方法地址
修改log中的郵箱官網方法

參考連結->同一機器配置多個git賬號
參考連結->為每個git倉庫設定不同的使用者名稱和郵箱