1.1 概述
在 Git
中提交時(shí),會(huì)保存一個(gè) commit
對(duì)象,該對(duì)象包含一個(gè)指向暫存內(nèi)容快照的指針,包含本次提交的作者等相關(guān)的附屬信息,包含零個(gè)或者多個(gè)指向該提交對(duì)象的父對(duì)象指針;首次提交時(shí)沒有直接祖先的,普通提交有一個(gè)祖先,由兩個(gè)或者多個(gè)分支合并產(chǎn)生的提交則有多個(gè)祖先。
1.1.1 示例
在工作目錄中有三個(gè)文件,準(zhǔn)備將他們暫存后提交。暫存操作會(huì)對(duì)每一個(gè)文件計(jì)算校驗(yàn)和(SHA-1哈希串),然后把當(dāng)前版本的文件快照保存在 Git
倉(cāng)庫(kù)中(Git使用blob類型的對(duì)象存儲(chǔ)這些快照), 并將校驗(yàn)和加入暫存區(qū)域。 當(dāng)使用 git commit
新建一個(gè)提交對(duì)象前,Git 會(huì)先計(jì)算每一個(gè)子目錄的校驗(yàn)和嗎,然后在 Git
倉(cāng)庫(kù)中將這些目錄保存為樹(對(duì)象);之后 Git
創(chuàng)建的提交對(duì)象,除了包含提交信息外,還包含了指向整個(gè)樹對(duì)象的指針。這樣將來(lái)需要的時(shí)候,重現(xiàn)此次快照的內(nèi)容了。
$ git add text1.md text2.md tesxt3.md
$ git commit -m "init desc"
現(xiàn)在倉(cāng)庫(kù)中有了五個(gè)對(duì)象:三個(gè)文件表示快照內(nèi)容 blob
對(duì)象;一個(gè)記錄這目錄樹內(nèi)容和其中各個(gè)文件對(duì)應(yīng) blob
對(duì)象索引的 tree
對(duì)象;還有就是一個(gè)包含指向 tree
對(duì)象的索引和其他提交信息源數(shù)據(jù)的 commit
對(duì)象。
![](/d/20211017/9fc0177016bd1961ad15e00fcb4c53aa.gif)
修改后再次提交,這次提交的對(duì)象會(huì)包含上一個(gè)指向上次提交對(duì)象的指針。兩次提交后變成下面這樣。
![](/d/20211017/d40c932b6bab124db2b2953aadf38220.gif)
Git
中的分支,其實(shí)本質(zhì)上僅僅是個(gè)指向 commit
對(duì)象的可變指針。Git
會(huì)將 master
作為分支的默認(rèn)名字。若干次提交以后,其實(shí)已經(jīng)有一個(gè)指向最后一次提交對(duì)象的 master
分支,他在每次提交的時(shí)候都會(huì)向前移動(dòng)。
![](/d/20211017/ebd9a225bf78d52cd0b9c216c9518423.gif)
1.1.2 創(chuàng)建分支
使用命令 git branch
創(chuàng)建分支
![](/d/20211017/191f08ad34408d518315a0a94ed7e96d.gif)
Git
保存著一個(gè)名為 HEAD
的特別的指針。在 Git 中他是一個(gè)指向你正在工作中的本地分支的指針。運(yùn)行 git branch
命令,僅僅是建立了一個(gè)新的分支,但是不會(huì)自動(dòng)切換到這個(gè)新建的分支中。
![](/d/20211017/776b0981683f6eff9d87501ed57e903b.gif)
1.1.3 切換分支
使用命令 git checkout
切換分支:
![](/d/20211017/ad6d66cc42e860c21754a81a9c74304f.gif)
1.2 新建和合并
使用命令創(chuàng)建并切換分支
合并分支,將開發(fā)分支合并到 master
主分支中
$ git checkout master
$ git merge 開發(fā)分支>
刪除分支
解決沖突, =======
隔開的上半部分,是 HEAD
(即 master
分支,在運(yùn)行 merge
命令時(shí)所切換到的分支)中的內(nèi)容。下半部分是在開發(fā)分支的內(nèi)容。
HEAD:index.html
div id="footer">contact : email.support@github.com/div>
=======
div id="footer">
please contact us at support@github.com
/div>
>>>>>>> iss53:index.html
1.3 管理分支
列出所有的分支
列出各個(gè)分支最后一個(gè)提交對(duì)象的信息
1.4 遠(yuǎn)程分支
遠(yuǎn)程分支是對(duì)遠(yuǎn)程倉(cāng)庫(kù)中分支的索引。通過 git fetch origin
來(lái)同步遠(yuǎn)程服務(wù)器上的數(shù)據(jù)到本地。
推送本地的開發(fā)分支到遠(yuǎn)程
$ git push origin 開發(fā)分支名>
刪除遠(yuǎn)程分支
$ git push origin :開發(fā)分支名>
1.5 分支的擴(kuò)展
git rebase ing
到此這篇關(guān)于Git命令之分支詳解的文章就介紹到這了,更多相關(guān)Git命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 詳解Git合并分支的流程步驟
- git的遠(yuǎn)程分支的作用和本地分支有什么區(qū)別
- git push 本地項(xiàng)目推送到遠(yuǎn)程分支的方法(git命令版)
- git 將本地文件(夾)上傳到gitee指定分支的處理方法
- idea手動(dòng)刷新git分支的詳細(xì)教程