Git基礎(chǔ)學(xué)習(xí)之分支基本操作詳解
1、創(chuàng)建分支
(1)創(chuàng)建分支
Git 是怎么創(chuàng)建新分支的呢?
很簡單,就是要創(chuàng)建一個可以移動的新的指針。
比如,創(chuàng)建一個testing分支, 你需要使用命令:git branch testing。
示例:
# 1.查看本地版本庫歷史提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git log --oneline b97ccfd (HEAD -> master) 第3次提交,新增內(nèi)容:branch test v3 f72a9fe 第2次提交,新增內(nèi)容:branch test v2 fa2439a 第1次提交,新增readme.txt文件 # 2.新建分支testing L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git branch testing # 3.再次查看本地版本庫歷史提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git log --oneline b97ccfd (HEAD -> master, testing) 第3次提交,新增內(nèi)容:branch test v3 f72a9fe 第2次提交,新增內(nèi)容:branch test v2 fa2439a 第1次提交,新增readme.txt文件
可以看到(HEAD -> master, testing),說明本地版本庫中,已經(jīng)多了一個testing分支。
(2)圖示理解
如上操作,會在當(dāng)前所在的提交對象上創(chuàng)建一個新的指針。
如下圖:

那么Git 又是怎么知道當(dāng)前在哪一個分支上呢? 也很簡單,它有一個名為 HEAD 的特殊指針,HEAD指向當(dāng)前所在的本地分支上。
在本例中,是仍然在 master 分支上。 因?yàn)?nbsp;git branch 命令僅僅 創(chuàng)建 一個新分支,并不會自動切換到新分支中去。
因?yàn)樯厦嫒罩拘畔ⅲ?code>(HEAD -> master, testing),也說明HEAD指針指向的是master分支。
如下圖所示:

如圖所示,當(dāng)前 master 和 testing 分支均指向校驗(yàn)和以 b97ccfd 開頭的提交對象。
2、查看分支列表
執(zhí)行命令:git branch。不用加任何參數(shù)。
如下圖:

該命令會列出當(dāng)前本地版本庫中存在的所有分支,且當(dāng)前正在工作的分支前會顯示*。
和命令行路徑后面( )中的內(nèi)容相對應(yīng)。
3、分支切換
要切換到一個已存在的分支,你需要使用 git checkout branchname 命令。
我們現(xiàn)在切換到新創(chuàng)建的 testing 分支去:
# 1.切換到testing分支上 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git checkout testing Switched to branch 'testing' # 提示:切換到分支“testing” # 2.查看當(dāng)前正在工作的分支。 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) # 這里 $ git branch master * testing # 這里
現(xiàn)在 HEAD 就指向 testing 分支了。(即:HEAD 會指向當(dāng)前所在的分支)

提示:
在創(chuàng)建分支的時候,添加-b選項(xiàng),可以直接切換到新創(chuàng)建的分支上。
例如:git checkout -b testing
該命令等價于如下兩條命令:
git branch testing:創(chuàng)建分支。git checkout testing:切換分支。
4、查看所有分支的最后一個提交
使用git branch -v命令可以查看,所有分支的最后一次提交。
我們在testing 分支修改readme.txt文件,再進(jìn)行一次提交。
# 1.查看當(dāng)前工作的分支 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git branch master * testing # 2.修改文件,提交新版本 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ echo "branch test v4" >> readme.txt L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git commit -a -m '第4次提交,新增內(nèi)容:branch test v4' warning: LF will be replaced by CRLF in readme.txt. The file will have its original line endings in your working directory [testing 25f0827] 第4次提交,新增內(nèi)容:branch test v4 1 file changed, 1 insertion(+) # 3.查看所有分支的最后一次提價 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git branch -v master b97ccfd 第3次提交,新增內(nèi)容:branch test v3 * testing 25f0827 第4次提交,新增內(nèi)容:branch test v4 # 4.查看版本庫歷史提交記錄 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git log --graph --oneline * 25f0827 (HEAD -> testing) 第4次提交,新增內(nèi)容:branch test v4 * b97ccfd (master) 第3次提交,新增內(nèi)容:branch test v3 * f72a9fe 第2次提交,新增內(nèi)容:branch test v2 * fa2439a 第1次提交,新增readme.txt文件
通過上面的日志信息,此時 HEAD 指針的狀態(tài)如下圖:

可以看到 HEAD 隨著在testing 分支上的提交操作,自動向前移動。
5、刪除分支
使用命令:git branch -d branchname。
但是要注意的是:若要刪除某分支,必須要保證當(dāng)前工作的分支,不能是該分支。
這個時候我們需要先切換回master分支。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git checkout master Switched to branch 'master' L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git branch * master testing
此時 HEAD 指針的狀態(tài)如下圖:

