下午跟后端同事調(diào)試前后端接口,整了老半天,他和我的代碼都拉的遠(yuǎn)程倉庫最新代碼,但在他的機(jī)器和我的機(jī)器上看到的程序運(yùn)行狀態(tài)卻不一樣,疑惑之下我兩吭哧吭哧定位問題,又過了老半天,發(fā)現(xiàn)是多模塊 maven 工程 pom 版本不一致導(dǎo)致的。我倆趕緊去 gitlab 上找提交記錄,看是誰修改了 pom 版本信息。結(jié)局總是很出人意料的,tmd 的提交人竟然是我?。?!我們項(xiàng)目是前后端分離的,我負(fù)責(zé)前端這塊,java 早就忘記不知道咋整的啦,更別提改別人的 java 代碼.......
至于 git 提交為什么會(huì)多提交一些修改記錄,這個(gè)問題還沒有定位到原因,但是明天還得上班呀,問題總得先解決了。跟老大討論了半天,老大用 git rebase 把代碼 治好 了,之前沒用過 git rebase 命令,趕緊了解一下先。
主分支 master,開發(fā)分支 develop。
切換到 develop 分支上,執(zhí)行 git rebase master,會(huì)將 master 分支跟當(dāng)前分支 develop 做合并,如果有沖突會(huì)提示進(jìn)行修改,develop 分支相對于 master 分支多開發(fā)的代碼不會(huì)有任何影響。
git rebase 跟 git merge 都用于合并代碼,下面這段話比較形象表示二者區(qū)別,如果要再深入一點(diǎn)了解可以看這篇文章 《git rebase 中文版》。
git rebase有點(diǎn)類似git merge,但是兩者又有不同,打個(gè)比方,你有兩個(gè)抽屜A和B,里面都裝了衣服,現(xiàn)在想把B中的衣服放到A中,git merge是那種橫沖直撞型的,拿起B(yǎng)就倒入A里面,如果滿了(沖突)再一并整理;而git rebase就很持家了,它會(huì)一件一件的從B往A中加,會(huì)根據(jù)一開始放入的時(shí)間順序的來加,如果滿了你可以處理這一件,你可以繼續(xù)加,或者跳過這一件,又 或者不加了,把A還原。所以merge適合那種比較瑣碎的,簡單的合并,系統(tǒng)級(jí)的合并還是用rebase吧。