似乎有做這個沒有直接的方法,所以我寫了一個簡短的腳本:
#!/bin/bash
git cherry -v stable dev | grep + | cut -d ' ' -f 3- > /tmp/unmerged
xargs -a /tmp/unmerged -I{} git --no-pager log stable --pretty=oneline --grep {} | cut -d ' ' -f 2- > /tmp/cherry-picked
diff /tmp/unmerged /tmp/cherry-picked
說明:
git cherry -v stable dev | grep + | cut -d ' ' -f 3- > /tmp/unmerged
寫道承諾,只有在dev
存在提交的信息科。這些提交包括那些已被挑選並更改爲stable
分支的提交,並且我們需要在下一步中過濾掉這些提交。
xargs -a /tmp/unmerged -I{} git --no-pager log stable --pretty=oneline --grep {} | cut -d ' ' -f 2- > /tmp/cherry-picked
從stable
中輸出出現的消息(1)出現時具有相同的消息。換句話說,/tmp/cherry-picked
存儲所有被挑選並從dev
更改爲stable
的提交。
最後,diff /tmp/unmerged /tmp/cherry-picked
給出了在dev
上的所有提交,其中在stable
上沒有發現具有相同提交消息的提交。
如果你只是想清理'dev'分公司爲了不具有多次提交反覆變化,你可以做'git的變基stable'。當然,那麼你必須清理所有的衝突。 –
你有沒有強迫推'dev'? – max630
@ max630不是。 'dev'分支受gerrit保護。 – lz96