說明:git checkout master這條命令做了兩件事。
是使 HEAD 指回 master 分支。
是將工作目錄中文件,恢復(fù)成 master 分支所指向提交的快照內(nèi)容。
在切換分支時,一定要注意你工作目錄里的文件會被改變,你的工作目錄會恢復(fù)到該分支最后一次提交時的樣子。如果 Git 不能干凈利落地完成這個任務(wù),它將禁止切換分支。(下面分支實(shí)戰(zhàn)中有詳細(xì)說明)
也就是說,你現(xiàn)在做修改的話,項(xiàng)目將始于 master 分支版本。 本質(zhì)上來講,這就是忽略 testing分支所做的修改,以便于向另一個方向進(jìn)行開發(fā)。
繼續(xù)我們開始刪除 testing 分支。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git branch -d testing error: The branch 'testing' is not fully merged. If you are sure you want to delete it, run 'git branch -D testing'.
提示你:分支“testing”沒有合并到主分支,如果確定要刪除它,請運(yùn)行git branch -D testing命令。。
所以我們使用-D選項(xiàng)刪除 testing 分支。
# 1.刪除分支
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git branch -D testing
Deleted branch testing (was 25f0827).
# 2.查看本地庫中的分支,就只有master分支了
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git branch
* master
# 3.查看提交歷史記錄
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git log --graph --oneline
* b97ccfd (HEAD -> master) 第3次提交,新增內(nèi)容:branch test v3
* f72a9fe 第2次提交,新增內(nèi)容:branch test v2
* fa2439a 第1次提交,新增readme.txt文件
# 可以看到對testing分支的修改,只要沒有合并,對master分支是沒有影響的。
# 4.查看可回退的提交歷史記錄
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git reflog
b97ccfd (HEAD -> master) HEAD@{0}: checkout: moving from testing to master
25f0827 HEAD@{1}: commit: 第4次提交,新增內(nèi)容:branch test v4
b97ccfd (HEAD -> master) HEAD@{2}: checkout: moving from master to testing
b97ccfd (HEAD -> master) HEAD@{3}: commit: 第3次提交,新增內(nèi)容:branch test v3
f72a9fe HEAD@{4}: commit: 第2次提交,新增內(nèi)容:branch test v2
fa2439a HEAD@{5}: commit (initial): 第1次提交,新增readme.txt文件
# 可以看到只要HEAD移動過,所有歷史軌跡都會保留在Git版本庫中。
# (也就是.git/objects目錄中的文件只能無限的增多,存儲了就不會刪除掉。)
提示:合并后的分支不僅無用,它的存在還會引起不必要的麻煩,一般都會刪除無用的分支。
以上就是Git基礎(chǔ)學(xué)習(xí)之分支基本操作詳解的詳細(xì)內(nèi)容,更多關(guān)于Git分支基本操作的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在 WordPress 的頁眉(header)和頁腳(footer)添加代碼方法
這篇文章主要介紹了在 WordPress 的頁眉(header)和頁腳(footer)添加代碼方法2021-09-09
對Web開發(fā)人員有用的8個網(wǎng)站小結(jié)
本文是由比利時的Web開發(fā)人員Jean-Baptiste Jung分享的,Jung還在《Web開發(fā)/設(shè)計人員應(yīng)當(dāng)知道的15個網(wǎng)站》這篇文章中推薦了15個相關(guān)網(wǎng)站2011-05-05
詳細(xì)講解計算機(jī)網(wǎng)絡(luò)——應(yīng)用層
這不同類型的網(wǎng)絡(luò)應(yīng)用有不同的通信規(guī)則,因此應(yīng)用層協(xié)議是多種多樣的,比如DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS等協(xié)議都是用于解決其各自的一類問題2021-08-08
如何使用VSCode插件Remote-Tunnels連接服務(wù)器
本文介紹使用Remote?-?Tunnels連接服務(wù)器,該方法需要遠(yuǎn)程服務(wù)器有流暢的網(wǎng)絡(luò)環(huán)境,它使用微軟的服務(wù)來建立隧道,需要登錄GitHub,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11
性能測試監(jiān)控網(wǎng)絡(luò)吞吐量過程詳解
這篇文章是關(guān)于性能的文章,主要介紹了性能測試中測試監(jiān)控網(wǎng)絡(luò)吞吐量過程,文中給了詳細(xì)的示例分析,有需要的朋友可以借鑒參考下2021-09-09

