2015-07-06 209 views
1

我有一個分支,用於部署最新的變化到一定的環境。我們稱之爲測試。測試分支用於部署測試環境中的任何內容。Git合併分支與主

現在我正在研究稱爲feature1的功能分支中的功能。我完成了我的更改,並將我的特性分支中的所有內容合併到了主控中。

已經部署到測試中的測試分支中的內容已成功通過測試並轉移到uat環境。現在我想將master中的所有內容都放入測試分支,以便將我的更改部署到測試環境。儘管我有幾個問題!我有點猶豫要做一個合併,因爲我擔心它可能會發生衝突,我必須手動解決它們。

如何將本地和遠程的測試分支替換爲使用master中的最新內容?我的主人有一個提交ID。我希望我的測試分支根據這個提交ID更新它的內容。

這是一個好方法嗎?有什麼建議麼?

+0

我看沒有錯合併'master'的到您的測試分支。您可能會有衝突,但無法避免這些衝突。你如何託管你的Git倉庫(例如GitHub,BitBucket等)? –

+0

我使用GitLab存儲庫 – sparkr

+0

我來自SVN,我所能想到的僅僅是一個帶有新版本號的新分支。但在Git中,分支更像是一個獲取最新更改的存儲桶,一旦這些更改經過測試,就會得到下一個 – sparkr

回答

1

沒錯,只需使用合併:

$ git checkout master 
$ git merge <commit> 
$ git push 

如果要合併mastertest,在test分支內運行git merge命令:

$ git checkout test 
$ git merge <commit> 
$ git push 

基本上git merge總會合並當前分支。

+0

git合併將應用commitId之前的所有更改嗎?我會這樣認爲的!要麼? – sparkr

+0

我想用另一種方式!我想將主體中的所有內容合併到測試分支中! – sparkr

+0

好吧,然後在'test'分支內運行'merge'命令。 'git'沒有特殊的分支名稱(也就是說:它是爲'master'和'test'指定不同含義的人類) –

1

不要害怕!如果遇到與合併過多的衝突,你總是可以合併--abort

你可以cherry-pick從主人到你的測試分支單個提交,如果這是你想要的。如果這會導致衝突並且您不希望將其刪除,您也可以將其與此相關聯。

最後,您可以簡單地使用checkout master -- .覆蓋測試分支中的任何跟蹤文件窗體主文件並查看差異。但這是一種非常粗魯的方式,它會創建一個與feature1和master中的提交無關的新提交。

AND請仔細閱讀說明書! git help mergegit help cherry-pick,git help reset,git help checkout ...等等。 (如果你喜歡它,試試git help --web git。)

0

我已在考慮以下幾點:

git checkout master 
git pull 
git checkout featureBranch 
git pull 
git merge master 
git push origin featureBranch 
+0

git merge master --abort will abort如果存在衝突,則從主合併到featureBranch中 – sparkr