अलग-अलग गिट ब्रांच में बिना ब्रांच बदले फाइल देखें


620

क्या उस शाखा की जाँच किए बिना किसी फ़ाइल को एक शाखा में खोलना संभव है? कैसे?

अनिवार्य रूप से मैं हर समय शाखाओं को स्विच किए बिना अपने जीथूब पेज शाखा में एक फ़ाइल खोलने में सक्षम होना चाहता हूं । मैं इसे संशोधित नहीं करना चाहता, बस इसे देखना चाहता हूं।


15
सभी उत्तर इस तथ्य से चूक गए कि आपको फ़ाइल का पूर्ण पथ निर्दिष्ट करने की आवश्यकता है git show: stackoverflow.com/questions/610208/… और stackoverflow.com/questions/2364147/…
VonC

15
इन दिनों, आप git show a1b35:./file.txtरिश्तेदार पथ का उपयोग करने के लिए उपयोग कर सकते हैं ।
स्टीव बेनेट

2
@VonC - शाखा-जागरूक टैब पूरा होने के लिए शुक्रिया अदा करना :)
ल्यूक

अधिक दिलचस्प अंतर दिखा सकता हैgit diff <other_branch> <path>
स्लावोमिर लेनार्ट

"A1b35" के साथ ऊपर की सापेक्ष फ़ाइल उदाहरण, वह शाखा का नाम है - तो निश्चित रूप से अपनी शाखा का नाम वहां रखें।
लोनरंगर

जवाबों:


876

यह काम करना चाहिए:

git show branch:file

जहां शाखा कोई भी रेफरी हो सकती है (शाखा, टैग, HEAD, ...) और फ़ाइल फ़ाइल का पूर्ण पथ है। इसे निर्यात करने के लिए आप इसका उपयोग कर सकते हैं

git show branch:file > exported_file

आपको कुछ संबंधित सवालों के जवाब में VonC को भी देखना चाहिए :

अद्यतन 2015-01-19:

आजकल आप रिश्तेदार रास्तों का उपयोग कर सकते हैं git show a1b35:./file.txt


22
और आप फ़ाइल को vim के रूप में अच्छी तरह से खोल सकते हैं: git show branch:file | vim -(नोटिस "" | "पाइप, और vim कमांड के बाद पीछे चल रहा डैश:vim -
ग्रेग बरगार्ड

3
@GregBurghardt मेरे लिए जो काम करता है, वह कुछ-कुछ वैसा ही हैvim -c "set syntax=html" -
raphaëλ

2
काश, मैं इस उत्तर को एक से अधिक बार, ईमानदारी से उठा पाता।
विन्सेन्ट फोरमंड

2
यह केवल स्थानीय शाखाओं को दिखाता है, यह सर्वर पर सभी शाखाओं को नहीं दिखाता है
विलियम एंट्रीकेन

3
@FullDecent, मैं इसके origin/my_remote_branchसाथ ठीक उपयोग करने में सक्षम था । या आप वास्तविक सर्वर संस्करण का मतलब है? अगर आप ऐसा चाहते हैं, तो आपको बस git fetchपहले की जरूरत है ।
rsmith54

53
git show somebranch:path/to/your/file

आप कई फाइलें भी कर सकते हैं और उन्हें संक्षिप्त कर सकते हैं:

git show branchA~10:fileA branchB^^:fileB

आपको फ़ाइल को पूर्ण पथ प्रदान करने की आवश्यकता नहीं है, सापेक्ष पथ स्वीकार्य हैं जैसे:

git show branchA~10:../src/hello.c

यदि आप फ़ाइल को स्थानीय निर्देशिका में प्राप्त करना चाहते हैं (केवल एक फ़ाइल वापस करें) तो आप चेकआउट कर सकते हैं:

git checkout somebranch^^^ -- path/to/file

38

एक फ़ाइल में देखने के लिए एक सरल, नौसिखिया अनुकूल तरीका: git gui browser <branch>जो आपको किसी भी फ़ाइल की सामग्री का पता लगाने की सुविधा देता है।

यह फ़ाइल मेनू में भी है git gui। अधिकांश अन्य -मोर एडवांस्ड- जीयूआई रैपर (क़ित्, ईजीट, आदि ..) ब्राउजिंग / ओपनिंग फाइल भी प्रदान करते हैं।


इस आदेश के परिणामस्वरूप "git: 'gui' कोई git कमांड नहीं है। 'git --help' देखें। मैं एक नौसिखिया हूं; क्या चल रहा है?
स्कॉट बिग्स

2
यह वास्तव में (मेरे आश्चर्य के लिए) काम करता है, git-scm.com/docs/git-gui देखें - मैं git संस्करण का उपयोग करता हूं 2.5.2.windows.1
anhoppe

यह उत्तर बहुत मददगार था! धन्यवाद। उल्लेख करना चाहिए कि im खिड़कियों पर गिट मार का उपयोग कर।
विलय

क्या रेंजर को गिट गुई के रूप में उपयोग करना संभव है?
अक्जेंट्री

1
@ScottBiggs आप एक नौसिखिया नहीं हैं, आप एक अमानक सेटअप का उपयोग कर रहे हैं।
अशनूर

20

यदि आप Emacs का उपयोग कर रहे हैं, तो आप C-x v ~उस फ़ाइल का एक अलग संशोधन देखने के लिए टाइप कर सकते हैं जिसे आप वर्तमान में संपादित कर रहे हैं (टैग, शाखाएँ और सभी कार्य को राख)।


क्या विम में इसे पाने का कोई तरीका है? (मैं प्लग-इन के लिए खुला हूं।)
NHDaly

4

अपनी ~/.gitconfigफ़ाइल में निम्न जोड़ें

[alias]
  cat = "!git show \"$1:$2\" #"

और फिर यह प्रयास करें

git cat BRANCHNAME FILEPATH

व्यक्तिगत रूप से मैं एक बृहदान्त्र के बिना अलग मापदंडों को प्राथमिकता देता हूं। क्यों? यह विकल्प checkoutकमांड के मापदंडों को प्रतिबिंबित करता है , जिसे मैं बार-बार उपयोग करता हूं और मुझे इस तरह से showकमांड के विचित्र कोलन-सेपरेटेड पैरामीटर की तुलना में याद रखना बहुत आसान लगता है ।


यह बहुत अधिक यादगार है, धन्यवाद।
ट्रैवलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.