<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
使用命令:git branch branchname commitHash
。
我們現在本地庫中只有一個 master
分支,並且在 master
分支有三個提交歷史。
需求:建立一個 testing
分支,並且testing
分支指向 master
分支第二個版本。
# 1.檢視提交歷史記錄 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檔案 # 2.建立testing分支 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git branch testing f72a9fe # 3.檢視提交歷史記錄,此時我們還在master分支上 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git log --graph --oneline * b97ccfd (HEAD -> master) 第3次提交,新增內容:branch test v3 * f72a9fe (testing) 第2次提交,新增內容:branch test v2 * fa2439a 第1次提交,新增readme.txt檔案 # 4.切換到testing分支 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git checkout testing Switched to branch 'testing' L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git log --graph --oneline * f72a9fe (HEAD -> testing) 第2次提交,新增內容:branch test v2 * fa2439a 第1次提交,新增readme.txt檔案 # 5.再來檢視readme.txt檔案內容 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ cat readme.txt branch test v1 branch test v2
如上,我們看到新建立的 testing
分支,建立在master
分支的第二個版本上了。
HEAD
指標的移動狀態如下圖:
執行git branch testing f72a9fe
命令,建立testing
分支後:
執行git checkout testing
命令,切換分之後:
總結:
在日常工作中,我們可以這樣的操作,切換到之前的版本,或者其他人之前寫過的版本。我們把自習需要的程式碼進行儲存,然後就可以在切換到自己開發的分支上,應用這些程式碼,同時把剛才建立的分支刪除掉即可。
(該操作在工作中非常的實用)
git checkout -b branchname commit-Hash
命令,
能否代替下面兩個命令:
git branch branchname commitHash
git checkout branchname
答案是可以的。
範例如下:
# 1.檢視本地庫中所有的分支 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git branch * master # 2.檢視當前分支的提交歷史 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檔案 # 3.建立testing分支,並切換 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git checkout -b testing f72a9fe Switched to a new branch 'testing' # 4.檢視testing分支的提交歷史 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git log --oneline f72a9fe (HEAD -> testing) 第2次提交,新增內容:branch test v2 fa2439a 第1次提交,新增readme.txt檔案 # 5.檢視readme.txt是否是V2版本 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ cat readme.txt branch test v1 branch test v2
檢視當前版本庫的如上,此刻正在 testing
分支的上工作,在 readme.txt
檔案在第二個版本。
需求:我需要在 testing
分支的上,修改 readme.txt
檔案,並提交新版本。
# 1.檢視版本庫狀態 # 分支情況 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git branch master * testing # 分支的提交歷史 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git log --oneline f72a9fe (HEAD -> testing) 第2次提交,新增內容:branch test v2 fa2439a 第1次提交,新增readme.txt檔案 # 2.修改readme.txt檔案並提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ echo "branch test v333 testing" >> readme.txt L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git commit -a -m 'testing 分支的提交' warning: LF will be replaced by CRLF in readme.txt. The file will have its original line endings in your working directory [testing 7ba443e] testing 分支的提交 1 file changed, 1 insertion(+) # 3.檢視testing分支歷史提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git log --oneline --graph * 7ba443e (HEAD -> testing) testing 分支的提交 * f72a9fe 第2次提交,新增內容:branch test v2 * fa2439a 第1次提交,新增readme.txt檔案 # 4.檢視所有分支的歷史提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git log --oneline --graph --all * 7ba443e (HEAD -> testing) testing 分支的提交 | * b97ccfd (master) 第3次提交,新增內容:branch test v3 |/ * f72a9fe 第2次提交,新增內容:branch test v2 * fa2439a 第1次提交,新增readme.txt檔案
我們可以看到,現在這個專案的提交歷史已經產生了分叉。
在實際工作中,是因為你建立了一個新分支,並切換過去進行了一些工作,可能隨後又切換回 master 分支進行了另外一些工作,這樣針對的是不同分支進行改動,就會在工作目錄中產生專案的分叉歷史。
你可以在不同分支間不斷地來回切換和工作,並在時機成熟時將它們合併起來。 而所有這些工作,你需要的命令只有 branch
、checkout
和 commit
。
此時 HEAD
指標的狀態如下圖:
由於 Git 的分支實質上僅是包含,所指物件校驗和(長度為 40 的 SHA-1 值字串)的檔案,所以它的建立和銷燬都異常高效。 建立一個新分支就相當於往一個檔案中寫入 41 個位元組(40 個字元和 1 個換行符),如此的簡單能不快嗎。
這裡簡單說明一下:
# 1.檢視.git/refs/heads目錄 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ ll .git/refs/heads/ total 2 -rw-r--r-- 1 L 197121 41 4月 16 22:07 master -rw-r--r-- 1 L 197121 41 4月 17 11:26 testing # 可以看到.git/refs/heads目錄存放的是版本庫中的分支。 # 2.檢視testing檔案只呢箇中的內容給 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ cat .git/refs/heads/testing 7ba443e4f6591631af4276bd3aa7356ff0f61fac # 可以看到是一個提交的索引,對比上圖中的`7ba443e`提交,你就明白了。 # 3.在往深說一點,檢視.git/HEAD檔案 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ cat .git/HEAD ref: refs/heads/testing # .git/HEAD檔案就是之前說的HEAD指標,指向了當前正在工作的分支。 # 是不是一切都非常的簡單高效。
這與過去大多數版本控制系統形成了鮮明的對比,它們在建立分支時,將所有的專案檔案都複製一遍,並儲存到一個特定的目錄。 完成這樣繁瑣的過程通常需要好幾秒鐘,有時甚至需要好幾分鐘。所需時間的長短,完全取決於專案的規模。
而在 Git 中,任何規模的專案都能在瞬間建立新分支。 同時,由於每次提交都會記錄父物件,所以尋找恰當的合併基礎(即共同祖先)也是同樣的簡單和高效。 這些高效的特性使得 Git 鼓勵開發人員頻繁地建立和使用分支。
到此這篇關於Git基礎學習之分支操作的範例詳解的文章就介紹到這了,更多相關Git分支操作內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援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