似乎有做这个没有直接的方法,所以我写了一个简短的脚本:
#!/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