使用GitHub分享代碼

  感謝優達的免費課程,還有網絡上熱心的網友,尤爲是廖雪峯老師的教程幫我填補好多空缺。這是三個筆記中最後一個了,個人課外學習要先告一段落了,考驗要緊啊,還沒咋複習呢。內心好慌,但願本身能耐得住性子坐下來複習。加油!git

  必定要從本身的帳號下clone倉庫,這樣你才能推送修改。若是從原做者的倉庫地址克隆,由於沒有權限,你將不能推送修改。因此爲此必須在GitHub上新建一個空的倉庫。使用它來保存其餘人的倉庫,並實現與本地的交互。每次更新GitHub時,更新的是一個分支,他會檢查該更新全部的提交,若是GitHub中存在就不須要再次上傳,若是沒有則會提交。  安全

  在建立一個新的GitHub倉庫時,會有選項「使用README來初始化倉庫」:若是這徹底是一個新的倉庫而且本地也沒有任何相關內容的話,建議使用該選項,他會初始化一個commit。不然你沒法克隆一個空的倉庫。在GitHub的遠程倉庫中能夠直接建立純文本文件。網絡

互聯設置:由於Git是分佈式版本控制系統,因此,每一個機器都必須自報家門:你的名字和Email地址。app

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

注意:git config命令的--global參數,用了這個參數,表示你這臺機器上全部的Git倉庫都會使用這個配置,固然也能夠對某個倉庫指定不一樣的用戶名和Email地址。分佈式

 

查看和建立遠程倉庫:git remote。學習

  • 不加參數:查看全部遠程倉庫。
  • git remote add name HTTPS:添加遠程倉庫,name能夠是任何字段,用來在本地指代GitHub中的遠程倉庫。若是隻有一個遠程倉庫,建議使用origin。最後加上該庫的https地址。
  • git remote -v:輸出詳細信息。

更新遠程倉庫:fetch

git push 遠程倉庫名 本地分支名spa

複製GitHub上其餘人的庫 3d

對於GitHub上想要修改的倉庫,可使用fork按鈕將其複製到本身的帳戶中,GitHub會自動給出原文件連接。想要對其進行修改,除非改動很是小,不然都須要clone到本地,使用git clone URL克隆時,git會自動地建立一個遠程倉庫並指向克隆的原始倉庫。能夠食用git remote -v驗證。這裏的URL是fork的主頁URL。版本控制

 

圖一GitHub上克隆到本地

 

  在本身建立一個庫的同時還有合做夥伴的時候,能夠選用「合做者「一同開發,不過主人仍是有主導權的,在setting選項卡中,有collaboration選項能夠添加不一樣的合做者。

git會把你的全部遠程分支在本地保存一個副本,他會包含最後一次拉取、推送時分支的狀態。遠程分支的本地副本以「遠程倉庫名/分支名」爲名,與遠程推送儲存在一塊兒。

更新遠程分支本地副本

git fetch:更新遠程分支的本地副本,同時實際的本地版本不發生變化。

從遠程倉庫拉取最新的狀態

git pull:從遠程倉庫拉取最新的狀態,並把它與本地的分支進行合併。

合併機制

  這原本是要在上一篇中講的,上一篇內容太多了,正好這裏也有合併的內容,就放在了這裏。

  快速合併:你要git默認的合併方式,判斷依據是與本分支合併的分支是不是本分支的祖先。若是是這種狀況,後面的分支會有前面的分支全部內容,沒有必要再產生一個標籤,只要把祖先的標籤移到最後便可。可是即便是使用快速合併,在GitHub上也會產生一個commit。也可使用強制非快速合併,合併分支時,加上--no-ff參數就能夠用普通模式合併,合併後的歷史有分支,能看出來曾經作過合併,而fast forward合併就看不出來曾經作過合併。因此建議使用非快速合併。

 

