<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Git 是怎麼建立新分支的呢?
很簡單,就是要建立一個可以移動的新的指標。
比如,建立一個testing
分支, 你需要使用命令:git branch testing
。
範例:
# 1.檢視本地版本庫歷史提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git log --oneline b97ccfd (HEAD -> master) 第3次提交,新增內容:branch test v3 f72a9fe 第2次提交,新增內容: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次提交,新增內容:branch test v3 f72a9fe 第2次提交,新增內容:branch test v2 fa2439a 第1次提交,新增readme.txt檔案
可以看到(HEAD -> master, testing)
,說明本地版本庫中,已經多了一個testing
分支。
如上操作,會在當前所在的提交物件上建立一個新的指標。
如下圖:
那麼Git 又是怎麼知道當前在哪一個分支上呢? 也很簡單,它有一個名為 HEAD
的特殊指標,HEAD
指向當前所在的本地分支上。
在本例中,是仍然在 master
分支上。 因為 git branch
命令僅僅 建立 一個新分支,並不會自動切換到新分支中去。
因為上面紀錄檔資訊:(HEAD -> master, testing)
,也說明HEAD
指標指向的是master
分支。
如下圖所示:
如圖所示,當前 master
和 testing
分支均指向校驗和以 b97ccfd
開頭的提交物件。
執行命令:git branch
。不用加任何引數。
如下圖:
該命令會列出當前本地版本庫中存在的所有分支,且當前正在工作的分支前會顯示*
。
和命令列路徑後面( )
中的內容相對應。
要切換到一個已存在的分支,你需要使用 git checkout branchname
命令。
我們現在切換到新建立的 testing
分支去:
# 1.切換到testing分支上 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git checkout testing Switched to branch 'testing' # 提示:切換到分支「testing」 # 2.檢視當前正在工作的分支。 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) # 這裡 $ git branch master * testing # 這裡
現在 HEAD
就指向 testing
分支了。(即:HEAD
會指向當前所在的分支)
提示:
在建立分支的時候,新增-b
選項,可以直接切換到新建立的分支上。
例如:git checkout -b testing
該命令等價於如下兩條命令:
git branch testing
:建立分支。git checkout testing
:切換分支。使用git branch -v
命令可以檢視,所有分支的最後一次提交。
我們在testing
分支修改readme.txt
檔案,再進行一次提交。
# 1.檢視當前工作的分支 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次提交,新增內容: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次提交,新增內容:branch test v4 1 file changed, 1 insertion(+) # 3.檢視所有分支的最後一次提價 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git branch -v master b97ccfd 第3次提交,新增內容:branch test v3 * testing 25f0827 第4次提交,新增內容:branch test v4 # 4.檢視版本庫歷史提交記錄 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git log --graph --oneline * 25f0827 (HEAD -> testing) 第4次提交,新增內容:branch test v4 * b97ccfd (master) 第3次提交,新增內容:branch test v3 * f72a9fe 第2次提交,新增內容:branch test v2 * fa2439a 第1次提交,新增readme.txt檔案
通過上面的紀錄檔資訊,此時 HEAD
指標的狀態如下圖:
可以看到 HEAD
隨著在testing
分支上的提交操作,自動向前移動。
使用命令:git branch -d branchname
。
但是要注意的是:若要刪除某分支,必須要保證當前工作的分支,不能是該分支。
這個時候我們需要先切換回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
指標的狀態如下圖:
說明:git checkout master
這條命令做了兩件事。
是使 HEAD 指回 master
分支。
是將工作目錄中檔案,恢復成 master
分支所指向提交的快照內容。
在切換分支時,一定要注意你工作目錄裡的檔案會被改變,你的工作目錄會恢復到該分支最後一次提交時的樣子。如果 Git 不能幹淨利落地完成這個任務,它將禁止切換分支。(下面分支實戰中有詳細說明)
也就是說,你現在做修改的話,專案將始於 master
分支版本。 本質上來講,這就是忽略 testing
分支所做的修改,以便於向另一個方向進行開發。
繼續我們開始刪除 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”沒有合併到主分支,如果確定要刪除它,請執行git branch -D testing
命令。。
所以我們使用-D
選項刪除 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次提交,新增內容:branch test v3 * f72a9fe 第2次提交,新增內容: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次提交,新增內容:branch test v4 b97ccfd (HEAD -> master) HEAD@{2}: checkout: moving from master to testing b97ccfd (HEAD -> master) HEAD@{3}: commit: 第3次提交,新增內容:branch test v3 f72a9fe HEAD@{4}: commit: 第2次提交,新增內容:branch test v2 fa2439a HEAD@{5}: commit (initial): 第1次提交,新增readme.txt檔案 # 可以看到只要HEAD移動過,所有歷史軌跡都會保留在Git版本庫中。 # (也就是.git/objects目錄中的檔案只能無限的增多,儲存了就不會刪除掉。)
提示:合併後的分支不僅無用,它的存在還會引起不必要的麻煩,一般都會刪除無用的分支。
以上就是Git基礎學習之分支基本操作詳解的詳細內容,更多關於Git分支基本操作的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45