1. 程式人生 > >git 關於分支的操作

git 關於分支的操作

問題一:什麼是分支,如何理解分支
背景:如何理解方才知道如何操作分支的操作
在其他人的部落格中都有圖: 將其他分支上工作好的提交(這裡的HEAD,master 都在提交狀態後的,跟暫存區沒幹系)這裡的分支在提交後形成的git add 不會對分支有影響。
圖一 在這裡插入圖片描述
問題二:如何建立一個分支,並且切換到該分支工作
關鍵字:建立分支,切換分支
從當前的位置建立一個分支:git branch dev
然後在切換分支:git checkout dev
然後使用git branch 檢視分支
在這裡插入圖片描述
問題三:
如何合併分支
git merge命令用於合併指定分支到當前分支。
將其他分支工作檔案合到當前分支中。
這裡請參考:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000 廖雪峰的網站git 分支教程。
分支刪除操作:git branch -d branchname(分支名);
問題四 :分支衝突問題如何解決
問題描述:
在分支的工作中,當兩個分支修改了同一個檔案,而後將分支進行合併,必然出現問題。
在這裡插入圖片描述
解決方法:解決衝突的檔案即可

補充如何看衝突的內容

<<<<<<HEAD 是你當前所在分支的提交檔案
這裡的內容是你的提交
=======分割線
這裡的內容是另一分支的提交
>>>>>>>>>feature

步驟一:兩個分支的修改提交掉。然後,使用
命令:
git merge 另一分支名
進行合併,但是出現衝突
在這裡插入圖片描述
如何解決:
步驟二:在出現以上衝突後,開啟衝突檔案, 開啟進行修改

在這裡插入圖片描述
步驟三:修改好,儲存檔案。再次提交掉就可以
在這裡插入圖片描述
在這裡插入圖片描述
經過以上操作,檔案就和完成了,此時可以刪掉另外一分支了。

補充有一點:有時候,提交的合併使用fast forward 的模式
效果是
如下圖的兩個效果
在這裡插入圖片描述
這是使用Fast Forward 的模式合併形成效果,他只是將master的指標調到dev的位置了。
這個例子:開發一直在master分支進行,但忽然有一個新的想法,於是新建了一個develop的分支,並在其上進行一系列提交,完成時,回到 master分支,此時,master分支在建立develop分支之後並未產生任何新的commit。這樣才會產生fast forward模式
以上講了這麼多:啟用和禁用ff 模式的區別到底是什麼
上圖就都知道了:
使用git merge --no-ff -m “” 分支
在這裡插入圖片描述
很明顯:可以有添加了commit 點,有保留了分支記錄
使用fast forward的模式
在這裡插入圖片描述
很明顯:沒有分支的記錄,好像就是在master分支上修改(實際在dev 分支修改然後merge 到master但是沒有展示出來這就是區別點)

哭:看人家的描述,還是沒有圖的展示效果明顯。

問題五:
執行了git merge 分支的狀況如何?
解決:在分支合併了後,當前分支肯定是將來兩個分支合併的內容,但是用來來合併的分支,並沒有變動的這裡的用來合併的分支依然存在。
在這裡插入圖片描述
問題六
如何將當前的分支工作儲存下來,然後切換到另一份分支進行工作,而後在恢復。
關鍵字:儲存當前工作區,檔案可以add 但是不能被提交
問題的前因後果,一半人是不懂的
第一:在我們切換分支操作的時候,必許將當前分支進行提交,否則不能進行切換。
在這裡插入圖片描述
這裡指明瞭,切換分支前要將本地檔案給提交掉。
但是,許多情況下,當前工作沒有做完(不能提交,提交會有記錄,別人以為你做完了,這是同步到遠端伺服器的),有必須切換分支。
這是使用 stash空間 將當前工作空間存起來,等下次分支切換完成後再彈出來。
操作:
儲存當前工作區:
git stash
彈出當前工作區:git stash pop
在這裡插入圖片描述
這裡也可以使用兩步,彈出當前工作區,但是不刪除stash空間中的內容。
使用git stash list 檢視stash 中工作區列表。
使用:git stash drop/apply [email protected]{0} 刪除/恢復制定stash到工作區。
練習使用:git stash
問題一:當前分支中若有 多個stash ,在彈出一個stash之前必須將工作clear.
即:當前工作區中如果有工作必須提交掉,或者 stash 起來。
在這裡插入圖片描述
補充點
問題七如何刪除一個沒有merge 過的分支
背景:如何刪除一個有了操作的分支(分支沒有操作當然可以直接刪除),沒有merge
用git branch -D 分支名 ----大D強行刪除
補充:在刪除時,在當前分支不可以刪除當前你所在位置的分支(你自己在當前分支中),必須執行(chekout 分支),才能刪除。如果不能checkout 分支,請使用stash後,然後使用(checkout 分支)。
問題八:如何檢視遠端庫的資訊
解決方法:git remote
(Git自動把本地的master分支和遠端的master分支對應起來了,並且,遠端倉庫的預設名稱是origin。)
git remote -v 顯示更多資訊
在這裡插入圖片描述
問題九:如何檢視分支的合併操作圖示?
問題分析,使用圖形化更清晰表示分支合併操作情況
關鍵字:當前的分支的操作歷史,分支合併圖示。
git log --graph
在這裡插入圖片描述
不使用:git log
在這裡插入圖片描述

結論:不使用 --graph 總體上沒有區別,但是用圖形形象的看出分支(哪裡岔開,哪裡合併)操作。

進階補充階段

問題一:如何刪除遠端庫中的分支呢?

步驟一:檢視所有分支
git branch -a
步驟二:刪除遠端分支
git push origin --delete 分支名
在這裡插入圖片描述