यह अच्छा करना मुश्किल है। गिट में, एक शाखा सिर्फ एक प्रतिबद्धता के लिए एक ऑटो-एडवांसिंग पॉइंटर है, और एक प्रतिबद्धता पर इसके किसी भी शाखा नाम हो सकते हैं।
your master: y1---y2---y3
/
master: a---b---c---d---e
\
feature: f1---f2---f3---f4
आप शाखा "मास्टर" की जाँच की c
पर, और y1
प्रतिबद्ध, y2
, और y3
: इस मामले पर विचार करें। आपका इतिहास इस प्रकार a b c y1 y2 y3
जैसा दिखता है। इस बीच मास्टर d
और e
तक उन्नत हो गया है, लेकिन किसी ने फीचर शाखा बनाई है और c
पर आधारित है। गिट के पास यह निर्धारित करने का कोई तरीका नहीं है कि आपकी शाखा master
से feature
के बजाय आई है, इसलिए सबसे अच्छा आपके पास विलय करने के लिए शाखाओं का विकल्प होगा।
क्या आप इसे स्वचालित रूप से करने के लिए थे, आपको सबसे छोटी शाखा, या सबसे लंबी शाखा, या सबसे कम/कम से कम काम करने वाले या किसी अन्य चीज़ के बारे में एक ह्युरिस्टिक लागू करना होगा। स्वाभाविक रूप से, चूंकि बहुत सारे विकल्प हैं, इसलिए git
अंतर्निहित फ़ंक्शन के लिए यह वास्तव में एक अच्छा विकल्प नहीं है। हालांकि, Git के "प्लम्बिंग" कार्यों का उपयोग कर, आप अपने खुद लिख सकते हैं:
#!/bin/bash
# Tries to determine a good merge base from among all local branches.
# Here used, a "good" merge base is the one sharing the most recent commit
# on this branch. This function will exit 1 if no branch is found,
# or exit 2 in a tie.
#
# Untested - use at your own risk.
MAX_SEARCH=20 # only search the last 20 commits on this branch
FOUND=0
LAST_BRANCH=
# iterate through the commits, most recent first
for COMMIT in $(git rev-list --max-count=$MAX_SEARCH HEAD); do
# check every local branch
for BRANCH in $(git for-each-ref --format="%(refname)" refs/heads); do
# look for the commit in that branch's history
if (git rev-list $BRANCH | fgrep -q COMMIT); then
echo $BRANCH
FOUND=$((FOUND + 1))
LAST_BRANCH="$BRANCH"
fi
done
if [ $FOUND -gt 1 ]; then
# more than one choice; exit
exit 2
elif [ $FOUND -eq 1 ]; then
git merge $LAST_BRANCH
exit 0
fi
done
exit 1 # could not find a parent
स्रोत
2012-11-01 17:01:18
के संभावित डुप्लिकेट (http [एक शाखा की मूल शाखा खोजें]: // stackoverflow।com/प्रश्न/3161204/लगता है-माता पिता के शाखा-ऑफ-एक शाखा) – pisaruk