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

git分支管理_動力節(jié)點Java學(xué)院整理

 更新時間:2017年08月17日 10:43:44   作者:liaoxuefeng  
這篇文章主要為大家詳細(xì)介紹了git分支管理的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

分支就是科幻電影里面的平行宇宙,當(dāng)你正在電腦前努力學(xué)習(xí)Git的時候,另一個你正在另一個平行宇宙里努力學(xué)習(xí)SVN。

如果兩個平行宇宙互不干擾,那對現(xiàn)在的你也沒啥影響。不過,在某個時間點,兩個平行宇宙合并了,結(jié)果,你既學(xué)會了Git又學(xué)會了SVN!

分支在實際中有什么用呢?假設(shè)你準(zhǔn)備開發(fā)一個新功能,但是需要兩周才能完成,第一周你寫了50%的代碼,如果立刻提交,由于代碼還沒寫完,不完整的代碼庫會導(dǎo)致別人不能干活了。如果等代碼全部寫完再一次提交,又存在丟失每天進(jìn)度的巨大風(fēng)險。

現(xiàn)在有了分支,就不用怕了。你創(chuàng)建了一個屬于你自己的分支,別人看不到,還繼續(xù)在原來的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到開發(fā)完畢后,再一次性合并到原來的分支上,這樣,既安全,又不影響別人工作。

其他版本控制系統(tǒng)如SVN等都有分支管理,但是用過之后你會發(fā)現(xiàn),這些版本控制系統(tǒng)創(chuàng)建和切換分支比蝸牛還慢,簡直讓人無法忍受,結(jié)果分支功能成了擺設(shè),大家都不去用。

但Git的分支是與眾不同的,無論創(chuàng)建、切換和刪除分支,Git在1秒鐘之內(nèi)就能完成!無論你的版本庫是1個文件還是1萬個文件。

創(chuàng)建與合并分支

每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git里,這個分支叫主分支,即master分支。HEAD嚴(yán)格來說不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD指向的就是當(dāng)前分支。

一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當(dāng)前分支,以及當(dāng)前分支的提交點:

每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長:

當(dāng)我們創(chuàng)建新的分支,例如dev時,Git新建了一個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當(dāng)前分支在dev上:

你看,Git創(chuàng)建一個分支很快,因為除了增加一個dev指針,改改HEAD的指向,工作區(qū)的文件都沒有任何變化!

不過,從現(xiàn)在開始,對工作區(qū)的修改和提交就是針對dev分支了,比如新提交一次后,dev指針往前移動一步,而master指針不變:

假如我們在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最簡單的方法,就是直接把master指向dev的當(dāng)前提交,就完成了合并:

所以Git合并分支也很快!就改改指針,工作區(qū)內(nèi)容也不變!

合并完分支后,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉后,我們就剩下了一條master分支:

真是太神奇了,你看得出來有些提交是通過分支完成的嗎?

下面開始實戰(zhàn)。

首先,我們創(chuàng)建dev分支,然后切換到dev分支:

$ git checkout -b dev
Switched to a new branch 'dev'

git checkout命令加上-b參數(shù)表示創(chuàng)建并切換,相當(dāng)于以下兩條命令:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

然后,用git branch命令查看當(dāng)前分支:

$ git branch
* dev
 master

git branch命令會列出所有分支,當(dāng)前分支前面會標(biāo)一個*號。

然后,我們就可以在dev分支上正常提交,比如對readme.txt做個修改,加上一行:

Creating a new branch is quick.

然后提交:

$ git add readme.txt 
$ git commit -m "branch test"
[dev fec145a] branch test
 1 file changed, 1 insertion(+)

現(xiàn)在,dev分支的工作完成,我們就可以切換回master分支:

$ git checkout master
Switched to branch 'master'

切換回master分支后,再查看一個readme.txt文件,剛才添加的內(nèi)容不見了!因為那個提交是在dev分支上,而master分支此刻的提交點并沒有變:

現(xiàn)在,我們把dev分支的工作成果合并到master分支上:

$ git merge dev
Updating d17efd8..fec145a
Fast-forward
 readme.txt |  1 +
 1 file changed, 1 insertion(+)

git merge命令用于合并指定分支到當(dāng)前分支。合并后,再查看readme.txt的內(nèi)容,就可以看到,和dev分支的最新提交是完全一樣的。

注意到上面的Fast-forward信息,Git告訴我們,這次合并是“快進(jìn)模式”,也就是直接把master指向dev的當(dāng)前提交,所以合并速度非???。

