2013-04-26 5 views
110

मैं एक गिट शाखा पर काम कर रहा हूं जिसमें कुछ टूटे हुए परीक्षण हैं, और मैं किसी अन्य शाखा से इन परीक्षणों को खींचने के लिए (परिवर्तनों को मर्ज करना, केवल ओवरराइट नहीं करना) खींचना चाहता हूं।क्या गिट में सिर्फ एक फ़ाइल खींचना संभव है?

मैं जानता हूँ कि मैं

git pull origin that_other_branch 

कर सकते हैं, लेकिन यह अन्य फ़ाइलों के बहुत सारे मर्ज करने का प्रयास करेंगे, उस के लिए मैं अभी तैयार नहीं हूं।

क्या किसी अन्य शाखा से केवल निर्दिष्ट फ़ाइल (और सबकुछ नहीं) खींचना और मर्ज करना संभव है?

यह Git pull request for just one file के डुप्लिकेट के रूप उस प्रश्न का सभी उत्तर भंडार संस्करण के लिए स्थानीय स्तर पर बदल फ़ाइल वापस लौटने के लिए कैसे, किसी भी शाखाओं को बदले बिना कर रहे हैं नहीं है।

उत्तर

99

आप लाने के लिए और फिर इस तरह से केवल एक फ़ाइल की जाँच कर सकते हैं:

git fetch 
git checkout -m <revision> <yourfilepath> 
git add <yourfilepath> 
git commit 

git checkout आदेश के बारे में: <revision> - एक शाखा का नाम, यानी origin/master <yourfilepath> भंडार नाम शामिल नहीं है (कि आप GitHub पर फ़ाइल पेज पर copy path बटन पर क्लिक करने से प्राप्त कर सकते हैं), यानी README.md

+19

-एम स्विच द्वारा आवश्यक हैश कोड गिट शाखा -v के साथ मुद्रित किए जा सकते हैं। बहुत बढ़िया! – h22

+2

उत्कृष्ट। इससे मुझे एक से अधिक अवसरों में मदद मिली है। स्पष्टीकरण के लिए, एमएम ध्वज उस प्रतिबद्धता के हैश से खुश है, जिससे आप अपनी एकल फ़ाइल खींचना चाहते हैं। – rd108

+1

यह मेरे लिए भी काम करता है। हालांकि, मैंने रिवर्सन खोजने के लिए अपनी रिमोट शाखा पर गिट लॉग चलाया: उदा। $ गिट लॉग रिमोट/मूल/मास्टर – Dan

190

यहां एक आसान तरीका है जो मैं अभी आया था इसका शोध:

git fetch {remote} 
git checkout FETCH_HEAD -- {file} 
+2

यह सही उत्तर – Picrasma

+2

घातक है: अमान्य संदर्भ: FETCH_HEAD –

संबंधित मुद्दे