一、合并遠程分支merge
任務(wù)描述
在軟件開發(fā)中,通常會在版本庫中創(chuàng)建多個不同的分支進行開發(fā)。例如,最基本的可以有一個測試版分支和一個正式版分支,其中測試版分支用來完成最新功能代碼的開發(fā)與測試,正式版則用于管理即將發(fā)布的版本。
如果某個版本通過了測試,就需要將其推到正式產(chǎn)品線上去。將測試版推送到正式版的一個做法,就是將遠程倉庫測試版的分支代碼,合并到正式版的分支代碼中去,這就對應(yīng)著遠程分支合并的操作。
本關(guān)任務(wù):合并遠程指定的分支。
相關(guān)知識
合并遠程分支的一般步驟是:
第一步,分別獲取遠程分支內(nèi)容到本地;
第二步,在本地將兩個分支合并;
第三步,將合并后的本地分支推送到遠程分支,完成合并。
具體的,以將遠程
develop
分支合并到遠程master
分支為例,操作過程如下:
獲取遠程
develop
分支到本地分支(如develop
分支)。如果本地已經(jīng)有分支對應(yīng)遠程develop
分支,則可以直接在該分支上執(zhí)行pull
操作或者fetch/merge
操作,以獲取遠程最新內(nèi)容。否則,可以新建分支跟蹤遠程develop
分支,并獲取最新內(nèi)容到本地;切換到
master
分支,并獲取遠程master
分支的最新內(nèi)容到本地;將本地
develop
分支合并到本地master
分支;將本地
master
分支推送到遠程master
分支。以合并遠程
develop
分支到遠程master
分支為例,其具體操作步驟如下:#切換到develop分支 git checkout develop #獲取遠程develop分支的內(nèi)容到本地 git pull origin develop:develop #切換到master分支 git checkout master #拉取遠程master分支內(nèi)容到本地 git pull origin master #合并本地develop分支到master分支 git merge develop #將合并后的分支推送到遠程master分支 git push origin master:master
編程要求
平臺已經(jīng)為你準備了本地版本庫
repo
,且已添加遠程倉庫/tmp/origin
,并將遠程主機命名為origin
。本地版本庫已有master
分支和develop
分支,兩個分支均有已提交的內(nèi)容,且本地版本庫當前處于develop
分支。本關(guān)的編程任務(wù)是,補全右側(cè)代碼片段中
Begin
至End
中間的腳本,合并遠程develop
分支到遠程master
分支。
#進入本地版本庫
cd repo
#請在下方Begin/End星號線內(nèi)填寫git命令以將遠程develop分支合并到遠程master分支
#********** Begin **********#
git checkout develop
git pull origin develop:develop
git checkout master
git pull origin master
git merge develop
git push origin master:master
#********** End **********#
二、rebase操作
任務(wù)描述
合并不同分支,除了使用
merge
操作之外,還可以使用rebase
操作。相比于merge
操作,使用rebase
會使分支樹更為清晰、干凈。本關(guān)任務(wù):完成
rebase
操作。merge和rebase的不同
merge
的工作流程如下圖:
如上圖所示,我們從遠程倉庫
origin
的C2
版本,創(chuàng)建一個新的分支develop
進行開發(fā),并進行了C5
、C6
兩次提交。之后團隊中其他成員又向origin
推送了兩次提交C3
、C4
。為了合并遠程分支上的新內(nèi)容到本地,我們進行merge
操作,將內(nèi)容合并到develop
之后,生成了一次新的提交C7
。此時,develop
分支還是一個獨立的分支。而
rebase
的工作流程如下圖:
rebase
又可稱為‘變基’,結(jié)合上圖的話,這個詞就很容易理解了。即:
C5
、C6
本來是在C2
這次提交的基礎(chǔ)上進行修改的;現(xiàn)在我們將這個‘基礎(chǔ)’改為
C4
,即將C5
、C6
的提交作用到C4
上去;在這個過程中,可能會有沖突產(chǎn)生,解決沖突之后就完成了
rebase
。由圖可以看到,
rebase
完成后,源分支上的提交都不見了。rebase基礎(chǔ)操作
rebase
的基本操作是將某個分支的修改到指定分支,其命令格式為:git rebase 基分支 源分支
其中‘基分支’是我們的新的‘基’,而‘源分支’就是需要進行變基操作的分支。這樣就能實現(xiàn)將源分支變基到基分支。具體使用示例如下:
git rebase master develop
以上語句就能實現(xiàn)將
develop
變基到master
分支。 如果是將當前分支變基到指定分支,則可以直接使用:git rebase 基分支
這一命令默認將當前分支變基到‘基分支’。如果當前處于
develop
分支,則其使用示例如下:git rebase master
這樣也能實現(xiàn)將當前的
develop
分支rebase
到master
分支。由于變基是將修改作用到一個不同的版本上,因此很可能在
rebase
的過程中出現(xiàn)沖突。和merge
一次性合并所有沖突不同的是,rebase
的沖突是一個一個解決的。以上圖中的rebase
操作為例,需要分別解決和C3
、C4
的沖突。在解決rebase
沖突的過程中,當解決完一個沖突的時候,使用如下命令后,才會出現(xiàn)下一個沖突:git add -u git rebase --continue
沖突全部解決完后,
rebase
操作就完成了。 如果在解決沖突的過程中,想放棄rebase
操作,則可以使用如下命令撤銷rebase
操作:git rebase --abort
這樣就能退出
rebase
,并回退到rebase
前的狀態(tài)。編程要求
平臺已經(jīng)為你準備了本地版本庫
gitTraining
,并創(chuàng)建了兩個分支master
和develop
,且當前處于develop
分支。并且,develop
分支是從master
分支,checkout
出去的分支。本關(guān)的編程任務(wù)是,補全右側(cè)代碼片段中
Begin
至End
中間的腳本,將develop
變基到master
分支。
#進入本地gitTraining版本庫
cd gitTraining
#請在下方Begin/End星號線內(nèi)填寫Git命令以完成rebase操作
#********** Begin **********#
git checkout develop
git rebase master
#********** End **********#
?三、儲藏之保存git stash
任務(wù)描述
在開發(fā)過程中,當你的開發(fā)分支處于一個比較雜亂的狀態(tài),而你想轉(zhuǎn)到其他分支上進行另外一些工作。但是,你不想提交進行了一半的工作,也不想將其撤銷,這時就可以使用儲藏操作。當你完成工作之后,再次回到該分支,可以恢復(fù)儲藏的內(nèi)容。然后,就會將之前保存的內(nèi)容,再次恢復(fù)到工作區(qū),就能繼續(xù)進行開發(fā)。
本關(guān)任務(wù):儲藏當前工作區(qū)中的內(nèi)容。
相關(guān)知識
儲藏的概念
“儲藏”可以獲取你工作目錄的中間狀態(tài)(包括修改過的被追蹤的文件和已經(jīng)暫存的變更),并將其保存到一個未完結(jié)變更的堆棧中,而且隨時可以重新應(yīng)用。當你不想提交,也不想丟棄當前工作區(qū)中的內(nèi)容,而想切換到其他分支的時候,可以使用儲藏命令先暫存工作區(qū)中的內(nèi)容。然后,再回到當前分支的時候,將儲藏起來的內(nèi)容,恢復(fù)到工作區(qū)之后,即可恢復(fù)之前的工作。
儲藏的基本操作
儲藏分為保存和應(yīng)用兩個部分。保存就是將當前工作區(qū)的內(nèi)容保存到一個棧中,而應(yīng)用就是重新應(yīng)用被保存的工作。
保存
保存用到的命令是
git stash
,只需在當前分支執(zhí)行此命令,即可將當前工作區(qū)的內(nèi)容保存起來。如你在本地版本庫創(chuàng)建了helloGit
文件,此時查看工作區(qū)狀態(tài)可以得到如下所示提示:
當你執(zhí)行
git stash
命令,將工作區(qū)保存起來之后,再次查看可以得到如下提示
此時已經(jīng)將工作區(qū)內(nèi)容保存了起來,所以才會提示工作區(qū)是干凈(
clean
)的。重新應(yīng)用
當你需要再次應(yīng)用被保存的內(nèi)容的時候,只需執(zhí)行
git stash apply
即可。 因為可能執(zhí)行了多次保存,所以你需要查看已經(jīng)保存起來的內(nèi)容有哪些。查看已經(jīng)保存的工作的命令如下:git stash list
會得到類似于如下輸出:
如果要應(yīng)用指定的儲藏,則可以使用命令
git stash apply 儲藏標識
這里的
儲藏標識
就是git stash list
中顯示的類似于stash@{0}
的字符串。如git stash apply stash@{2}
這樣就重新應(yīng)用了第二次儲藏。如果不加儲藏標識,就默認應(yīng)用最近的儲藏:
git stash apply
上述命令就重新應(yīng)用了最近的一次儲藏。
編程要求
平臺已經(jīng)為你準備了本地版本庫,在進行了一次提交之后,又在工作區(qū)添加了一個名為
hello
的文件,版本庫當前分支是master
。本關(guān)的編程任務(wù)是補全右側(cè)代碼片段中
Begin
至End
中間的腳本,儲藏工作區(qū)內(nèi)容。
#進入本地版本庫
cd gitTraining
#請在下方Begin/End星號線內(nèi)填寫Git命令以完成儲藏操作
#********** Begin **********#
git stash save "Add hello file"
#********** End **********#
四、儲藏之恢復(fù)?git stash apply
任務(wù)描述
在開發(fā)過程中,當你的開發(fā)分支處于一個比較雜亂的狀態(tài),而你想轉(zhuǎn)到其他分支上進行另外一些工作。但是,你不想提交進行了一半的工作,也不想將其撤銷,這時就可以使用儲藏操作。當你完成工作之后,再次回到該分支,可以恢復(fù)儲藏的內(nèi)容。然后,就會將之前保存的內(nèi)容,再次恢復(fù)到工作區(qū),就能繼續(xù)進行開發(fā)。
本關(guān)任務(wù):恢復(fù)被儲藏的工作區(qū)的內(nèi)容。
編程要求
平臺已經(jīng)為你準備了本地版本庫,在進行了一次提交之后,又在工作區(qū)添加了一個名為
hello
的文件,然后將其儲藏了起來。版本庫當前分支是master
。本關(guān)的編程任務(wù)是,補全右側(cè)代碼片段中
Begin
至End
中間的腳本,恢復(fù)最近一次儲藏。文章來源:http://www.zghlxwxcb.cn/news/detail-838930.html
#進入本地版本庫
cd gitTraining
#請在下方Begin/End星號線內(nèi)填寫Git命令以完成恢復(fù)操作
#********** Begin **********#
git stash apply
#********** End **********#
?文章來源地址http://www.zghlxwxcb.cn/news/detail-838930.html
到了這里,關(guān)于git分布式管理-頭歌實驗合并遠程分支、rebase、儲藏的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!