Я хочу увидеть список только не общих коммитов между двумя ветвями.
Как я могу получить такой вывод?
В основном сводка git diff -y master new-feature
между двумя ветвями:
master new-feature
-------------------------------------|--------------------------------------
xxx - Jan 1st 2018 - initial commit | xxx - Jan 1st 2018 - initial commit
xxx - Feb 1st 2018 - fix a bug | xxx - Feb 1st 2018 - fix a bug
> xxx - Mar 1st 2018 - WIP almost done
xxx - Apr 1st 2018 - fix another bug | xxx - Apr 1st 2018 - fix another bug
xxx - May 1st 2018 - fix more bugs | xxx - May 1st 2018 - fix more bugs
> xxx - Jun 1st 2018 - Ready to merge!
xxx - Jul 1st 2018 - latest patches <
Решение : Я не знаю, как сделать из этого головы или хвосты, но я думаю, git log --graph
выполняет это, просто с очень запутанным визуальным стилем:
git log --left-right --graph --cherry-pick --oneline master
или это?
Еще лучше, git diff -y --suppress-common-lines master new-feature
- это то, что я действительно хочу:
master new-feature
-------------------------------------|--------------------------------------
> xxx - Mar 1st 2018 - WIP almost done
> xxx - Jun 1st 2018 - Ready to merge!
xxx - Jul 1st 2018 - latest patches <
Решение: Вы, вероятно, не можете с одним git, но, согласно ответу @ torek , вы можете получить в основном там с git rev-list
:
git rev-list --left-right master...new-feature
>eb57618eed654685a7999da847628dc5eb27313f
>0da0196ab24542a1a1697b1c0c5efeef6d09e027
>9452f57d97e5fc86e773e7a9fca488b7a0d44a0c
<4fc12fe25a127f8f0dfddf7625c22656c7b2c7c1
<9c0058dcabacfc6560f4fbaf73ea55dd70d27036
>5117fcd041793898683f9469aac00337e9fadd8b
Или даже только это?
И что более важно, представление в стиле git diff --right-only master new-feature
выполнит работу:
commits only in new-feature
-------------------------------------
xxx - Mar 1st 2018 - WIP almost done
xxx - Jun 1st 2018 - Ready to merge!
Который, конечно, можно изменить, чтобы получить противоположное представление git diff --right-only new-feature master
commits only in master
-------------------------------------
xxx - Jul 1st 2018 - latest patches
Решение : Как @ brentjanderson указывает , git log master..new-feature
и git cherry -v master
оба делают это:
git cherry -v master..new-feature
+ c00335cd93898683f9469aafad8a8476227b117f WIP do things
+ f5c86e777d97e5f3e7a9fca488b79a0d44ac9452 WIP do more
+ 0ef6ddda576180196ab7b1c0c57eefe009e027dc Finished!
а также
git log master..new-feature --format="%h - %ad - %s" --date=format:'%b %d %Y'
c00335cd - Jan 01 2018 - WIP do things
f5c86e77 - Feb 01 2018 - WIP do more
0ef6ddda - Mar 01 2018 - Finished!
P.S. Я пытался git checkout new-feature; git log --left-right --graph --cherry-pick --oneline master
раньше, но я не могу сделать вывод или рассказы (или хвосты) о выходе. На самом деле, если подумать, я поставил на вывод, повернул его вбок и сыграл его как карту возбуждающего велосипеда. Хм ...