圖二快速合併舉例

 分支策略

  在實際開發中,咱們應該按照幾個基本原則進行分支管理:

  首先,master分支應該是很是穩定的,也就是僅用來發布新版本,平時不能在上面幹活;那在哪幹活呢?幹活都在其餘分支上如:easy-mode,也就是說,easy-mode分支是不穩定的,到某個時候,好比1.0版本發佈時,再把easy-mode分支合併到master上,在master分支發佈1.0版本;你和你的小夥伴們每一個人都在easy-mode分支上幹活,每一個人都有本身的分支,時不時地往easy-mode分支上合併就能夠了。

拉取請求

 若是在本地新建一個分支並在其上進行修改,將其推送到GitHub上時也會一樣建立一個分支。若是想讓其餘人更改使用「pull request」拉取請求,即別人能夠提交修改,你能夠決定是否將其合併到master分支上。設置「pull request」時要注意,GitHub默認是將新分支合併到最原始的倉庫中,若是不想必定要更改。拉取請求其實就是合併請求,合做者把想合併到主分支的文本提交到GitHub上,若是主人贊成就能夠合併到主分支上了。

 

圖三更改請求提交位置

設置完以後,會在倉庫主頁中出現pull request選項卡,新的拉取請求在其中,選擇相應的請求,會看到最新的提交,你能夠點開看到更改的內容。

 

圖四拉取請求位置

  若是有多個pull request,而且他們之間有衝突的話,通常的解決方法是先先判斷哪一個請求要合併,不須要合併的請求直接刪除,減小衝突。若是兩個都須要的合併產生衝突能夠先合併一個,刪除該分支,而後在本地電腦上解決衝突,並將解決方案與主分支(想要被合併的分支)合併到解決方案所在地分支中,而後將該分支push到GitHub中,用來更新「pull request」。使用「git pull 遠程倉庫名 分支名」來拉取遠程倉庫中相應的分支。

  不要直接將修改合併到主分支而後push,這樣會致使合做者沒法看到你的更改。

  若是在你修改本地倉庫添加新內容時,原做者修改了他的文件致使你沒法與最新版本進行合併,能夠先建立一個指向源庫的遠程倉庫通常叫作upstream,在本地解決衝突,而後將其push到本身的GitHub上再次提出pull request

 

  

圖六 git中一些經常使用概念以及方法的關係

 

如下內容都是後加的。

凍結現場命令git stash

         若是遇到突發狀況,須要馬上去其餘分支上處理問題,可是有頭上的工做還沒作完沒法commit,這時候可使用命令git stash能夠把當前工做現場「儲藏」起來,等之後恢復現場後繼續工做。

         使用git stash命令後,用git status查看工做區,就是乾淨的(除非有沒有被Git管理的文件),所以能夠放心地建立分支來修復bug。

         用git stash list命令找到儲藏的工做現場,須要恢復一下,有兩個辦法:

  • 一是用git stash apply恢復,可是恢復後,stash內容並不刪除,你須要用git stash drop來刪除;
  • 另外一種方式是用git stash pop,恢復的同時把stash內容也刪了,可是隻能是隻有一個stash文件的狀況下使用。

你能夠屢次stash,恢復的時候,先用git stash list查看,而後恢復指定的stash,用命令

 

圖七 git stash命令使用狀況

 

標籤tag

         這東西沒有聽老師講過,可是看了廖雪峯老師的教程後明白了,其實很簡單,給個原連接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013762144381812a168659b3dd4610b4229d81de5056cc000

標籤說白了就是一個代號罷了,爲了簡化commit ID。

         使用也很是簡單添加標籤使用命令git tag <name>。一般會默認放在該分支的最新提交上。git tag -a <tagname> -m "blablabla..."能夠指定標籤信息,git tag能夠查看全部標籤。可使用git tag <name> commitID給相應ID的commit補上一個標籤。

         由於建立的標籤都只存儲在本地,不會自動推送到遠程。因此,打錯的標籤能夠在本地安全刪除使用命令:git tag –d <name>

         命令git push origin <tagname>能夠推送一個本地標籤到遠程。

相關文章
相關標籤/搜索