久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      git中分支是什么意思

      在git中,分支指的是從主線上分離出來(lái)進(jìn)行另外的操作,既不影響主線,主線又可以繼續(xù)干它的事,它可用來(lái)解決臨時(shí)需求;當(dāng)分支做完事后可合并到主線上,而分支的任務(wù)完成可以刪掉了。

      git中分支是什么意思

      本教程操作環(huán)境:Windows7系統(tǒng)、Git2.30.0版、Dell G3電腦。

      git的分支是什么

      顧名思義,分支就是從主線上分離出來(lái)進(jìn)行另外的操作,而又不影響主線,主線又可以繼續(xù)干它的事,是不是有點(diǎn)像線程,最后分支做完事后合并到主線上而分支的任務(wù)完成可以刪掉了。這樣是不是很方便,主線繼續(xù)做它的事,分支用來(lái)解決臨時(shí)需求,二者互不相干。

      git的分支功能特別的強(qiáng)大,它不需要將所有數(shù)據(jù)進(jìn)行復(fù)制,只要重新創(chuàng)建一個(gè)分支的指針指向你需要從哪里開(kāi)始創(chuàng)建分支的提交對(duì)象(commit),然后進(jìn)行修改再提交,那么新分支的指針就會(huì)指向你最新提交的這個(gè)commit對(duì)象,而原來(lái)分支的指針則指向你原來(lái)開(kāi)發(fā)的位置,當(dāng)你在哪個(gè)分支開(kāi)發(fā),HEAD就指向那個(gè)分支的最新提交對(duì)象commt。沒(méi)弄清楚沒(méi)關(guān)系,先有這么一個(gè)概念,后面慢慢就會(huì)弄清的。

      分支的新建與合并

      我們可以用命令git branch來(lái)查看我們的git倉(cāng)庫(kù)有幾個(gè)分支,而我們目前工作處于那個(gè)分支,前面有個(gè)*號(hào)的就為我們目前所處的分支。我們可以通過(guò)命令git branch name來(lái)創(chuàng)建分支,而這個(gè)分支的指針就指向最新的commit對(duì)象,也就和HEAD指向同一對(duì)象。我們可以通過(guò)命令git checkout name來(lái)切換到目的分支,我們默認(rèn)的主分支為master。在分支的創(chuàng)建和切換,其實(shí)只是簡(jiǎn)單的創(chuàng)建指針找指針而已,而根據(jù)找到的指針找到所指向的commit對(duì)象,然后將工作空間恢復(fù)成該commit對(duì)象所指的文件快照讓我們來(lái)工作。當(dāng)提交一次,指針就重新指向這個(gè)最新提交的對(duì)象,特別的簡(jiǎn)單。

      git中分支是什么意思git中分支是什么意思

      當(dāng)我們建立分支teset之前,只有master一個(gè)主分支,如圖一,我們所有的開(kāi)發(fā)都是在這個(gè)分支上,而且HEAD是指向最近一次提交的commit對(duì)象c3,c3以前還有兩次提交c1和c2,這時(shí)我們通過(guò)git branch test創(chuàng)建test分支,如圖二,這時(shí)HEAD還是指向master分支最近一次提交的c3,當(dāng)git checkout test切換到test分支后,HEAD就指向test分支的最近一次提交c3,這個(gè)時(shí)候其實(shí)在.git里面都是指向同樣一份數(shù)據(jù)c3。

      git中分支是什么意思

      這個(gè)時(shí)候,當(dāng)我們?cè)趖est分支上進(jìn)行了幾次開(kāi)發(fā)提交了c4和c5兩個(gè)版本后,那么test和HEAD都指向test分支的最近一次提交c5,如圖三,而master此時(shí)還沒(méi)有變化,任然指向的是c3,如果這個(gè)時(shí)候?qū)est分支合并到master分支,那么git根本不用做什么,只要將master移動(dòng),指向c5就可以了,這個(gè)過(guò)程稱之為Fast-forward快進(jìn)。如果此時(shí)test的任務(wù)完成,我們就可以通過(guò)git branch -d test將它刪除掉,繼續(xù)在主分支master上進(jìn)行開(kāi)發(fā)。如果是這樣的話,那么test分支就白建了。

      git中分支是什么意思

      那么如果此時(shí)master分支上又進(jìn)行另外的開(kāi)發(fā),提交了兩個(gè)版本c6和c7,那么此時(shí)的master和HEAD指針都指向的是c7,如圖四,可以看出在哪個(gè)分支上開(kāi)發(fā),那么HEAD就指向的是哪個(gè)分支上的commit,這個(gè)時(shí)候合并兩個(gè)分支的話,就如下。

      git中分支是什么意思

      如圖五,我們先切換到master分支,然后通過(guò)git merge test將test分支合并到master分支,這個(gè)時(shí)候,git就不是簡(jiǎn)單的移動(dòng)指針了,因?yàn)閮蛇叾加虚_(kāi)發(fā),所以git就要對(duì)于兩個(gè)分支的最新提交c5和c7還有兩個(gè)分支共同的祖先commit對(duì)象c3來(lái)進(jìn)行一次簡(jiǎn)單的三方合并,產(chǎn)生新的文件快照并用新的commit對(duì)象c8記錄,這個(gè)合并的過(guò)程不需要太在意,如果產(chǎn)生了沖突,也就是兩個(gè)分支對(duì)同一個(gè)文件進(jìn)行了修改,那么git就會(huì)停下合并操作,讓你處理好沖突后,再提交(c8),然后再進(jìn)行合并。這時(shí)master和HEAD都指向c8,但是test是沒(méi)有移動(dòng)的,此時(shí)還可以在test上繼續(xù)開(kāi)發(fā),再合并到master,如果test已經(jīng)沒(méi)有利用價(jià)值了就可以刪掉了。

      本地分支,追蹤分支和遠(yuǎn)程分支

      這里有三個(gè)概念,本地分支就是我們可以通過(guò)git branch查看到的分支,也就是我們自己git倉(cāng)庫(kù)所擁有的分支,我們都可以利用。遠(yuǎn)程分支是對(duì)遠(yuǎn)程倉(cāng)庫(kù)的分支的索引,它其實(shí)也是本地分支,只是我們無(wú)法移動(dòng)它,必須要在和中心服務(wù)器交互根據(jù)服務(wù)器更新到本地來(lái)的代碼移動(dòng)的,遠(yuǎn)程分支的作用就是我們上次和中心服務(wù)器交互更新得到的最新版本,它也是個(gè)指針。追蹤分支比較難理解,它也是一個(gè)本地分支,只是它對(duì)應(yīng)了一個(gè)遠(yuǎn)程分支,如果我們本地的某個(gè)分支對(duì)應(yīng)了一個(gè)特定的遠(yuǎn)程分支,那么它就是追蹤分支,比如我們最初的master分支就是一個(gè)追蹤分支,它對(duì)應(yīng)遠(yuǎn)程分支origin/master,這里origin是遠(yuǎn)程倉(cāng)庫(kù)名,當(dāng)我們?cè)趍aster分支里執(zhí)行更新(fetch,pull)或是推送(push),在不指定分支的情況下,默認(rèn)就是從origin/master分支更新來(lái)或者提交到origin/mster分支。

      git中分支是什么意思git中分支是什么意思

      從圖七和圖八很容易看出來(lái),和我們本地創(chuàng)建分支很相似,只是origin/master遠(yuǎn)程分支只有在連接服務(wù)器并更新服務(wù)器代碼到本地后才會(huì)移動(dòng),如下圖九:

      git中分支是什么意思

      更新遠(yuǎn)程代碼到本地有兩個(gè)命令,fetch和pull,fetch是將遠(yuǎn)程代碼更新到本地,但是不會(huì)執(zhí)行合并操作,需要自己查看,解決沖突什么的,然后自己再執(zhí)行merge將更新來(lái)的代碼合并到我們自己制定的分支,但是pull就將這兩個(gè)操作合成了一步,直接更新服務(wù)器代碼更新并合并到到本地指定分支,當(dāng)然遇到?jīng)_突也必須要自己解決。所以我們一般都使用fetch來(lái)實(shí)現(xiàn)更新,雖然麻煩了點(diǎn),但是不容易出問(wèn)題。

      將本地代碼推送到遠(yuǎn)程倉(cāng)庫(kù),也就是中心服務(wù)器,一般我們推送數(shù)據(jù)都是git push origin master:master,這里指定遠(yuǎn)程倉(cāng)庫(kù)名,本地分支名和遠(yuǎn)端分支,也就是將我們本地master分支的數(shù)據(jù)推送到遠(yuǎn)程倉(cāng)庫(kù)origin的master分支。如果本地的master分支是追蹤分支,那么在不指定的情況下,它會(huì)自己找到遠(yuǎn)程倉(cāng)庫(kù)中對(duì)應(yīng)的分支來(lái)推送數(shù)據(jù)?;蛘呶覀冎苯舆M(jìn)行g(shù)it push origin操作,只指定遠(yuǎn)程倉(cāng)庫(kù)名,那么git會(huì)根據(jù)我們目前所在分支和它所對(duì)應(yīng)的遠(yuǎn)程倉(cāng)庫(kù)的分支來(lái)實(shí)現(xiàn)數(shù)據(jù)推送,前提是我們目前所在分支必須是追蹤分支。當(dāng)然如果是git push origin :master,這里本地分支名是空的,這個(gè)操作就是將空分支推送到遠(yuǎn)程倉(cāng)庫(kù)的master分支,結(jié)果就是將master分支刪除。

      既然追蹤分支這么好用,那么我們?cè)趺唇⒆粉櫡种?,有兩種方式,第一種方式是根絕遠(yuǎn)程分支創(chuàng)建追蹤分支,如果不指定該追蹤分支的名字,默認(rèn)和遠(yuǎn)程倉(cāng)庫(kù)的分支名字一樣:git checkout –track origin/test,這樣我們就建立了一個(gè)名為test的追蹤分支,如果重新指定追蹤分支的名字:git checkout -b name origin/test,這樣我們就創(chuàng)建了一個(gè)名為name的追蹤分支,它對(duì)應(yīng)遠(yuǎn)程倉(cāng)庫(kù)的test分支。第二種方式是已經(jīng)存在某個(gè)本地分支,要讓它來(lái)對(duì)應(yīng)某個(gè)遠(yuǎn)程分支來(lái)成為追蹤分支,也有兩個(gè)命令可以用,git branch –set-upstream test origin/test 或者git branch -f –track test origin/test 這里我們就讓我們本地已經(jīng)存在的test分支來(lái)追蹤遠(yuǎn)程的test分支。

      git分支管理

      git創(chuàng)建分支于合并分支是如此簡(jiǎn)單快捷,那么在我們的開(kāi)發(fā)過(guò)程中可以瘋狂的使用分支,而且git的核心玩法之一就是分支,非常提倡使用分支,但是是不是我們可以肆無(wú)忌憚的使用分支呢,創(chuàng)建這么多的分支我們要如何來(lái)管理呢,分支不在多而在恰到好處,如果分支創(chuàng)建多了,管理起來(lái)就麻煩了,所以推薦一種分支的管理策略,git-flow,同時(shí)推薦一篇文章來(lái)了解這種策略:http://nvie.com/posts/a-successful-git-branching-model/,讓你的git使用更加順手。

      推薦學(xué)習(xí):《Git教程》

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)