2009-05-28 42 views
83

,你有你的遙控器列表隊友這個問題是有關我的問題在understanding rebase, branch and merge, 和無法Git的推高手Github上

你怎麼能保證你的github帳戶的問題?

我發現other people有同樣的問題。 這個問題似乎與/etc/xinet.d/有關。

問題:無法在Github上我的本地分支推到我的主分支

我跑

git push origin master 

我得到

fatal: 'origin' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly 

該錯誤信息顯示我的分支'origin'不在我的本地git倉庫中。這樣,Git停止連接到Github。

這很奇怪,因爲我沒有刪除分支的「起源」。

我的git樹是

dev 
* master 
    ticgit 
    remotes/Math/Math 
    remotes/Math/master 
    remotes/origin/master 
    remotes/Masi/master 

你怎麼可以把你的本地分行Github上,而你在本地的Git有隊友的分支?


VonC的答案解決了主要問題。 我把通行證放到了我的ssh密鑰中。

我跑

$git push github master  

我得到

Permission denied (publickey). 
fatal: The remote end hung up unexpectedly 

看來,我需要給GIT中的密碼莫名其妙。

如何讓Github請求您的密碼而不是依賴於ssh密鑰?

+0

剛剛更新了我的答案。Ssh參數不是全部。 user.name和github.user也很重要 – VonC 2009-05-28 20:15:25

+0

再次更新我的答案,還有一些更多的ssh配置檢查 – VonC 2009-05-29 04:08:56

+0

「Permission denied(publickey)」。實際上意味着您嘗試使用您的公鑰進行登錄,並且權限被拒絕,而不是被允許訪問您的公鑰。 – 2009-10-06 22:38:46

回答

96

什麼

$ git config --get-regexp '^(remote|branch)\.' 

回報(你的Git倉庫內執行)?

Origin只是引用遠程Git存儲庫的默認命名約定。

如果不引用GitHub上(而是你的隊友庫,路徑的路徑可能不再有效或可用),只需添加另一個起源,想在這個Bloggitation entry

$ git remote add origin2 [email protected]:myLogin/myProject.git 
$ git push origin2 master 

(我實際上使用的名稱 'GitHub的',而不是 '起源' 或 'origin2')


權限被拒絕(公鑰)。
致命:遠程端掛機意外

檢查您的GitHub的身份在本地的Git倉庫中正確地宣佈,在the GitHub Help guide提及。 (包括user.name和github.name - 和github.token)

然後,stonean blog建議(一樣Marcio Garcia):

$ cd ~/.ssh 
$ ssh-add id_rsa 

Aral Balkan補充說:創建一個配置文件

解決方案是在〜/ .ssh /下創建配置文件,如bottom of the OS X section of this page所述。

這是我添加的文件,按照頁面上的說明,我推又開始工作:

Host github.com 
User git 
Port 22 
Hostname github.com 
IdentityFile ~/.ssh/id_rsa 
TCPKeepAlive yes 
IdentitiesOnly yes 

您也可以發表的

ssh -v [email protected] 

結果有關於爲什麼GitHub ssh連接拒絕你的更多信息。

檢查您是否確實輸入了您的公鑰(它需要以'=='結尾)。
不要粘貼你的私鑰,而要粘貼你的私鑰。公鑰看起來是這樣的:

ssh-rsa AAAAB3<big string here>== [email protected] 

(注:你使用密碼對您的SSH密鑰它沒有一個密碼會更容易些)

檢查也推時使用的URL([email protected]/...,不是git://github.com/...

檢查您是否有SSH代理以使用並緩存您的密鑰。

試試這個:

$ ssh -i path/to/public/key [email protected] 

如果這樣的作品,那麼就意味着你的鑰匙沒有被SSH客戶端發送到GitHub上。

1

我認爲這是git錯誤消息誤導的另一種情況。通常當我看到這個錯誤是由於ssh問題。您是否將公共ssh密鑰添加到您的github帳戶?

編輯:此外,xinet.d論壇帖子是指運行git-daemon作爲服務,以便人們可以從您的系統拉。沒有必要運行git-daemon來推送到github。

+1

我將我的公鑰添加到了我的github帳戶。 - 在我向Git添加遠程分支後,問題就開始了。 – 2009-05-28 18:09:24

28

這是您的遙控器的問題。當你做git push origin masterorigin是遠程,master是你推動的分支。

當你這樣做:

git remote 

我敢打賭,列表不包括origin。要重新添加起源遠程:

git remote add origin [email protected]:your_github_username/your_github_app.git 

或者,如果它存在,但格式不正確:

git remote rm origin 
git remote add origin [email protected]:your_github_username/your_github_app.git 
1

我得到了同樣的問題,我剛纔添加的〜/ .ssh/id_rsa的內容.pub到我在GitHub的帳戶。之後,再試試git push origin master,它應該工作。

10

VonC的回答是最好的,但爲我工作的一部分是超級簡單,是一種埋藏了很多其他可能的答案之一。如果您和我一樣,在運行「rails入門」教程時遇到了這個問題,並且您沒有設置公鑰/私鑰SSH密鑰。

如果是的話,試試這個:

  1. $>cd ~/.ssh

  2. $>ls

  3. 如果LS的輸出known_hosts,別無其他信息,請訪問:http://help.github.com/mac-key-setup/並開始按照從指令「生成密鑰」部分並向下。

運行這些指令後,我的「git push origin master」命令奏效。

4

我有同樣的問題,我認爲防火牆阻止了git協議。 所以最後我不得不求助於使用https://來獲取和推送。然而,這總是會提示用戶輸入密碼......

這裏是我什麼工作的例子(只是爲了那些不能使用共享的git://協議:)

git fetch https://[user-name]@github.com/[user-name]/[project].git 

如果以上工作,你可以刪除的起源與

git remote rm origin 
git remote add origin https://[user-name]@github.com/[user-name]/[project].git 
0

取代他們要記住關鍵一點是「出身」是不是你可能需要使用值...它爲我工作,當我更換「出身」與回購的名字。

0

上述答案沒有解決的一種可能性是您可能沒有從您的shell獲得ssh訪問權限。也就是說,你可能正在一個網絡中(一些大學網絡這樣做),在那裏ssh服務被阻塞了。在這種情況下,你不僅可以獲得github服務,還可以獲得任何其他的ssh服務。你可以通過嘗試使用任何其他的ssh服務來測試這是否是問題。這是我的情況。

0

我有這個問題,並嘗試各種解決方案來解決它,包括上面列出的許多(配置文件,調試SSH等)。最後,我通過在git push中包含-u開關,在創建新存儲庫時按照github說明進行解決 - Github new Repository