前幾天搗置git,想將本身有用的代碼上傳到github去。本地git命令使用倒沒有什麼大的問題,就是這個push與poll操做老是搞不定。通過幾天的查資料問人,今天總算搞通了。於此記錄一下經驗與心得。 linux
(1)獲得github網站上去注個冊。 git
(2)按照"Set Up Git"的說明安裝git本地客戶端。 github
(3)建立第一個版本Create A Repo。
我遇到的困難是在Step3 Push your commit,執行: shell
$ git push origin master Permission denied (publickey).
都會報"Permission denied (publickey)."我使過不少方法都沒有解決直到找到 Generating SSH keys 說明網頁。接下來我詳細地講一下問題緣由:
是這樣的,咱們本地git客戶端與服務器通訊時經過SSH進行加密處理的。若是咱們沒有這個,那麼咱們就沒有辦法進行通訊了。 SSH的工做緣由是:生成一對密鑰(私鑰、公鑰),私鑰放在本地,公鑰放到遠程的服務器上。當咱們與遠程服務器通訊時,中間的數據經過私鑰加密後傳到服務器,服務器再經過公鑰進行解密。從而防止數據在網絡傳輸過程當中被竊聽。
按 照Generating SSH keys 所示生成SSH密鑰。 期間SSH會要求咱們輸入passphrase,是一個用戶本身隨便定義的短語,好比:"Today is sunny",或其它都行。這個短語別忘了,之後還要用到。 完成以後,SSH 在~/.ssh路徑下生成了id_rsa與id_rsa.pub兩個文件。前者爲私鑰文件,後者爲公鑰文件。咱們要將id_rsa.pub文件中的密文複製到github賬戶設置中去,告訴服務器要用這個公鑰與咱們本地SSH通訊。
我在 Step4 Test Everything out 中遇到點問題。
服務器
$ ssh -T git@github.com Agent admitted failure to sign using the key
沒有獲得預期的結果。問題緣由是:我們來沒有告訴SSH本地使用的私鑰是哪一個。執行如下命令:
網絡
$ ssh-add ~/.ssh/id_rsa Identity added: /home/hevake_lcj/.ssh/id_rsa (/home/hevake_lcj/.ssh/id_rsa)
注:其中是要輸入建立時的passphrase,驗證經過了就成功了。
但試一次: ssh
$ ssh -T git@github.com Hi hevakelcj! You've successfully authenticated, but GitHub does not provide shell access.
此次OK了。而後再嘗試git pull命令從服務器上下載代碼:
ide
$ git pull origin master
記住:每次push前都要先pull,調試運行一下看有沒有問題,確認沒問題了再提交。
接下來就能夠正常使用了~~
從GitHub導代碼方法:網站
(1)建一個目錄,進入這個目錄而後執行git init.加密
$ mkdir StateMachine $ cd StateMachine $ git init
(2)設置遠程路徑
從GitHub複製工程地址,以下爲:git@github.com:hevakelcj/StateMachine.git
$ git remote add origin git@github.com:hevakelcj/StateMachine.git
(3)導入代碼
$ git pull origin master
若是警告說Key的問題,則ssh-add,使用私密。