2012-02-19 187 views
61

上我有GitHub上ONE倉庫,姑且稱之爲Repo-1一臺計算機

我想首先訪問該存儲庫作爲默認Git用戶。我們稱之爲User-1

我創建SSH密鑰對,樣樣精,工作良好


我對ANOTHER庫GitHub的,姑且稱之爲Repo-2

沒有在我的筆記本電腦上的本地Git作出任何更改。沒有配置變化,沒有任何。

現在 - 我想克隆Repo-1User-2(但從同一檯筆記本電腦)。

首先:這是可以做到的嗎?

一臺筆記本電腦上的本地Git可以在「用戶帳戶」之間切換,並將其自身顯示爲User-2?然後,從這個身份,從Repo-1克隆,做一些改變,然後推送到Repo-1

如果可能,我該怎麼做?

+0

您是什麼時候創建User-2的?你有兩個SSH密鑰對嗎? – 2012-02-19 07:27:14

+0

嗨,馬修!我猜是的。我剛剛設法做到這一點,仍然不確定這是否正確。我直接去了〜/ .gitconfig(在Windows中是C:\ Users \ Martin \ .gitconfig)並且改變了這個參數:[user] name = USER 2 email = [email protected] [github] user = user2。我沒有改變令牌 - 我保持原樣。然後我將user1回購添加到Git(擁有user2標識)。克隆。更改了文件。分階段,承諾並推動。去了GitHub Repo1頁面,那裏是:來自另一個用戶的提交。但是......這種方法有意義嗎? – Martin 2012-02-19 07:54:26

回答

57

您的全局.gitconfig已經配置了您的SSH密鑰/用戶信息。全局.gitconfig被本地gitconfig覆蓋 - 在.git文件夾中的文件「config」(如果它不存在,您可能必須創建它)。

例如,您可以將.gitconfig文件複製到.git文件夾中(並將其重命名爲「config」),只需更改要更改的行(可能是github.user和github.token),或者創建一個只有兩行的新文件。

如果您更喜歡命令行「git config」,您可以通過省略「--global」選項來避免所有文件移動。

+2

不錯,謝謝。我剛剛測試過它。兩個文件夾(相同級別,相互之間,folder1和folder2)。在folder1中,配置文件中的默認設置。在folder2中更改了設置,包括GitHub用戶名。在folder1中啓動GitBash,clone -...- push,GitHub看到defalut用戶的提交。在folder2中啓動GitBash,clone -...- push,GitHub看到來自OTHER用戶的提交。像魅力一樣工作,不需要改變全局設置。不同的文件夾,不同的用戶正是我需要的。酷,再次感謝thanx! – Martin 2012-02-19 09:18:55

+0

IMO,這個答案中的最後一句話是關鍵。因爲我讓git處理工作流而不是自己搞亂文件似乎更清潔。順便說一句,關於這個話題的一個很好的指導git配置:https://help.github.com/articles/setting-your-commit-email-address-in-git/#setting-your-email-address -for-a-one-repository – AndyO 2017-09-07 10:03:10

45

您需要確定您是否確實有兩個ssh密鑰對,或者只需要兩個您想使用的電子郵件。 ssh密鑰對鏈接到賬戶,如here所述。

ssh密鑰對(特別是私鑰)基本上賦予了你的git客戶端連接到github的權限,從而允許推送。這與用戶標識是分開的,它只是提交消息中的電子郵件。

如果您有兩個ssh密鑰對,每個鏈接到一個帳戶,請按照these說明創建一個~/.ssh/config文件。關鍵部分是使用不同的SSH僞主機爲每個帳戶:

# Default GitHub user (joe) 
Host github.com 
    HostName github.com 
    User git 
    IdentityFile /Users/joe/.ssh/id_rsa 

# Client user (client) 
Host github-client 
    HostName github.com 
    User git 
    IdentityFile /Users/joe/.ssh/id_rsa_client 

然後,您使用兩個相應的遙控器:

git clone [email protected]:joe/my_repo.git 

git clone [email protected]:client/his_repo.git 

如果你只是想使用兩封電子郵件,您可以爲每個克隆單獨設置一個.git/config,並設置所需的[user]設置。

+0

好的,thanx。這是一個很好的小教程,正是我需要的!總之,GitHub用戶名呢?我向.git/config文件添加了兩個不同的GitHub用戶名,現在GitHub顯示來自兩個不同用戶的提交。這是否意味着我在前幾天創建了兩個SSH密鑰對(我坦率地不記得我爲什麼混淆了很多)...?如果我沒有,GitHub不會接受來自第二用戶的提交,我想對嗎? – Martin 2012-02-19 09:59:04

+0

@Martin,你可以通過一個賬戶向github推送兩種不同的電子郵件。如果你不使用兩個身份文件,那可能會發生什麼。 – 2012-02-19 10:12:27

+0

哦,現在這個最後的答案是關於接近兩個不同的GitHub存儲庫...我是否正確?但這不是問題。問題是如何訪問一個GitHub存儲庫,並將自己呈現爲2個不同的用戶。像我和我的朋友都使用同一檯筆記本電腦,並且正在研究同一個項目(同一個GitHub回購),只有在早晨我克隆和推動馬丁,並在晚上克隆和推動約翰。同一臺本地計算機,具有一個本地Git安裝,但兩個身份接近一個遠程回購。 – Martin 2012-02-19 10:19:57

相關問題