前言
- 之前對於GitHub完全是當作一個存代碼的遠程倉庫,或者是一個參考別人代碼的網站
- 這篇文章可以看作GitHub進階,告訴你如何建立分支,合併代碼,與別人合作開發
參考文章
前期準備
- 簡單的如何上傳代碼,可以看我的這篇博客
- 下載oh my zsh:
- oh my zsh是終端的一個插件,使用它在操作時可以更加方便
- 這篇文章的操作截圖都將是使用oh my zsh後的效果
- 終端輸入:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
defaults write com.apple.finder AppleShowAllFiles -bool true
在終端輸入上述指令,顯示所有隱藏文件,這樣可以看到.git
最後需要重啓Finder:窗口左上角的蘋果標誌-->強制退出-->Finder-->重新啓動
預備知識
- 首先Xcode自帶git,所以學會合作開發後,Xcode會開始展示他強大的一面
- 我們要明白幾個概念:
- 倉庫:倉庫是存放所有代碼的地方
- 分支:
- 分支首先有默認的主分支:master,所有最後的代碼都要併到主分支
- 另外就是你可以建立自己的分支,在上面寫自己的代碼
- 所謂合作開發,其實就是你在你的分支開發,別人在別人的分支開發,最後都要合併到主分支
- fork:
- fork別人的倉庫實際上相當於克隆了別人的倉庫,可以這麼理解,git clone指令是把別人的倉庫克隆到本地,而fork確是將倉庫在遠程clone下來。
- 所以fork之後你也有了這樣一個倉庫,但並不是意味着你就能和別人同步開發了
先邀請你的夥伴吧
- 假設A, B, C三個人一起合作開發,首先是A在GitHub上建立了一個倉庫叫Cooperative-Learning
- 接下來到倉庫主界面點擊contributor可以查看所有參與者,當然現在只有一個人
- 想要讓其他人蔘與到這個倉庫的代碼合作上來需要點擊settings,再點擊左側的Collaborators,此時輸入密碼
- 輸入完你的密碼後就可以拉人了,根據別人的用戶名,郵箱搜索到這個人,然後向他發出邀請
- 假設A向B發出了邀請,而要接受邀請卻並不是在GitHub上接受,這一點真的很值得吐槽,B要登陸自己註冊GitHub的郵箱接受邀請(如果是QQ郵箱的話當然要記得是在PC端使用啊)
- 此時回到contributors界面就會發現多了一個人了(這是我之前的倉庫,大家get到意思就行)
首先當然在本地搞出我們的git
- 這個步驟不同的人都會不一樣,我的習慣是新建一個文件夾取名爲倉庫名+Demo
- 然後打開terminal
- cd + 上面的文件夾路徑來進入該文件夾
- 複製我們新建倉庫的SSH路徑
- 輸入g clone + SSH路徑
- 比如我們輸入g clone [email protected]:KevinAshen/Cooperative-Learning.git
- 此時就會出現一個倉庫文件夾,裏面應該有一個.git文件(隱藏文件)以及一個ReadMe
- 下一步切記:一定要在終端cd到那個倉庫文件夾裏!!!(可以看如果前面顯示終端名master的話說明已經進入正確位置)
- 此時,我們有了本地的倉庫了,該倉庫已經和GitHub上的遠程倉庫鏈接
- 我們其實每次敲代碼都是在本地倉庫裏,然後要將他上傳到遠程倉庫,包括我們進行的分支切換都是本地的,這裏其實已經包括了一個隱患,下面會提到
一人建一個分支嘍
- 現在A需要修建自己的分支來作爲自己代碼的分支
- 指令:git checkout -b 分支名 (checkout是跳轉分支,加上-b代表如果不存在直接新建)
- 比如我們輸入git checkout -b branchA
- 所謂切換分支其實在某些角度上就意味着是一個新的倉庫了,比如你在主分支裏新建了工程,不做任何操作,直接切換到另一個分支,該工程在文件夾裏直接沒了,而你沒有保存,在你返回主分支的時候它也不會出現,可能你一整天的工作都白費了
- 但是也不用太擔心,git如果你沒做好保存工作會阻止你的自取滅亡行爲
- 此時就是安裝oh my zsh的好處了 你能直接看到自己目前所在分支
- 現在,我們打開在這裏直接新建工程
- 爲了讓任何一個人都看得懂,我新建的是一個C語言工程,讓哪怕不是學習iOS開發的也看得懂
新建工程+簡單的上傳指令
- 我們打開Xcode,在本地倉庫新建一個C語言工程,取名爲Cooperative-LearningTest
- 此時我們還是在branchA分支哦,牢記
- 任何人,任何時候都不應該對master分支下建工程,寫代碼,而是應該在自己對分支寫,最後合到主分支,很重要很重要
- 然後打開終端,輸入g status (查看倉庫狀態)
- 這條指令極其有用,如果你追求謹慎的話,應該在每一個操作到前後都輸入這條指令,查看狀態,小心駛得萬年船,一旦刪庫就GG
- 這個時候會羅列出你到等待提交的新文件有那些那些
- 使用add指令將這些添加到待提交區(自己取得名字。。。)
- g add . 會讓所有爲提交文件都被添加,也可以g add + 文件路徑來提交個別的
- 爲什麼不直接所有都上傳,因爲可能有的代碼你才寫了一半不想直接上傳
- 如果這種情況的話,可以使用git stash //保存工作現場
- 比如我在這個工程裏寫點代碼,此時使用git status查看狀態,會顯示該文件modified(已修改)
- 之後使用git stash代碼,你之前寫的在編譯器上都看不到了,算是被暫存了,可以使用git stash list查看,用git stash pop取出來
- add後下一步是commit
- git commit -m “提交備註”
- commit等於是將等待區的代碼提交到本地倉庫
- commit之後就是push
- git push origin + 分支名
- 此時就是git push origin branchA(這裏很關鍵,如果你習慣使用GitHub提交代碼,就是沒試過合作開發,那這裏你會很習慣的打出git push origin master,依然牢記一個原則,絕對絕對不要在master分支進行操作)
- push相當於就是把遠端