अद्यतन: ठीक है, मुझे यह पोस्ट किए कई साल हो गए हैं! HEAD को अपस्ट्रीम से तुलना करने के अपने विशिष्ट उद्देश्य के लिए, मैं अब उपयोग करता हूं @{u}
, जो कि एक शॉर्टकट है जो अपग्रेड ट्रैकिंग शाखा के HEAD को संदर्भित करता है। (देखें https://git-scm.com/docs/gitrevisions#gitrevisions-emltbranchnamegtupstreamemegemmasterupstreamememuem )।
मूल उत्तर: मैंने इस समस्या को भी हल किया है। मैं अक्सर एकल रिपॉजिटरी में कई रीमेक का उपयोग करता हूं, और यह भूल जाना आसान है कि आपकी वर्तमान शाखा किसके खिलाफ ट्रैकिंग कर रही है। और कभी-कभी यह जानना आसान होता है, जैसे कि जब आप अपने स्थानीय कमिट को देखना चाहते हैं git log remotename/branchname..HEAD
।
यह सब सामान git config वैरिएबल में संग्रहित है, लेकिन आपको git config आउटपुट को पार्स करने की आवश्यकता नहीं है। यदि आप किसी चर के नाम के बाद git कॉन्फिगर करते हैं, तो यह केवल उस वेरिएबल के मान को प्रिंट करेगा, जिसकी आवश्यकता नहीं है। इस बात को ध्यान में रखते हुए, यहां आपकी वर्तमान शाखा के ट्रैकिंग सेटअप के बारे में जानकारी प्राप्त करने के लिए कुछ कमांड हैं:
LOCAL_BRANCH=`git name-rev --name-only HEAD`
TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge`
TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote`
REMOTE_URL=`git config remote.$TRACKING_REMOTE.url`
मेरे मामले में, चूंकि मुझे केवल अपने वर्तमान रिमोट का नाम पता करने में दिलचस्पी है, इसलिए मैं यह करता हूं:
git config branch.`git name-rev --name-only HEAD`.remote
git remote show origin
। अन्य प्रश्न में मुख्य उत्तर यहाँ सरल उत्तर के चारों ओर लिपटी हुई एक पटकथा है, जो कुछ के लिए उपयोगी हो सकती है। उम्मीद है कि यह सवाल पूरी तरह से बंद नहीं होगा।