gerrit上提示代碼衝突的時候,咱們首先會想到rebase下,不行的話就只能解決衝突了,最簡單的作法是個人另外一篇博客https://www.cnblogs.com/zndxall/p/9140813.html 中的方法,可是有的時候仍是會出現問題,報錯commit xxxx is a merge but no -m option was given,以下:html
或者執行git cherry-pick 4e73b64a5fc251e6ff82aa1db4316bd4ecd389d5 是同樣的效果。git
出現這個問題,是由於提交的代碼以前pull 了其餘人的代碼併合入了本身本地的代碼,產生了一個merge操做之後,又push到代碼倉,就會出現這種狀況,咱們看下他的提交日誌:日誌
分3個點解釋,標記「1」很明顯是一個merge操做,標記「2」是他本身的改動,標記「3」咱們看到parent節點有兩個,一個merge裏有多個父節點,cherry-pick的時候至少要指定一個父節點,能夠用-m parent-num來指定,parent-num 默認從1開始,好比上面的兩個父節點,htm
上面一個父節點29b3eb321d8f512616fad12ce40d7ed22d5d4371的parent-num 爲1 ,blog
下面一個父節點43bd1d238829f067547ebd8f372a6ded5732690a的parent-num爲2,博客
那麼在cherry-pick的時候,若是選定父節點爲第一個的話,it
命令爲 git cherry-pick 4e73b64a5fc251e6ff82aa1db4316bd4ecd389d5 -m 1io
結果以下:class
(備註:若是這裏顯示失敗的話,若是沒有失敗的話,不用關心這一步,如圖:方法
是由於你cherry-pick了兩次,因此須要取消上次的cherry-pick操做,有多種方式,一種是回退到比較老的節點,而後pull最新代碼,一種是基於目標分支從新建一個分支專門用來作cherry-pick)
接着再執行git status ,會提示衝突文件,以下:
修改衝突文件後,執行git add . (即add 全部修改),而後git commit -s 寫評論,而後git push origin HEAD:refs/for/$branch提交入庫便可 ($branch爲你的當前工做分支)。