1. 程式人生 > >[Git] 實驗一下午,終於得出的結論,關於git分支的合併策略

[Git] 實驗一下午,終於得出的結論,關於git分支的合併策略

今天,我本在安靜的敲專案,直到寫完某個小功能,我想提交程式碼的時候!由於專案組最近將SVN改成了Git,所以對於更新操作還不是很熟悉!於是我發現了一個問題!

那麼這個問題就是:

當我建立了一個主分支(將原來svn的程式碼拷入),然後每個開發人員再分別fork或者直接在原專案建立分支(效果類似),比如我建立的分支wq和我組長建立的cy!此時cy和wq內容是一樣的!
問題來了:首先,我的組長效率就是高,他先將屬於他模組的某功能完成,然後提交了程式碼到他的cy分支下,並且由於這次更新也算完成了一個功能,於是組長決定合併分支,他將cy分支合併到master主分支,此時master還屬於剛剛建立的狀態,組長是第一個合併者,結果當然沒有任何問題!程式碼合併成功,master分支中多了組長改動的那些檔案!僅止於此的話,是沒有啥問題的,這也是我們剛接觸git時,遇到的情況; 但隨著時間推移,我的模組也完成了某一功能,我也決定將程式碼提交到遠端分支(前面提交的分支當然也是遠端,這裡的提交不單單指git commit), 好的,首先我提交到了wq分支,接下來是合併,合併前,我同步了我本地的master分支,由於我沒有操作我本地的master分支,所以同步非常順利(直接用的pull,用fetch也行),接下來我要合併我的wq分支到master分支中,那麼問題來了! 是否會因為master中修改了我組長的程式碼和我的wq分支不同,而我的wq分支中修改我的那個功能的程式碼又與master中不同,那麼,如果用git檢視不同(git diff wq或git diff master),會看到所有的修改(包括wq中我的模組與master的不同/master中我組長的模組與wq分支的不同),但是,此時在master分支下使用 git merge wq

會發生什麼呢?

經過分析,有以下可能:

1.wq中的不同程式碼更改同步到了master中,同時master中的不同程式碼也同步到了wq,組後master與wq無差別.
2.wq中的不同程式碼更改同步到了master中,而master中的不同程式碼沒有同步到wq
3.master中的不同程式碼也同步到了wq,而wq中的不同程式碼沒有同步到master

於是

經過我的實驗,發現真實情況是 可能 2,並且當在wq分支中呼叫 git merge master 時, 真實情況變為 可能3 !
這是為啥呢? 經過我的分析,原來,merge命令的用處是,將git merge <name>

後接的 名為< name >分支中的更改(比如在master中輸入git merge wq 的用處就是僅將wq中我修改的程式碼同步到master中,而對於master中被修改的程式碼與wq雖然不同,但不是wq的更改,所以不同步),反之在wq中輸入git merge master 的則將master中我組長後來提交的程式碼同步到我的wq分支中,而對於wq中我的修改,並不會覆蓋為master中的程式碼(即一開始從svn拷過來,功能還未實現的版本,還好是這樣,不然我辛辛苦苦寫程式碼,不就沒有了?).
如此就解釋瞭如何使用git merge <name> !

很簡單,無非在不同情況在不同的分支下進行同步而已!比如:

1.我只想將剛修改的程式碼提交合併到master分支(同時提交到遠端) ,那麼就先將master分支更新到最新版本,然後在切換到master下(git checkout master) ,合併wq分支:git merge wq ,當然在此之前你可以看看你做了啥更改:git diff wq .
2.我不但想提交程式碼,還想觀摩一下我組長大神的程式碼(畢竟是大神), 那麼也很簡單,首先,按照1的步驟,合併,然後,切換到wq分支下:git checkout wq ,合併master的修改到wq:git merge master

相關推薦

[Git] 實驗下午,終於得出結論,關於git分支合併策略

今天,我本在安靜的敲專案,直到寫完某個小功能,我想提交程式碼的時候!由於專案組最近將SVN改成了Git,所以對於更新操作還不是很熟悉!於是我發現了一個問題! 那麼這個問題就是: 當我建

軟工 實驗 Git程式碼版本管理

實驗目的: 1)瞭解分散式版本控制系統的核心機理; 2)   熟練掌握git的基本指令和分支管理指令; 實驗內容: 1)安裝git 2)初始配置git ,git init git status指令 3)掌握git log ,git add ,git diff 指令 4) 掌握git tag

git臺機器上配置多個賬戶

rac ssh xxxxxx pla 必須 account ack entity 設置 前提: 必須知道怎樣配置git賬戶,請參考git官方教程:https://help.github.com/articles/generating-ssh-keys 這個教程能教你怎

git基礎

尊重 init 自己 餐廳 優秀 com git add why fig 禮節為上: 一定要對別人客氣一點,無論在餐廳,或者任何事情上面一定要對別人客氣,從這次 上海面試的經歷導致自己滑鐵盧,自己就要好好的總結一下。 即使自己遇到很煩心的事情,也要保持情緒,因

