git branch 分支名
複制代碼
通過git branch 命令就可以快速創建一個本地分支,這個分支會基于當前提交對象創建一個指針。而這個命令隻會創建一個分支,并不會自動切換到新分支中,本例中我們是處于master分支中。
HEAD相當于一個标識,用來指向當前所在的分支
分支切換要想切換分支,就需要使用gIt checkout命令
//切換分支
% git checkout testing
//查看分支
% git branch -a
master
* testing
複制代碼
此時HEAD就指向testing分支了
當我們針對master分支和testing分支分别做修改,看看分支份分叉會變成什麼樣
可以看到兩個分支從一開始的位置走上了不同的道路
合并分支假如testing分支是你同事的分支,現在需要合到master分支然後push到遠程分支,那就需要使用merge命令進行合并
% git merge testing
複制代碼
此命令會将testing分支合并到當前分支中,我目前的分支是master,合并後兩個分支的代碼就到一起了,後續就可以基于master進行push或者繼續提交代碼。
合并後如果你不想要testing分支,可以将該分支進行删除
删除分支
git branch -d testing
複制代碼
假如你有兩個分支都對同一個文件進行了修改,當你将其中一個分支合并到另一個分支就會出現沖突
% git merge testing
Auto-merging test.md
CONFLICT (content): Merge conflict in test.md
複制代碼
因為testing分支和master分支都對test.md文件做了修改,當将testing分支合并到master分支時就會出現沖突
任何因包含合并沖突而有待解決的文件,都會以未合并狀态标識出來。 Git 會在有沖突的文件中加入标準的沖突解決标記,這樣你可以打開這些包含沖突的文件然後手動解決沖突。 出現沖突的文件會包含一些特殊區段,看起來像下面這個樣子:
sssssTEST
<<<<<<< HEAD
ssss
ssssssssasasa
=======
sss
ssssss
>>>>>>> testing
複制代碼
這表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因為你在運行 merge 命令的時候已經檢出到了這個分支)在這個區段的上半部分(======= 的上半部分),而 testing 分支所指示的版本在 ======= 的下半部分。 為了解決沖突,你必須選擇使用由 ======= 分割的兩部分中的一個,或者你也可以自行合并這些内容。 例如,你可以通過把這段内容換成下面的樣子來解決沖突:
sssssTEST
ssss
ssssssssasasa
ssssss
複制代碼
在你解決了所有文件裡的沖突之後,對每個文件使用 git add 命令來将其标記為沖突已解決。 一旦暫存這些原本有沖突的文件,Git 就會将它們标記為沖突已解決。
分支的管理查看所有分支
% git branch
* master
test
複制代碼
會顯示出所有分支,*号代表現在檢出的那一個分支(也就是說,當前 HEAD 指針所指向的分支)。
查看每一個分支最後提交
% git branch -v
* master bc5b518 [ahead 5] sss
test 1be830c ss
複制代碼
% git branch -vv
master d230c50 [origin/master: ahead 6] ss
* test 1be830c ss
複制代碼
此時可以看到,master對應的遠程分支是origin/master,test還沒有和遠程分支建立關聯
設置已有的本地分支跟蹤一個遠程分支
% git branch -u origin/master
% git branch -vv
master d230c50 [origin/master: ahead 6] ss
* test 1be830c [origin/master] ss
複制代碼
該命令會将當前所使用的本地分支與一個遠程分支建立映射關系,當然此命令也可以作為修改對應的遠程分支
删除遠程分支
% git push origin --delete 遠程分支名
複制代碼
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!