欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Git基礎(chǔ)學(xué)習(xí)之分支操作的示例詳解

 更新時(shí)間:2022年10月25日 14:19:41   作者:繁華似錦Fighting  
這篇文章主要為大家詳細(xì)介紹了Git基礎(chǔ)學(xué)習(xí)中分支的基本操作,文中的示例代碼講解詳細(xì),對(duì)我們了解Git有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1.新建一個(gè)分支并且使分支指向指定的提交對(duì)象

使用命令:git branch branchname commitHash

我們現(xiàn)在本地庫(kù)中只有一個(gè) master 分支,并且在 master 分支有三個(gè)提交歷史。

需求:創(chuàng)建一個(gè) testing 分支,并且testing 分支指向 master 分支第二個(gè)版本。

# 1.查看提交歷史記錄
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文件

# 2.創(chuàng)建testing分支
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git branch testing f72a9fe

# 3.查看提交歷史記錄,此時(shí)我們還在master分支上
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git log --graph --oneline
* b97ccfd (HEAD -> master) 第3次提交,新增內(nèi)容:branch test v3
* f72a9fe (testing) 第2次提交,新增內(nèi)容: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次提交,新增內(nèi)容:branch test v2
* fa2439a 第1次提交,新增readme.txt文件

# 5.再來(lái)查看readme.txt文件內(nèi)容
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)
$ cat readme.txt
branch test v1
branch test v2

如上,我們看到新創(chuàng)建的 testing 分支,創(chuàng)建在master分支的第二個(gè)版本上了。

HEAD 指針的移動(dòng)狀態(tài)如下圖:

執(zhí)行git branch testing f72a9fe命令,創(chuàng)建testing 分支后:

執(zhí)行git checkout testing命令,切換分之后:

總結(jié):

在日常工作中,我們可以這樣的操作,切換到之前的版本,或者其他人之前寫(xiě)過(guò)的版本。我們把自習(xí)需要的代碼進(jìn)行保存,然后就可以在切換到自己開(kāi)發(fā)的分支上,應(yīng)用這些代碼,同時(shí)把剛才創(chuàng)建的分支刪除掉即可。

(該操作在工作中非常的實(shí)用)

2.思考

git checkout -b branchname commit-Hash命令,

能否代替下面兩個(gè)命令:

  • git branch branchname commitHash
  • git checkout branchname

答案是可以的。

示例如下:

# 1.查看本地庫(kù)中所有的分支
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git branch
* master

# 2.查看當(dāng)前分支的提交歷史
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文件

# 3.創(chuàng)建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次提交,新增內(nèi)容: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

3.項(xiàng)目分叉歷史的形成

查看當(dāng)前版本庫(kù)的如上,此刻正在 testing 分支的上工作,在 readme.txt 文件在第二個(gè)版本。

需求:我需要在 testing 分支的上,修改 readme.txt 文件,并提交新版本。

# 1.查看版本庫(kù)狀態(tài)
# 分支情況
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次提交,新增內(nèi)容: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次提交,新增內(nèi)容: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次提交,新增內(nèi)容:branch test v3
|/
* f72a9fe 第2次提交,新增內(nèi)容:branch test v2
* fa2439a 第1次提交,新增readme.txt文件

我們可以看到,現(xiàn)在這個(gè)項(xiàng)目的提交歷史已經(jīng)產(chǎn)生了分叉。

在實(shí)際工作中,是因?yàn)槟銊?chuàng)建了一個(gè)新分支,并切換過(guò)去進(jìn)行了一些工作,可能隨后又切換回 master 分支進(jìn)行了另外一些工作,這樣針對(duì)的是不同分支進(jìn)行改動(dòng),就會(huì)在工作目錄中產(chǎn)生項(xiàng)目的分叉歷史。

你可以在不同分支間不斷地來(lái)回切換和工作,并在時(shí)機(jī)成熟時(shí)將它們合并起來(lái)。 而所有這些工作,你需要的命令只有 branchcheckout 和 commit。

此時(shí) HEAD 指針的狀態(tài)如下圖:

4.分支的總結(jié)

由于 Git 的分支實(shí)質(zhì)上僅是包含,所指對(duì)象校驗(yàn)和(長(zhǎng)度為 40 的 SHA-1 值字符串)的文件,所以它的創(chuàng)建和銷毀都異常高效。 創(chuàng)建一個(gè)新分支就相當(dāng)于往一個(gè)文件中寫(xiě)入 41 個(gè)字節(jié)(40 個(gè)字符和 1 個(gè)換行符),如此的簡(jiǎn)單能不快嗎。

這里簡(jiǎn)單說(shuō)明一下:

# 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目錄存放的是版本庫(kù)中的分支。

# 2.查看testing文件只呢個(gè)中的內(nèi)容給
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)
$ cat .git/refs/heads/testing
7ba443e4f6591631af4276bd3aa7356ff0f61fac

# 可以看到是一個(gè)提交的索引,對(duì)比上圖中的`7ba443e`提交,你就明白了。

# 3.在往深說(shuō)一點(diǎn),查看.git/HEAD文件
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing)
$ cat .git/HEAD
ref: refs/heads/testing

