轉載:https://www.cnblogs.com/zichi/p/4703999.htmlhtml
對於我來講,最開始使用github主要是爲了使用它的pages功能展現demo。其實這些都是用Github for Windows push上去的,圖形化界面的客戶端使用確實簡單,可是逼格不夠,好吧實際上是各類緣由下不了客戶端,正好給我一個探索terminal方式的機會。nginx
言歸正傳,簡單介紹下怎樣利用git bash操做遠端的github代碼。首先得有git和github的基本概念,git是版本控制工具,而github至關於一個「免費」的服務器了(通常公司會搭建本身的git服務器)。而後能夠註冊個github的帳號,很簡單,分分鐘註冊完。以後,得在本地安裝msysgit,安裝完後,你會發現多了git bash和git gui,顧名思義一個是terminal方式一個是圖形用戶界面的方式。git
git要求使用者必須提供本身的身份標識,爲此咱們須要在git bash中執行如下命令(固然不設置也行,每次提交都是unknown... macOS 貌似會提交系統用戶名):github
複製代碼$ git config --global user.name "hanzichi" //給本身起個用戶名 $ git config --global user.email "abc@gmail.com" //填寫本身的郵箱
2017.02.15: 如下步驟可能會過期,或者僅適用於 windows 系統,可參考 https://help.github.com/articles/connecting-to-github-with-ssh/ 獲取更詳細步驟sql
GitHub選擇的默認通訊方式是SSH(對SSH感興趣的能夠參考阮老師的文章SSH原理與運用(一):遠程登陸 SSH原理與運用(二):遠程操做與端口轉發),若是沒有配置SSH key就只能clone代碼不能push上去(只讀),因此要先在Git裏面生成SHH Key。若是在當前用戶的第一級文件夾下有.ssh
文件夾,說明之前可能使用過git,把該文件夾刪除(或者先備份再刪除,防止意外)。shell
得到密鑰:windows
複製代碼ssh-keygen -t rsa -C "abc@gmail.com" //填寫email地址,而後一直「回車」ok
打開本地..\.ssh\id_rsa.pub文件。此文件裏面內容爲剛纔生成的密鑰。而後把該密鑰複製到github的setting/ssh中,點擊打開頁面的add SSH key按鈕,title任意,把key值複製進去。bash
通過上述配置,你的Git應該能夠經過SSH鏈接GitHub服務器了,能夠測試一把(配置完SSH key後,就表示本地能操做該用戶下的庫,能提交代碼了):服務器
複製代碼ssh -T git@github.com
提示像我這樣:Hi hanzichi! You've successfully authenticated, but GitHub does not provide shell access. 那就說明鏈接成功了。ssh
確認本地和github的服務器能夠通訊後,就能夠拉代碼、push代碼了。
可使用現有的項目或者fork的項目,這裏爲了測試,我新建了個helloworld項目,而後打開git bash,進入本身要克隆文件的目錄,用git clone命令把該項目克隆到本地。
複製代碼git clone git@github.com:hanzichi/helloworld.git
推薦用SSH的地址,而不是HTTPS,這樣就不用每次輸用戶名密碼了。
克隆完後,打開helloworld文件夾,裏面有個隱藏的.git
文件夾,還有個README的md文件,這是在建立項目的時候設置添加的。接着就能夠往裏面添加文件了。好比我在helloworld文件夾下寫了一個index.html文件和一個index.js文件,我要把它們添加到遠程項目庫中。
複製代碼git add . // 要add的文件,. 表示添加全部
git commit -m 'add files' // 提交更新 git push origin master // push到遠端master上
這樣操做後文件就提交到遠端去了! 注意只有最後一步和github有關!
這裏再提點別的,仍是像以上操做在github建立了一個helloworld項目,能夠不先克隆,而在本地建立一個helloworld文件夾,右擊文件夾用git init
命令初始化git環境,而後關聯 GitHub 中的項目(須要先建立):
複製代碼git remote add origin git@github.com:hanzichi/helloworld.git
而後就是普通的 add、commit 和 push 操做了(第一次可能須要 git push -u origin master)
若是出現錯誤,提示:fatal: remote origin already exists 則可直接push
若是在執行 git push origin master 時報錯:error:failed to push som refs to.......
則可先執行:
複製代碼git pull origin master
先把遠程服務器github上面的文件拉先來,再push 上去。