दिलचस्प पोस्ट
एक जेनेरिक तरीकों पर एकाधिक वाइल्डकार्ड जावा संकलक (और मुझे!) बहुत ही भ्रमित हैं ओपन सोर्स एपीआईएस के साथ एक जावा ऑब्जेक्ट को एक्सएमएल में बदलने का सबसे अच्छा तरीका क्या है सी ++ 11 रैवल्यूज़ और स्थानांतरित सिमेंटिक्स भ्रम (रिटर्न स्टेटमेंट) मैं पायथन लैंबदास की सूची कैसे बना सकता हूं (सूची की समझ / लूप के लिए)? नोड। जेएसएस एक ही पठनीय धारा को एकाधिक (लिखने योग्य) लक्ष्य में पिपिंग कर रहा है "पैरामीटर मान्य नहीं है" अपवाद लोडिंग सिस्टम। ड्रॉइंग। छवि एक व्युत्पन्न वर्ग में संरक्षित सदस्यों तक पहुंच प्रत्येक WCF कॉल में कस्टम HTTP हैडर को कैसे जोड़ें? Excel 2010 में "फॉर्म कंट्रोल" और "एक्टिवक्स कंट्रोल" के बीच अंतर क्या है? रिकर्सिव संरचना को पुनरावृत्त करके अस्थिर संदर्भ प्राप्त करना क्या किसी को आंतरिक कार्यान्वयन, या केवल सार्वजनिक व्यवहार का परीक्षण करना चाहिए? क्या दो अनुप्रयोग एक ही बंदरगाह को सुन सकते हैं? क्यों एक अप्रयुक्त फ़ंक्शन पैरामीटर मान शून्य करने के लिए डाली? कैसे स्वचालित रूप से एन "अलग" रंग उत्पन्न करने के लिए? Php में महीने का अंतर ढूंढें?

"जीआईटी मर्ज -ज इन्हें" आवश्यक है – लेकिन मुझे पता है कि यह मौजूद नहीं है

मेरे कई रिमोट खजाने हैं जो मुझे एक साथ मर्ज करना चाहते हैं। उन रिपॉजिटरी में से कुछ उप-रिवाज रिमोट (वे मेजबान-विशिष्ट हैं जो डेटा शामिल हैं) के लिए अद्वितीय हैं, अन्य उप-खातों में डेटा शामिल है (माना जाता है) सभी रीमोट्स में आम है

मैं क्या करना चाहता हूं, मूलतः, प्रत्येक रिमोट के लिए "जीआईटी पुल" चलाया जाता है यह दूरदराज के मालिकों के लिए दूरदराज के स्वामी के लिए ट्रैकिंग शाखा पर स्थानीय मास्टर शाखा को फास्ट-फ़ॉरवर्ड करेगा, जो रिमोट पर बदल गए हैं, और आम फाइलों के लिए कुछ नहीं करेंगे क्योंकि वे बदल नहीं पाएंगे।

एक आम फ़ाइल में एक बदलाव (एफ को बदलकर, इसे 'एफ' कहते हैं) कोई समस्या नहीं होनी चाहिए, भले ही वह पहले ही एक रिमोट पर ही हो। जीआईटी-मर्ज द द थिंग थिंग करेंगे और मुझे मेरे समग्र कार्यक्षेत्र में एफ की एक प्रति दे दो, जो कि मैं चाहता हूं। समस्या आती है, अगर एक समान रिमोट पर दूसरे तरीके से एक अलग तरीके से बदल जाता है (इसे 'एफ' कहते हैं)। Git-merge मुझे 'एफ' और 'एफ' का मिश्रित देगा, जो कि मैं क्या नहीं चाहता। मैं चाहता हूं कि सभी "एफ" हो।

जब मैंने साफ़-साफ़ के साथ काम किया तो हमने इसे एक कॉपी-मर्ज कहा। मर्ज का परिणाम हमेशा योगदानकर्ता की एक सटीक प्रति था। ऐसा लगता है जैसे "जीआईटी मर्ज -सैरस" ऐसा होता है, सिवाय इसके कि यह मौजूद नहीं है।

मैं सोच रहा हूँ कि क्या मैं "git-read-tree -m -triial" के साथ कुछ उपवास कर सकता हूं ताकि फास्ट-फॉरवर्ड मार्ग से बाहर निकल सकें, फिर कुछ जादू के साथ git-merge करें और कस्टम मेरेटोल करें जो कि केवल $ $ मर्ज की गई रिमोट फाइल लेकिन इसके साथ भी मुझे नहीं पता कि मैं कैसे git को रोक सकता हूं- एफ 'एफ' को कंपोज़िंग से मर्ज कर दूंगा अगर यह मर्ज तुच्छ है।

