एसओ प्रश्न के विकल्प के रूप में " आप गिट-मर्ज के साथ चयनात्मक फ़ाइलों को कैसे मर्ज करते हैं? ", मुझे अभी यह गिटहब थ्रेड मिला, जो गिट रीड-ट्री के आधार पर पूरे उपनिर्देशिका को विलय करने के लिए और अधिक अनुकूलित किया जा सकता है :
- मेरा भंडार =>
cookbooks
मेरा भंडार लक्ष्य निर्देशिका =>cookbooks/cassandra
- दूरस्थ रिपॉजिटरी =>
infochimps
दूरस्थ रिपॉजिटरी स्रोत जिसे मैं cookbooks/cassandra=> में मर्ज करना चाहता हूंinfochimps/cookbooks/cassandra
यहां वे कमांड हैं जिनका उपयोग मैंने उन्हें मर्ज करने के लिए किया था
git Remote add -f infochimps git: //github.com/infochimps/cluster_chef.it
git मर्ज --allow-unrelated-histories -s ours --no-प्रतिबद्ध infochimps / master
(यह 'हमारी' रणनीति ( -s ours) का उपयोग करके एक मर्ज करता है , जो स्रोत शाखा से परिवर्तन को दिखाता है। यह इस तथ्य को रिकॉर्ड करता है जिसे infochimps/masterविलय कर दिया गया है, वास्तव में लक्ष्य शाखा में किसी भी फाइल को संशोधित किए बिना)
- में ही मिला
infochimps/cookbooks/cassandraलेंcassandra
git वाच-ट्री - उपसर्ग = cassandra / -u infochimps / master: cookbooks / cassandra
यह केवल आवश्यक स्रोत उपनिर्देशिका यानी के लिए पेड़ पढ़ता है cookbooks/cassandra, की नदी के ऊपर शाखा पर स्रोत भंडार।
ध्यान दें कि लक्ष्य उपनिर्देशिका नाम भी होना चाहिए cookbooks/cassandra, या आप देखेंगे:
fatal: Not a valid object name
git कमिट -m 'इनचेकिंग कैसेंड्रा में विलय'
परिशिष्ट
यह विचित्र है, [मुझे संपादित करें] - लेकिन read-treeकदम संभवतः इस तरह विफल हो सकता है:
error: Entry 'infochimps/cookbooks/cassandra/README' overlaps with 'cookbooks/cassandra/README'. Cannot bind.
... तब भी जब दोनों फाइलें समान हैं । यह मदद कर सकता है:
git rm -r cassandra
git read-tree --prefix=cassandra/ -u infochimps/master:cookbooks/cassandra
लेकिन बेशक, मैन्युअल रूप से सत्यापित करें कि यह वही करता है जो आप चाहते हैं।