當(dāng)然,也不是每次合并都能Fast-forward,我們后面會講其他方式的合并。

合并完成后,就可以放心地刪除dev分支了:

$ git branch -d dev
Deleted branch dev (was fec145a).

刪除后,查看branch,就只剩下master分支了:

$ git branch
* master

因為創(chuàng)建、合并和刪除分支非??欤訥it鼓勵你使用分支完成某個任務(wù),合并后再刪掉分支,這和直接在master分支上工作效果是一樣的,但過程更安全。

小結(jié)

Git鼓勵大量使用分支:

查看分支:git branch

創(chuàng)建分支:git branch <name>

切換分支:git checkout <name>

創(chuàng)建+切換分支:git checkout -b <name>

合并某分支到當(dāng)前分支:git merge <name>

刪除分支:git branch -d <name>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微服務(wù)架構(gòu)拆分策略詳解

    微服務(wù)架構(gòu)拆分策略詳解

    這一章我們就來探討如何做微服務(wù)架構(gòu)的拆分,微服務(wù)拆分沒有一個絕對的標(biāo)準(zhǔn)答案,服務(wù)拆分的粒度需要根據(jù)業(yè)務(wù)場景來規(guī)劃,而隨著業(yè)務(wù)的發(fā)展,原先的架構(gòu)方案也需要做調(diào)整雖然沒有固定的套路,但是我們在業(yè)務(wù)實踐過程中總結(jié)的一些經(jīng)驗,以做參考
    2022-01-01
  • Zabbix 上Windows性能監(jiān)控的方法

    Zabbix 上Windows性能監(jiān)控的方法

    這篇文章主要介紹了Zabbix 上Windows性能監(jiān)控,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • centos6.4+nginx+mysql+php+phpmyadmin整合過程詳解

    centos6.4+nginx+mysql+php+phpmyadmin整合過程詳解

    這篇文章主要介紹了centos6.4+nginx+mysql+php+phpmyadmin整合過程,較為詳細(xì)的分析了centos6.4+nginx+mysql+php+phpmyadmin整合的具體步驟、操作指令與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-11-11
  • 為什么Nginx的性能要比Apache高很多

    為什么Nginx的性能要比Apache高很多

    這篇文章主要介紹了為什么Nginx的性能要比Apache高很多,需要的朋友可以參考下
    2016-03-03
  • 如何快速搭建一個自己的服務(wù)器的詳細(xì)教程(java環(huán)境)

    如何快速搭建一個自己的服務(wù)器的詳細(xì)教程(java環(huán)境)

    這篇文章主要介紹了如何快速搭建一個自己的服務(wù)器的詳細(xì)教程(java環(huán)境),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Flink?側(cè)流輸出源碼示例解析

    Flink?側(cè)流輸出源碼示例解析

    這篇文章主要為大家介紹了Flink?側(cè)流輸出源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • wamp5是什么 wamp有什么用途?

    wamp5是什么 wamp有什么用途?

    wamp就是Windows系統(tǒng)加上Apache,MySQL及PHP搭建的web環(huán)境,配置簡單方便,簡稱wamp,了解amp之后,我們就簡單介紹下什么的wamp5以及主要用途
    2015-10-10
  • 常用的web服務(wù)器軟件整理(win+linux)

    常用的web服務(wù)器軟件整理(win+linux)

    這篇文章主要介紹了常用的web服務(wù)器軟件整理,包括windows與linux下的,需要的朋友可以參考下
    2017-12-12
  • LuLu打造一款macOS的開源防火墻

    LuLu打造一款macOS的開源防火墻

    LuLu是一款macOS下的免費且開源防火墻 ,其主要用于阻止未經(jīng)授權(quán)的(傳出)網(wǎng)絡(luò)流量,除非用戶明確允許,下面通過本文給大家分享通過LuLu打造一款macOS的開源防火墻功能,一起看看吧
    2018-03-03
  • 服務(wù)器常見問題匯總(常見故障及相應(yīng)的解決方法)

    服務(wù)器常見問題匯總(常見故障及相應(yīng)的解決方法)

    服務(wù)器一般是很少出現(xiàn)問題的,一旦出現(xiàn)問題,怎樣去積極的搶救呢?我們不能坐以待斃,原因一旦服務(wù)器故障,那么該服務(wù)器上的所有網(wǎng)站將都會無法打開。對于一個企業(yè)來說,網(wǎng)站就是他們的命脈,損失是巨大的
    2017-04-04

最新評論