मैंने लिंक पढ़ा है क्या "जीआईटी मर्ज -स हमारा" का "उनका" संस्करण है? इस साइट पर, और जूनो हामानो की पोस्ट यह बताते हुए संदर्भों को संदर्भित करती है कि "जीआईटी मर्ज -सैरस" ऐसा एक बुरा विचार है, लेकिन यह मेरे लिए मामला नहीं है मैं पुराने इतिहास को महत्व देता हूं, लेकिन मुझे जहाज़ कूदने और रिमोट साइट पर होने वाले परिवर्तन का पालन करने की आवश्यकता है, जब कोई होता है। स्थानीय साइट पर कोई नया काम नहीं किया गया है। इसे केवल सभी रिमोट साइट्स के एक समग्र रूप से बनाने की जरूरत है, जब अंतिम परिवर्तन किए गए रिमोट से नवीनतम "सामान्य" फाइल ले लीजिए,

किसी भी मदद के लिए अग्रिम धन्यवाद, आप मुझे दे सकते हैं

वेब के समाधान से एकत्रित समाधान ""जीआईटी मर्ज -ज इन्हें" आवश्यक है – लेकिन मुझे पता है कि यह मौजूद नहीं है"

मर्ज = कस्टम-ड्रायवर विशेषता का .gitattributes फ़ाइल में उपयोग के सुझाव के लिए @ वॉनसी के लिए बहुत धन्यवाद। हालांकि यह काम करेगा, मैं गीक्ट फाइलों के साथ अपने कार्यक्षेत्र को प्रदूषित करने के लिए अनिच्छुक हूँ, और जब तक मैं प्रदूषण से बचने के लिए $ GIT_DIR / info / attributes का इस्तेमाल कर सकता हूं, मुझे डॉट-फाइलों को पकड़ने के लिए 2 नियमों की आवश्यकता से परेशान किया गया है गैर डॉट फाइलें

कुछ प्रयोग के बाद मैंने मर्ज के साथ एक समाधान प्राप्त करने में कामयाब रहे। डिफॉल्ट कॉन्फ़िगरेशन वेरिएबल ( gitattributes (5) मैनपेज में उल्लिखित) काम कर रहे हैं। मैंने जो चाल को याद किया था वह मर्ज है। डीफ़ॉल्ट आपके द्वारा पहले से परिभाषित कस्टम ड्राइवर का नाम लेता है; आप इसे कस्टम कमांड को सीधे नहीं देते हैं यहाँ मेरे लिए क्या काम है …

सबसे पहले अपनी कॉपी-मर्ज कस्टम ड्रायवर को परिभाषित करें। आप सीधे शेल कमांड का उपयोग कर सकते हैं; बाहरी स्क्रिप्ट की कोई ज़रूरत नहीं है (बस सुनिश्चित करें कि आप अपना शेल मेटा-वर्ण उद्धृत करते हैं):

 git config merge.copy-merge.name 'Copy Merge' git config merge.copy-merge.driver 'mv %B %A' 

ध्यान दें कि mv सफलता पर 0 देता है, 1 विफलता पर, रिपोर्टिंग के लिए मानदंडों को पूरा करने के लिए "सफलता" को वापस करने के लिए git।

अब जीआईटी को बताएं कि सभी विलय प्रति-विलीन हैं:

 git config merge.default copy-merge 

प्रेस्टो, तुमसे मिलके ख़ुशी हुई! काम हो गया। जीआईटी मर्ज <branch> अब सब कुछ कॉपी-मर्ज कर देगा, इसलिए जिस शाखा पर आप हैं उसमें <branch> पर सभी फाइलों की वास्तविक प्रतियां हैं QED।

यदि आप एक गैर-कॉपी-मर्ज करना चाहते हैं तो बस डिफ़ॉल्ट मर्ज ड्रायवर को रीसेट करें:

 git config --unset merge.default 

अगर आप अधिक चयनात्मक होना चाहते हैं तो विलय छोड़ें। डीफ़ॉल्ट अनसेट और विशेषताएँ का उपयोग करें @ वॉनसी कहता है:

 cd path/to/copy-merge/in echo '* merge=copy-merge' > .gitattributes echo '.* merge=copy-merge' >> .gitattributes 

इसे हर उप-प्राप्ति के शीर्ष पर करो जिसे आप कॉपी-मर्ज करना चाहते हैं। अगर कोई उप-सबट्री है जिसे आप कॉपी-मर्ज नहीं करना चाहते हैं, तो आप इसे फिर से बंद कर सकते हैं:

 cd path/to/copy-merge/in/path/to/normal-merge/in echo '* merge' > .gitattributes echo '.* merge' >> .gitattributes 

चेतावनी: आपके काम के पेड़ को बहुत सारे ग्रिटेट्स फाइल्स के साथ कूड़े हुए, भ्रम की स्थिति पैदा करने के लिए बाध्य है, खासकर यदि आप अन्य निर्देशिकाओं में "*। Bin-marge" जैसी चीजों का उपयोग करते हैं, तो उन सभी विलीनियों को बाध्य करने के लिए। इस प्रकार की वस्तु के लिए $ GIT_DIR / info / attributes का उपयोग करना बेहतर हो सकता है, क्योंकि इसकी सर्वोच्च प्राथमिकता है

दूसरे दिन इस समस्या में चले गए:

