मुझे संदेह है कि आप यहां भ्रमित हैं क्योंकि यह मौलिक रूप से भ्रमित है। चीजों को बदतर बनाने के लिए, जब आप रिबास कर रहे होते हैं, तो हमारा पूरा / उनका सामान स्विच रोल्स (पीछे की ओर हो जाता है) होता है।
अंत में, एक के दौरान git merge
, "हमारा" शाखा शाखा आप विलय कर रहे हैं को संदर्भित करता है में :
git checkout merge-into-ours
और "उनकी" शाखा से तात्पर्य उस एकल (एकल) शाखा से है जिसका आप विलय कर रहे हैं:
git merge from-theirs
और यहाँ "हमारा" और "उनकी" कुछ समझ में आता है, के रूप में भले ही "उनकी" शायद तुम्हारा वैसे भी है, "उनकी" एक तुम थे नहीं है पर जब आप भाग गया git merge
।
वास्तविक शाखा नाम का उपयोग करते समय यह बहुत अच्छा हो सकता है, यह अधिक जटिल मामलों में गिर जाता है। उदाहरण के लिए, ऊपर के बजाय, आप ऐसा कर सकते हैं:
git checkout ours
git merge 1234567
जहां आप कच्चे कमिट-आईडी द्वारा विलय कर रहे हैं। इससे भी बदतर, आप यह भी कर सकते हैं:
git checkout 7777777 # detach HEAD
git merge 1234567 # do a test merge
जिस स्थिति में कोई शाखा के नाम शामिल नहीं हैं!
मुझे लगता है कि यह यहाँ थोड़ी मदद है, लेकिन वास्तव में, gitrevisions
वाक्यविन्यास में , आप एक द्वंद्व में विलय के दौरान सूचकांक में एक व्यक्तिगत पथ का उल्लेख कर सकते हैं।
git show :1:README
git show :2:README
git show :3:README
स्टेज # 1 फाइलों का सामान्य पूर्वज है, स्टेज # 2 लक्ष्य-शाखा संस्करण है, और चरण # 3 वह संस्करण है जिसे आप विलय कर रहे हैं।
"हमारा" और "उनकी" धारणाओं के दौरान चारों ओर स्वैप हो जाने का rebase
कारण यह है कि रीबेज चेरी-पिक्स की एक श्रृंखला को एक अनाम शाखा (अलग किए गए हेड मोड) में काम करता है। लक्ष्य शाखा अनाम शाखा है, और मर्ज से शाखा आपकी मूल (पूर्व-रीबेस) शाखा है: इसलिए "--ours" का अर्थ है अनाम एक रिबास का निर्माण हो रहा है जबकि "- उनकी" का अर्थ है "हमारी शाखा का विद्रोह किया जा रहा है" ।
Gitattributes प्रविष्टि के लिए: इसका प्रभाव हो सकता है: "हमारा" वास्तव में "आंतरिक रूप से चरण 2" का उपयोग करता है। लेकिन जैसा कि आप ध्यान दें, यह वास्तव में उस समय नहीं है, इसलिए इसका प्रभाव यहां नहीं होना चाहिए ... ठीक है, तब तक नहीं जब तक कि आप इसे शुरू करने से पहले काम के पेड़ में कॉपी न करें।
इसके अलावा, वैसे, यह हमारे और उनके सभी उपयोगों पर लागू होता है, लेकिन कुछ एक संपूर्ण फ़ाइल स्तर पर हैं ( -s ours
एक मर्ज रणनीति के लिए, git checkout --ours
एक मर्ज संघर्ष के दौरान) और कुछ एक टुकड़ा-दर-टुकड़ा आधार पर हैं ( -X ours
या -X theirs
एक दौरान; -s recursive
मर्ज)। जो शायद किसी भी उलझन में मदद नहीं करता है।
मैं इन के लिए एक बेहतर नाम के साथ कभी नहीं आया, हालांकि। और: VonC के एक अन्य प्रश्न के उत्तर को देखें , जहां git mergetool
इन के लिए और अधिक नामों का परिचय दिया गया है, उन्हें "स्थानीय" और "रिमोट" कहा जाता है!