之前學習了git管理個人倉庫及傳送遠程倉庫和獲取遠程倉庫,下面就開始探索git的強大功能------分支管理
在版本回退和時光機裏,我們知道了master分支是一條線,還有一個指針HEAD來指向當前分支
在實際工作中,master分支也就是主分支,記錄着最終的開發版本,如果多人協作開發,就需要每個人創建自己的分支dev,在各自分支上開發完之後,再與master分支合併即可。
1.創建dev分支,然後切換到dev分支 git checkout -b dev 相當於兩條命令(1) git branch dev (2) git checkout dev
2.用git branch 查看分支狀態,前面帶*號的爲當前HEAD指向的分支
3.在分支dev裏修改後,提交 git add readme.txt git commit -m "branch" 現在dev分支的工作完成
4.切換回master分支 git checkout master
5. 最後把dev分支的成果合併到master分支 git merge dev 默認採用fast-forward方式,這種快合併方式在log裏看不到合併的跡象,可以用 --no-ff方式
6.可以查看合併log git log --graph 之後再刪除分支dev就好了, git branch -d dev 強行刪除某條分支的話 git branch -D dev
如果出現版本衝突怎麼辦?
也就是dev上對某個文件進行了修改,master上對文件也進行了修改,現在你要把dev上的結果合併到master分支上,git就會懵逼了,我到底選擇哪次的修改
解決衝突其實很簡單
1. git status 查看是哪個文件衝突了
2.cat readme.txt查看文件中哪裏衝突了,git會用<<<<<<<,=======
,>>>>>>>
標記出不同分支的內容
3. 再提交就ok啦!git add readme.txt git commit -m "conflict fix"
如果你正在自己的dev分支上開發某個功能,突然老闆讓你解決一個bug,但你正開發到一半,不能提交,怎麼辦?
其實很簡單
1.在自己的dev分支上,git stash 保存當前工作現場
2.切換到master分支上,創建bug分支,解決完之後,合併到master分支
3.然後回到自己的dev分支,git checkout dev 再 git stash list 會發現當時保存的現場
4.git stash pop 恢復的同時把stash內容給刪了(也可以先 git stash stash apply 再git stash drop)
5.之後再運行 git stash list 會發現沒有保存的現場了
git remote 查看遠程庫的信息
git remote -v 查看遠程庫的詳細信息,包括遠程庫的地址
git push origin master 推送master 分支到遠程庫
git push origin dev 推送dev 分支到遠程庫
如果你向origin/dev推送的時候,別的小夥伴已經向origin/dev推送過了怎麼辦?
其實很簡單,和解決衝突類似
1. git pull 獲取到最新的提交
2. 本地解決衝突,和上面提到的版本衝突類似
3.再上傳到遠程庫