http://seanius.net/blog/2011/02/git-merge-s-theirs/

 git merge -s ours ref-to-be-merged git diff --binary ref-to-be-merged | git apply -R --index git commit -F .git/COMMIT_EDITMSG --amend 

गीता के संस्करण 1.7.1 में, आप और "-Xtheirs" तर्क के साथ मर्ज करने के लिए एक "उनकी" रणनीति पारित कर सकते हैं।

git merge -Xtheirs otherBranch

निश्चित नहीं है कि क्या आप जो करने की कोशिश कर रहे हैं, इसके लिए लागू होता है, लेकिन संभवतः यह एक शॉट के लायक है

(यह भी संबंधित प्रश्न देखें)

(अपडेट 2011:
उत्तर " एक शाखा की तरह एक शाखा बनाने के लिए जीआईटी कमांड " एक जीआईटी मर्ज के अनुकरण के सभी संभावित तरीकों को सूचीबद्ध करता है- उनके ` )


विशिष्ट फ़ाइलों / पेड़ों के लिए जिन्हें आप कॉपी-मर्ज करना चाहते हैं, आप एक गिटैट्यूवर मूल्य सेट कर सकते हैं जैसे मैं इस SO प्रश्न में उल्लेख करता हूं, कस्टम मर्ज ड्रायवर को परिभाषित करता है।
मर्ज विशेषता से जुड़े स्क्रिप्ट हमेशा मर्ज के परिणाम के रूप में दूरस्थ फ़ाइल को सुनिश्चित करने के लिए सुनिश्चित करें (यह उदाहरण के लिए एक उदाहरण के लिए देखें, यद्यपि विपरीत परिदृश्य के लिए – स्थानीय संस्करण को बनाए रखना)

 echo * merge=keepTheir > dirWithCopyMerge\.gitattributes git config merge.keepTheir.name "always keep theirduring merge" git config merge.keepTheir.driver "keepTheir.sh %O %A %B" 

उप-पेड़ के शीर्ष पर एक ग्रिटेटिटाइट सेट करके आप को कॉपी-मर्ज किए जाने के साथ, अपनी सामग्री के रूप में ' * merge=keepTheir ' के साथ, आप उस सबट्री की सभी फ़ाइलों के लिए कस्टम मर्ज ड्रायवर को प्रभावी ढंग से विशेषता देते हैं (ध्यान दें कि ' * ' वाइल्डकार्ड यहाँ)।

के साथ keeptheir.sh के रूप में:

 mv -f $3 $2 exit 0 

आपको किसी भी "डिफ़ॉल्ट" मर्ज ड्रायवर को संशोधित करने की ज़रूरत नहीं है, और आप अपनी इच्छित फ़ाइलों पर स्वयं को लागू करते हैं।

एक टन अनुसंधान के बाद, सभी इतने शोर के माध्यम से जा रहे हैं, और फिर git बारे में और अधिक सीखना ( क्या यह कभी समाप्त होता है? ), मेरा मानना ​​है कि यह उत्तर कस्टम --strategy theirs को प्राप्त करने का सबसे शोर-मुक्त और इष्टतम तरीका है चालक। मांग पर प्रयोग करने योग्य, कोई gitattributes कूड़े की जरूरत नहीं है

मैं वास्तव में अभी भी थोड़ी चक्कर आ रहा हूं कि क्या यह एक --strategy theirs अनुकरण है, या सबसे उपयोगी checkout --theirs . संघर्ष रिज़ॉल्यूशन विधि हो सकता है कि वे समतुल्य हों, लेकिन मुझे कुछ परिणाम ग्राफ़ का निदान करना होगा जो पूरी तरह से समझें, जो अभी अभी कोई समय नहीं है

@कॉब्रो के लिए प्रॉप्स ठीक विवरण का पीछा करते हुए सही काम कर रहे हैं, और https://stackoverflow.com/a/1911370/35946 में काफी करीब हो रहे हैं

[git:master] है शेल प्रॉम्प्ट डिस्प्ले।

सेट अप

 $ [git:master] git config merge.theirs.name 'simulate `-s theirs`' $ [git:master] git config merge.theirs.driver 'cat %B > %A' # same as `mv` or `cp`, matter of taste 

उपयोग

 $ [git:master] GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge develop 

बोनस: ALIAS

 $ [git:master] git config alias.merge-theirs \!GIT_CONFIG_PARAMETERS=\""'"merge.default=theirs"'"\"\ git\ merge 

उपयोग: ALIAS

 $ [git:master] git merge-theirs develop 

GIT_CONFIG_PARAMETERS के उद्धरण संरचना की सूचना GIT_CONFIG_PARAMETERS , क्योंकि वह कई जटिल मानों को लेने में सक्षम होना चाहिए। उस बोनस कमांड लाइन को प्राप्त करने के लिए प्रयास करने के लिए प्रयास किया।

पीएस GIT_CONFIG_PARAMETERS को SO पर सबसे अच्छा रखा जाना चाहिए, हम लगभग 2016 के साथ कर चुके हैं, https://stackoverflow.com/search?q=git_config_parameters के पास 1 (एक) परिणाम है ( 1 )