步搞定私有Git服務器部署(Gogs)

soft 管理員 efault shared 自由 mes off valid art http://www.jianshu.com/p/424627516ef6 零、安裝 Docker 和 Compsoe 首先安裝 Docker: $ curl -sSL http

Git 學習

出現 glob 記錄 技術分享 時有 image 操作 使用 bsp 剛剛接觸git,學習現骨幹操作並記錄一下過程中的小問題(Windows下) 1、新建git目錄 創建一個目錄,使用命令 git init 2、添加文件 git add a.txt 3、提交文件

git學習() 如何將項目上傳到個

wiki git pull 直接 git倉庫 rac pan 文件 idt 內容 用了github有了段時間,但是感覺都是斷斷續續的,這次花了點時間來總結下,已方便下次忘記的時候拿出來看一下; 自己主要是參考了這個網站來學習的: git教程 -廖雪峰 第一步:

Centos搭建Git

Git1、下載編譯工具 yum -y groupinstall "Development Tools" 2、下載依賴包 yum -y install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel 3、下載最新版git wget

記錄次使用terminal進行git管理與提交到Github的過程

忽略文件 pack com res ota pac sed clone fatal 1、環境的構建: 使用Mac系統自帶的Git進行版本管理存在,Git是系統的Xcode集成的 查看版本的命令: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px;

Git

就是 其它 con 方式 有一個 readme eset epo .com Git是一個開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目。 GIT不僅僅是個版本控制系統,它也是個內容管理系統(CMS),工作管理系統等。 如果你是一個具有使用SVN背景的人,你需

Git<> 手工編輯沖突

成功 保存 don 有時 提示 沖突解決 source IE 導致 一:背景 Neo君之前在寫東西時,都是自己負責各自的模塊,沒有出現代碼拉下來沖突的情況。最近Neo君在搞一搞前端的東東,跟同事功能有些沖突,所以就難免會沖突。 所以簡單總結下,這次針對的情況是不同的用戶修改

GitGit的簡介安裝與本地倉庫文件可視化管理

ast src 目標 commit 合作 sta 方式 發的 問題 一.git歷史 同生活中的許多偉大事件一樣,Git 誕生於一個極富紛爭大舉創新的年代。Linux 內核開源項目有著為數眾廣的參與者。絕大多數的 Linux 內核維護工作都花在了提交補丁和保存歸檔的繁

鍵部署最新的Git(Centos7.3)

一、手動部署步驟: 步驟1、安裝編譯git時需要的包 # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel # yum install gcc perl-ExtUtils-MakeMa

Git、版本控制系統介紹

版本控制 什麼是版本控制 版本控制是一套類似日誌系統,用來儲存檔案內容變更記錄的系統。 版本控制作用 版本控制可以幫助我們將檔案的修改記錄進行回溯到之前的狀態,然後,就可以對比檔案中的變化細節。 可以查到的資訊諸如:修改操作人、修改的檔案內容、修改時間等。 如果有

mzy git學習,初識git

GIT學習 git工作區、暫存區、本地庫、遠端庫 工作區:實際上我們工作的地方,進行寫程式碼或者檔案的地方。 暫存區:我們執行了git add 操作之後,就會被提交到暫存區。 本地庫:其實最後我們需要執行這一步操作,git commit 到本地庫中,才表示完結了。 但是大家

Linux下使用Git教程()

一:Linux下安裝Git配置GitHub教程.       關鍵步驟分三步走.       1. 執行命令安裝git,並驗證安裝結果.       2. 將Git初始化並生成授信證書. &

分支管理~策略git merge 合併禁用ff模式 (十

通常,合併分支時,如果可能,Git會用Fast forward模式,但這種 ff 模式下,刪除分支後,會丟掉分支資訊。 如果要強制禁用 Fast forward 模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支資訊。 下面開始實踐:git merge

篇極好的Git 總結

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由騰訊工蜂發表於雲+社群專欄 常用命令 簡單的,常用的命令也就幾個。但是想非常熟練使用,怕是要記住幾十個。 Workspace:工作區(clone或者原始內容) Index/Stage:暫存區(有增刪改查後add到

次linux下用git安裝fastadmin的過程

1.安裝寶塔面板,阿里雲配置對應的安全組.在軟體管理介面下載mysql,php,apache,pm2管理器,phpmyadmin.(php版本最好只安裝一個,不然你需要確定你安裝的擴充套件是否安裝在你所選擇的php版本,php -v可以檢視當前預設的php版本) 2.進入網站目錄,clone

GitGit的簡介安裝與本地倉庫檔案視覺化管理

一.git歷史    同生活中的許多偉大事件一樣,Git 誕生於一個極富紛爭大舉創新的年代。Linux 核心開源專案有著為數眾廣的參與者。絕大多數的 Linux 核心維護工作都花在了提交補丁和儲存歸檔的繁瑣事務上(1991-2002年間)。到 2002 年,Linux系統已經發展了十年了,程式碼庫之大讓Li