# .git/HEAD文件就是之前說(shuō)的HEAD指針,指向了當(dāng)前正在工作的分支。
# 是不是一切都非常的簡(jiǎn)單高效。

這與過(guò)去大多數(shù)版本控制系統(tǒng)形成了鮮明的對(duì)比,它們?cè)趧?chuàng)建分支時(shí),將所有的項(xiàng)目文件都復(fù)制一遍,并保存到一個(gè)特定的目錄。 完成這樣繁瑣的過(guò)程通常需要好幾秒鐘,有時(shí)甚至需要好幾分鐘。所需時(shí)間的長(zhǎng)短,完全取決于項(xiàng)目的規(guī)模。

而在 Git 中,任何規(guī)模的項(xiàng)目都能在瞬間創(chuàng)建新分支。 同時(shí),由于每次提交都會(huì)記錄父對(duì)象,所以尋找恰當(dāng)?shù)暮喜⒒A(chǔ)(即共同祖先)也是同樣的簡(jiǎn)單和高效。 這些高效的特性使得 Git 鼓勵(lì)開(kāi)發(fā)人員頻繁地創(chuàng)建和使用分支。

到此這篇關(guān)于Git基礎(chǔ)學(xué)習(xí)之分支操作的示例詳解的文章就介紹到這了,更多相關(guān)Git分支操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spark?GraphX?分布式圖處理框架圖算法詳解

    Spark?GraphX?分布式圖處理框架圖算法詳解

    這篇文章主要為大家介紹了Spark?GraphX?分布式圖處理框架圖算法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 安全校驗(yàn)Session驗(yàn)證碼并避免繞開(kāi)驗(yàn)證碼攻擊

    安全校驗(yàn)Session驗(yàn)證碼并避免繞開(kāi)驗(yàn)證碼攻擊

    校驗(yàn)驗(yàn)證碼的Session是否為空或者校驗(yàn)用戶輸入的驗(yàn)證碼是否合法,構(gòu)造安全表單的關(guān)鍵就是永遠(yuǎn)不要相信用戶的輸入
    2012-01-01
  • UTF-8 BOM 可能導(dǎo)致樣式錯(cuò)亂的解決方法

    UTF-8 BOM 可能導(dǎo)致樣式錯(cuò)亂的解決方法

    utf-8 是一種在web應(yīng)用中經(jīng)常使用的一種 unicode 字符的編碼方式,使用 utf-8 的好處在于它是一種變長(zhǎng)的編碼方式,對(duì)于 ANSII 碼編碼長(zhǎng)度為1個(gè)字節(jié),這樣的話在傳輸大量 ASCII 字符集的網(wǎng)頁(yè)時(shí),可以大量節(jié)約網(wǎng)絡(luò)帶寬。
    2009-06-06
  • OpenAI?函數(shù)調(diào)用示例及功能入門(mén)教程

    OpenAI?函數(shù)調(diào)用示例及功能入門(mén)教程

    這篇文章主要為大家介紹了OpenAI?函數(shù)調(diào)用示例及功能入門(mén)教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 使用TeXLive2022和VSCode安裝配置步驟(LaTeX寫(xiě)論文)

    使用TeXLive2022和VSCode安裝配置步驟(LaTeX寫(xiě)論文)

    這篇文章主要介紹了使用TeXLive2022和VSCode的安裝配置步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Mac M1安裝Homebrew的方法步驟

    Mac M1安裝Homebrew的方法步驟

    這篇文章主要介紹了Mac M1安裝Homebrew的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 搜索歷史基本原理實(shí)現(xiàn)即時(shí)自動(dòng)補(bǔ)全聯(lián)想搜索技巧

    搜索歷史基本原理實(shí)現(xiàn)即時(shí)自動(dòng)補(bǔ)全聯(lián)想搜索技巧

    這篇文章主要為大家介紹了搜索歷史基本原理實(shí)現(xiàn)即時(shí)自動(dòng)補(bǔ)全聯(lián)想搜索技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Git的配置及文件傳輸方法圖文詳解

    Git的配置及文件傳輸方法圖文詳解

    這篇文章主要介紹了Git的配置及文件傳輸方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Cookie 的 SameSite 屬性小結(jié)

    Cookie 的 SameSite 屬性小結(jié)

    Chrome 51 開(kāi)始,瀏覽器的 Cookie 新增加了一個(gè)SameSite屬性,用來(lái)防止 CSRF 攻擊和用戶追蹤,下面在通過(guò)本文給大家詳細(xì)介紹下SameSite 屬性的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-10-10
  • web高性能開(kāi)發(fā)系列隨筆 BearRui(AK-47)版

    web高性能開(kāi)發(fā)系列隨筆 BearRui(AK-47)版

    在BlogJava里寫(xiě)了一些關(guān)于高性能WEB開(kāi)發(fā)的隨筆,因?yàn)槎际歉岸思夹g(shù)相關(guān)(html,http,js,css等),大家可以參考下。非常值得參考。
    2010-05-05

最新評(píng)論