為什麼要用GitHub?

  • 理由如下(工科生思維 = = !)
  1. 本地倉庫如果一不小心被刪掉或者其他原因被破壞(包括.git),git再強大,也救不了你。可是如果有了GitHub,我們可以把本地倉庫內容以及修改推送到GitHub上,實現本地與GitHub的同步,這樣本地倉庫即使被刪,我們可以從GitHub上克隆出一個一樣的本地倉庫
  2. 更好的實現項目組內人員的分工協作!
  3. 全世界最大的同性交友網站,各種牛逼的項目等待屌絲的發掘

ssh加密

  • 我們本地創建的git倉庫與遠程的Github之間要想實現數據的安全傳輸,需要通過ssh協議來加密。因此我們需要將本地的ssh公鑰交給Github,這樣當我們將要上傳的數據發送給Github服務器時,服務器通過我們給它的公鑰就能保證:
  • 數據是從正確的本地推送到服務器的
  • 數據在推送過程中沒有受到中間人攻擊
  • 關於ssh,可以看這裡《SSH與中間人攻擊》

創建ssh密鑰

  • ssh-keygen
  • 執行完此命令之後,在home目錄下會生成一個隱藏的.ssh目錄,該目錄下會有兩個文件,id_rsa.pub和id_rsa,顯然前面一個密鑰就是我們要交給Github服務器的公鑰,ssh私鑰應保證不讓別的用戶或黑客獲得,因此我們創建ssh過程中會有一個提示,是否要為私鑰id_rsa設置口令,即用密碼保護,如果你要上傳的文件非常重要,那你應該為私鑰設置一個口令。

https

  • 除了使用ssh之外,Git還提供了https

提交公鑰

  • 進入到個人的GitHub頁面,在settings keys中將id_rsa.pub中的內容複製粘貼到頁面提供的文本框中就可以啦。

設置多個公鑰

  • 對於只有一個GitHub賬號的我,如果要建立幾臺電腦上git倉庫與同一個GitHub賬號的關聯,可以把每臺電腦上的公鑰都提交到GitHub服務器上,GitHub允許同一個用戶在settings key中添加多個公鑰

關聯遠程倉庫

  • 要想將本地git倉庫與GitHub遠程倉庫關聯,首先我們得有一個遠程庫。

創建遠程倉庫

  • 只要是個正常人,在GitHub上肯定能找到create a new reposity選項,不過要注意,本地創建的倉庫名與遠程倉庫名最好一致,這樣更方便管理

關聯

  1. 本地gitbash下,執行命令
  • git remote add origin [email protected]:ZiaWang/xxx.git
  • 關於origin
  • origin可以看作其後路徑的別名,可以不必須為"origin",在之後對倉庫第一次使用git push的時候,要使用這個別名
  1. 推送本地內容至遠程倉庫
  • git push -u origin master
  1. 將本地倉庫中master分支的內容提交到遠程倉庫的master
  2. 第一次推送時,將本地master分支與遠程master分支關聯
  • 第一次推送數據到遠程庫的時候,需要加上-u origin master參數,這樣可以講本地master分支與遠程master分支關聯起來
  • 以後再提交的時候,就不用再添加-u參數了,只需要提供分支即可
  • 查看當前倉庫下的關聯鏈接別名
  • git remote

查看每一個關聯的詳細信息(包括關聯路徑)

  • git remote -v
  • -v可以使用--verbose代替

刪除某個關聯

  • git remote rm <verbose>

ssh警告

  • 第一次使用推送數據到遠程倉庫的時候,ssh會發出一段警告。具體解釋請看《SSH與中間人攻擊》

克隆遠程庫

  • 克隆遠程倉庫的命令和關聯遠程倉庫的命令很相似,只需要將remote add origin換成clone即可
  • git clone [email protected]:ZiaWang/xxx.git

合併的三種方式

git pull

  • 當本地已經有了GitHub倉庫中的東西之後,如果本地域遠程倉庫中的內容不同(比如你在另一個主機上向倉庫推送了內容),這個時候你就需要使用git pull [ origin branch_name] 來將GitHub上新增加的修改同步到本地。
  • 使用git pull命令可以讓我們在多個終端上向與遠程的GitHub倉庫進行交互,在日常開發中,經常用到的就是這個命令

git fetch

  • 使用git pull 從遠程GitHub上下載一個分支下來時,這個命令會做兩件事
  1. 從遠程GitHub上將分支拷貝到本地的featch-dev分支上
  2. 再將工作區中剛下載的分支與當前分支合併,比如dev
  • git featch 命令相當於完成了git pull 的第一步,當我們本地倉庫的dev分支沒有東西需要從遠程GitHub下載分支dev內容的時候,這個命令會將遠程分支拷貝到本地,並保存在featch-dev分支上。在這種情況下我們在工作區中是看不見分支內容的,需要我們手動合併從GitHub上featch下來的分支
  1. git checkout dev確保我們在dev分之下
  2. git merge origin/dev即可

git rebase

  • git rebase b也是將分支b合併到當前分支上,但是當我們使用git log來看commit的時候,git rebase和git fetch產生的合併歷史是不同的
  • rebase合併的過程中,如果出現了衝突,git會停止rebase,並且等到我們手動解決衝突之後,使用git add命令,然後執行git rebase --continue就可以完成合並
  • 注意git add之後不要使用git commit

git rebase --abort

  • 這個參數可以用來終止rebase的命令,並恢復當前分支到rebase之前的狀態

git rebase --continue


分享到:


相關文章: