在使用git開(kāi)發(fā)的時(shí)候經(jīng)常會(huì)面臨一個(gè)常見(jiàn)的問(wèn)題。多個(gè)commit 需要合并為一個(gè)完整的commit提交。
為碭山等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及碭山網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為做網(wǎng)站、網(wǎng)站設(shè)計(jì)、碭山網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!我先基于develop主分支拉出一個(gè)功能分支(每個(gè)人和每個(gè)公司對(duì)分支的管理都不太一樣,這里不需要太糾結(jié)。)。這里的develop是開(kāi)發(fā)主分支,所有的開(kāi)發(fā)功能代碼都需要回歸到這個(gè)develop分支中去。
git branch -a –vv
develop_fixbug_p_w_picpathprint 分支是我基于遠(yuǎn)程develop分支拉出來(lái)的開(kāi)發(fā)分支,我會(huì)基于這個(gè)分支來(lái)fix一些bug。我們分別看下develop、develop_fixbug_p_w_picpathprint commit log。
git checkout develop
git log
git checkout develop_fixbug_p_w_picpathprint
git log
develop_fixbug_p_w_picpathprint的commit log是和devleop commit log 一模一樣。我們現(xiàn)在切換到develop_fixbug_p_w_picpathprint進(jìn)行一些操作。
添加一個(gè)1.txt文件,然后git add . ,git commit –m’add 1.txt’。
再添加一個(gè)2.txt 文件,然后git add . ,git commit –m’add 2.txt’。
現(xiàn)在develop_fixbug_p_w_picpathprint分支里有兩個(gè)commit。這兩個(gè)commit都是為了fix當(dāng)前這個(gè)bug而做的兩個(gè)提交?,F(xiàn)在我們要合并代碼上主develop分支??偛荒馨堰@兩個(gè)commit直接提交上去,這里還好只有兩個(gè)commit,但是一般項(xiàng)目開(kāi)發(fā)周期兩個(gè)星期的話,你起碼有十幾個(gè)commit。那這樣提交上去之后就很難管理和跟蹤。(我以前都是這樣干的,現(xiàn)在發(fā)現(xiàn)這樣不好跟蹤管理。)
那么我們?nèi)绾瓮瓿蛇@個(gè)合并commit尼,就需要用到git rebase 命令。
先來(lái)解釋下git rebase 。你其實(shí)可以把它理解成是“重新設(shè)置基線”,將你的當(dāng)前分支重新設(shè)置開(kāi)始點(diǎn)。這個(gè)時(shí)候才能知道你當(dāng)前分支于你需要比較的分支之間的差異。
比如,develop_fixbug_p_w_picpathprint分支是來(lái)自develop分支,那么從test commit開(kāi)始后面我們基本上都是各自發(fā)展,現(xiàn)在在develop_fixbug_p_w_picpathprint分支上有兩個(gè)commit,我們需要找一個(gè)基準(zhǔn),這個(gè)基準(zhǔn)就是git需要找到哪些是你后來(lái)提交的commmit,總的有個(gè)參照。
git reabse –i develop
git rebase 立馬知道develop與develop_fixbug_p_w_picpathprint之間的差異。因?yàn)槲覀兪腔赿evelop設(shè)置rebase的。git rebase –i ,這里的”-i“是指交互模式。就是說(shuō)你可以干預(yù)rebase這個(gè)事務(wù)的過(guò)程,包括設(shè)置commit message,暫停commit等等。
這里我們要求很簡(jiǎn)單就是合并之前的commit且重新設(shè)置commit message。
我們?cè)O(shè)置第二個(gè)”pick 657a291 add 2.txt” 為” s 657a291 add 2.txt”這里的s就是squash命令的簡(jiǎn)寫(xiě)。
跳出來(lái)了一個(gè)臨時(shí)文件,最上面是兩行commit message。我們修改下這個(gè)總體的commit message。
刪除之前的兩條message(ESC dd),設(shè)置一總的message 然后保存退出。(ESC wq)
我們查看下log。git log
是不是沒(méi)有了之前的兩個(gè)commit。
原理很簡(jiǎn)單:rebase需要基于一個(gè)分支來(lái)設(shè)置你當(dāng)前的分支的基線,這基線就是當(dāng)前分支的開(kāi)始時(shí)間軸向后移動(dòng)到最新的跟蹤分支的最后面,這樣你的當(dāng)前分支就是最新的跟蹤分支。這里的操作是基于文件事務(wù)處理的,所以你不用怕中間失敗會(huì)影響文件的一致性。在中間的過(guò)程中你可以隨時(shí)取消rebase 事務(wù)。git rebase –abort
在進(jìn)入git rebase –i 交互模式,你可以做的事情就很多了,可以設(shè)置edit 編輯commit 內(nèi)容,可以讓他暫停commit操作。等等。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)題目:聊下gitrebase-i-創(chuàng)新互聯(lián)
URL鏈接:http://aaarwkj.com/article48/cojohp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站策劃、關(guān)鍵詞優(yōu)化、網(wǎng)站排名、網(wǎng)頁(yè)設(shè)計(jì)公司、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容