Github使用系列(三):Github分支操作
02-01
Github分支操作
基本操作
- 定位到需要創建分支的本地倉庫
git branch <分支名>
創建分支git checkout <分支名>
切換到分支git push <遠程地址別名> <分支名>
推送分支到遠程倉庫git merge <分支名>
合併分支代碼
場景演示1 簡單的分支創建與合併
- 定位到test4,並打開文件夾資源管理器
git branch dev1
創建分支git checkout dev1
本地倉庫切換到dev1分支touch dev1.html
git add dev1.html
git commit -m create dev1.html
- 完成: 在分支中創建新文件並提交
- 查看文件夾test4, 此時多了一個新文件: dev1.html
checkout master
切換回master分支- 查看資源管理器,此時顯示的是master分支的內容,所以就沒有dev1.html文件了
git push origin dev1
推送分支dev1到test4的遠程倉庫中- 查看Github,發現現在有兩個分支了:master,dev1
git checkout master
切換到master分支,準備合併dev1.htmlgit merge dev1
此時test4本地倉庫的master分支也有了dev1.htmlgit push origin master
推送master分支到遠程倉庫- 刷新Github頁面後,master分支也有了dev1.html文件
場景演示2 多人協作,代碼衝突時的合併與回滾
假設有兩個程序員tony,mary在操作同一個項目test4,他們各自從遠程倉庫中克隆了一個本地倉庫。並且各自建立了一個分支:branchTony, branchMary
- tony:
git checkout branchTony
- tony: 編輯文件a.html. 在第一行輸入"tony"
- tony:
git add a. html
git commit -m edit a
- tony:
git checkout master
- tony:
git merge branchTony
合併分支的更新到master - tony:
git push origin master
推送master分支 - 查看遠程倉庫master分支的a.html, 內容是tony此時,test4遠程倉庫中的master分支的a.html已經被tony修改了。但是mary並不知情
- mary:
git checkout branchMary
- mary: 編輯文件a.html. 在第一行輸入「mary」
- mary:
git add a. html
git commit -m 」edit a「
- mary:
git checkout master
- mary:
git pull origin master
mary意識到遠程倉庫的master分支可能已經被人修改了,為了安全起見,先獲取一下最新代碼 - mary:
git merge branckMary
報錯:a.html中有衝突,自動merge失敗,不能merge打開a.html, 會發現有如下內容。其中HEAD到 =======之間的內容是master中最新更新的內容, =======到branchMary之間的就是mary更新的內容。可以根據實際需要進行手動合併。
======= mary>>>>>>> branchMary<<<<<<< HEAD
tony
- mary: 手動合併代碼
tony maryn
- mary:
git commit -am 」merge ok「
處理完衝突後,提交 - mary: git push origin master 推送到遠程倉庫
- 查看遠程倉庫的a.html, 內容是tony, mary過了一會兒,mary發現tony的更新才是對的,需要把自己推送的代碼回滾到tony的最新版本
- mary:
git log
查看tony最新推送代碼的commit id。其實就是在決定要回滾到哪個版本 - mary:
git revert <commit id>
報錯:不能revert <commit id> ........... 提示:文件有衝突 提示: revert時有衝突是很正常的,不用擔心 - mary: 打開 a.html. 解決衝突。把「mary」刪掉,只留下「tony」,因為「tony」才是正確的代碼
- mary:
git add a.html
- mary:
git commit -am "revert to tony"
- mary :
git push origin master
- mary: 查看遠程倉庫的a.html現在只有「tony」了。同時,commits中又多了一條mary的推送記錄
幫助命令
git log
查看每次提交的日誌,按回車可以看更多每條記錄都有一個commit id, 它和Github中的提交記錄的id是對應的(點擊commits選項可以查看)
推薦閱讀:
※圖文詳解如何利用Git+Github進行團隊協作開發
※有什麼高質量的現代C++風格的開源代碼?
※機器之心GitHub項目:從零開始用TensorFlow搭建卷積神經網路
※GitHub|2017年 倫敦深度學習研討會資料庫(附資源)
※這是github被中間人攻擊了嗎?
TAG:GitHub |