GIT -Merge & Tag

  • 1984
  • 0
  • Git
  • 2014-05-19

摘要:GIT -Merge

參考連結:

[git][merge]實際操作,合併與他人做的專案

http://italwaysrainonme.blogspot.tw/2012/12/gitmerge_20.html

Git flow 開發流程

http://ihower.tw/blog/archives/5140

A successful Git branching model

http://nvie.com/posts/a-successful-git-branching-model/

[Git] 版本控制: 如何使用標籤(Tag)

http://blog.wu-boy.com/2010/11/git-%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6-%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%A8%99%E7%B1%A4tag/

 

第一步,切到你的主要的branch(正在開發的最新版,或Developer,或master),

第二步,Merge 開發的 branch 至 主要的branch 

git merge feature_branch

 

如果有衝突的話,會告訴你一些衝突的地方

CONFLICT (content): Merge conflict in  <file_name>

Automatic merge failed; fix conflicts and then commit the result.

 

等所有衝突修正後,再commit, 然後再push上去,這時,就會看到兩個branch兩在一個交點上。

 

若沒有衝突則出現

Merge made by the `recursive` strategy.

..略

xxx files changed , xxx insertions(+), xxx deletions(-)

 

對版本Tag

git tag -a v1.x.x -m 'descript'

git push origin --tags

 

在上面這張圖顯示

 

三個主要的branch :master、 release、develop

develop 為目前正在開發

release 為發佈給使用者測試或內部人員測試,

master 則為上架時的版本。

所以只要一上架,就要將develop的branch merge 回 master 使master擁有最新的資訊。

 

而develop可能會有多個人開發每個人開發不同的版本,則將develop的版本,另外開出不同的feture branch去開發部分功能,

等開發完,再將feture branch merge 回 develop ,develop 再merge 回release,等release測試完後,無誤,則再merge回master

 

若在release有發生錯誤,由release版本修正後,merge 回develop,再merge 至master

若在master發生急緊需要上架的版本,則會開新的branch hotfiex ,再將hotfiex merge回master,及develop

 

每次發佈版本上架時,就會加上一個Tag

master,看來就沒有要在這主線上開發什麼,開發都branch 出去 到develop。

 

有了這種版控方式,讓多個版本同時進行時,變的清鬆許多,也清楚要怎麼去做版控的方式。

 

因為我有四個版本,一個是現在上架版,一個是上架後,又發生緊急修正部分功能的版本,又一個是,開發新功能的版本,再一種是開發新功能後,又大修的功能。

因為緊急修正版本,又是在開發新功能後才出現的,讓我為了這緊急修正的版本,我就需要將這程式碼一個貼到開發新功能的版本,,再貼到大修的版本。

發現這樣真的很累,

但有了merge的功能的話,

我就可以,新功能版本 merge 緊急修正部分,大修merge 新功能版本。就將緊急功能,merge至大修裡了。

 

這張圖,會讓開發者,會更有條有理的去做版本控制。不必再多個版本去做相同程式的修改。(現在才學會merge,真有點晚,浪費許多時間改同樣的程式碼)