轉載:https://www.cnblogs.com/zichi/p/4703999.html
對於我來說,最開始使用github主要是為了使用它的pages功能展示demo。其實這些都是用Github for Windows push上去的,圖形化界面的客戶端使用確實簡單,但是逼格不夠,好吧其實是各種原因下不了客戶端,正好給我一個探索terminal方式的機會。
1、github賬號注冊 & msysgit的安裝
言歸正傳,簡單介紹下怎樣利用git bash操作遠端的github代碼。首先得有git和github的基本概念,git是版本控制工具,而github相當於一個“免費”的服務器了(一般公司會搭建自己的git服務器)。然后可以注冊個github的賬號,很簡單,分分鍾注冊完。之后,得在本地安裝msysgit,安裝完后,你會發現多了git bash和git gui,顧名思義一個是terminal方式一個是圖形用戶界面的方式。
2、設置用戶信息
git要求使用者必須提供自己的身份標識,為此我們需要在git bash中執行以下命令(當然不設置也行,每次提交都是unknown... macOS 貌似會提交系統用戶名):
復制代碼$ git config --global user.name "hanzichi" //給自己起個用戶名 $ git config --global user.email "abc@gmail.com" //填寫自己的郵箱
3、獲取密鑰
2017.02.15: 以下步驟可能會過時,或者僅適用於 windows 系統,可參考 https://help.github.com/articles/connecting-to-github-with-ssh/ 獲取更詳細步驟
GitHub選擇的默認通信方式是SSH(對SSH感興趣的可以參考阮老師的文章SSH原理與運用(一):遠程登錄 SSH原理與運用(二):遠程操作與端口轉發),如果沒有配置SSH key就只能clone代碼不能push上去(只讀),所以要先在Git里面生成SHH Key。如果在當前用戶的第一級文件夾下有.ssh
文件夾,說明以前可能使用過git,把該文件夾刪除(或者先備份再刪除,防止意外)。
獲得密鑰:
復制代碼ssh-keygen -t rsa -C "abc@gmail.com" //填寫email地址,然后一直“回車”ok
打開本地..\.ssh\id_rsa.pub文件。此文件里面內容為剛才生成的密鑰。然后把該密鑰復制到github的setting/ssh中,點擊打開頁面的add SSH key按鈕,title任意,把key值復制進去。
經過上述配置,你的Git應該可以通過SSH連接GitHub服務器了,可以測試一把(配置完SSH key后,就表示本地能操作該用戶下的庫,能提交代碼了):
復制代碼ssh -T git@github.com
提示像我這樣:Hi hanzichi! You've successfully authenticated, but GitHub does not provide shell access. 那就說明連接成功了。
4、遠程操作
確認本地和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有關!
notice
這里再提點別的,還是像以上操作在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 上去。