वहाँ वास्तव में एक आदेश Git cherry नामित प्रिंट है कि हर प्रतिबद्ध है कि दो शाखाओं के बीच विलय नहीं किया जाता है।
प्रत्येक मुद्रित प्रतिबद्धता के लिए, "+" संकेत का अर्थ है कि आप इसे विलय कर सकते हैं, "-" संकेत का अर्थ है कि आप पहले से ही चेरी चुनते हैं।
आउटपुट सुंदर होने से बहुत दूर है।
जो लोग SVN से आया है और svnmerge.py किया जाता है के लिए, मैं Git के लिए "-l svnmerge लाभ" बराबर बैश स्क्रिप्ट एक बना दिया है कि मैं gitavail कहा जाता है,:,
#!/bin/bash
# get current branch
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
# get tracked branch (1st argument), if no arg or arguments are only options, assume master
if test -z $1 || grep -q '^-' <<< $1;
then TRACKED_BRANCH=master
else TRACKED_BRANCH=$1; shift
fi
# Log commits available for merge from tracked branch
LOG_OPTIONS=$*
for i in $(git cherry $CURRENT_BRANCH $TRACKED_BRANCH | egrep '^\+' | awk '{print $2}'); do git --no-pager log -n1 $i ${LOG_OPTIONS}; echo; done
मान लें कि आप एक शाखा पर हैं और आप को सूचीबद्ध करने के क्या मास्टर शाखा से विलय करने के लिए पात्र है, बस चलाना चाहते हैं:
gitavail --name-status
और तुम बहुत समान करने के लिए "svnmerge लाभ -l" एक निर्गम होगा।
मुझे लगता है कि चेरी-पिक कामों को मैन्युअल रूप से संशोधित नहीं किया जाना चाहिए (संघर्षों के बारे में क्या?), अगर patch id परिवर्तन, गिट चेरी को यह नहीं पता होगा कि प्रतिबद्धता पहले से ही चेरी-चुने गए हैं।
स्रोत
2013-09-11 16:15:05
जबकि आपके पास ऐसा करने का एक अच्छा कारण है, तो आमतौर पर चेरी को शाखा में बहुत से काम करने के लिए यह एक बुरा विचार है। –