मूल शाखा के फ़ाइल के संस्करण के मूल में वापस कैसे करें


425

मैं अपने स्थानीय कंप्यूटर की मास्टर शाखा में दूरस्थ सर्वर से रेपो के क्लोन मास्टर-शाखा में हूँ।

मैंने एक फ़ाइल अपडेट की, और मैं दूरस्थ मास्टर शाखा से मूल संस्करण पर वापस लौटना चाहता हूं।

मैं यह कैसे कर सकता हूँ?

जवाबों:


874

यह मानते हुए कि आपने फ़ाइल को कमिट नहीं किया है, या इसे इंडेक्स में जोड़ें, फिर:

git checkout -- filename

यह मानकर कि आपने इसे इंडेक्स में शामिल किया है, लेकिन इसे प्रतिबद्ध नहीं किया है:

git reset HEAD filename
git checkout -- filename

यह मानते हुए कि आपने इसे किया है, तब:

git checkout origin/master filename

यह मानते हुए कि आप अपनी शाखा (VERY DESTRUCTIVE) से सभी आवागमन बंद करना चाहते हैं:

git reset --hard origin/master

43
आपका तीसरा विकल्प आपके पहले दो विकल्पों से बहुत अलग है, जिसमें यह सभी फाइलों को छूता है, न कि केवल एक फाइल को। आप इसे और अधिक स्पष्ट रूप से इंगित करना चाह सकते हैं। इसके अलावा क्यों की सिफारिश नहीं git checkout HEAD filenameऔर git checkout origin/master filenameविकल्प एक और दो के लिए, यह और अधिक सुसंगत हो सकता है?
सीबी बेली 6

5
@CharlesBailey: मैंने git checkout origin/master filenameगहुआ के जवाब में विकल्प जोड़ा ।
फ्रैंक

2
@ Cilphex यह आपकी वर्तमान शाखा के सभी प्रहारों को दूर
भगाता है

1
मैंने शाखा शाखा से आकस्मिक रूप से छूट दी है और स्थानीय शाखा को पुनः स्थापित करने की आवश्यकता है। git reset --hard masterअकेले मेरा समाधान था क्योंकि मैं मूल तक नहीं पहुंचना चाहता था। धन्यवाद।
taco

3
@gahooa यह शायद गिट चेकआउट होना चाहिए - फ़ाइल नाम, क्या होगा यदि फ़ाइल को "मास्टर" कहा जाता है, तो आपको एक ऐसा व्यवहार मिलेगा, जिसका इरादा नहीं था।
user2602152

50

मैंने एक ही समस्या का सामना किया है और इस धागे के पार आया हूं, लेकिन मेरी समस्या थी upstream। नीचे git कमांड ने मेरे लिए काम किया।

वाक्य - विन्यास

git चेकआउट {दूरस्थ-नाम} / {शाखा} - {फ़ाइल / path.js}

उदाहरण

git चेकआउट अपस्ट्रीम / डेवलप - पब्लिक / js / index.js


0

यदि आपने इसे अभी तक मास्टर शाखा के लिए प्रतिबद्ध नहीं किया है, तो यह आसान है:

  • मास्टर शाखा से बाहर निकलें (जैसे git checkout -b oops/fluke/dang)
  • वहां अपने परिवर्तन करें (जैसे git add -u; git commit;)
  • मास्टर शाखा वापस जाएं (जैसे git checkout master)

आपके परिवर्तन शाखा oops / fluke / dang में सहेजे जाएंगे; जैसा होगा वैसा ही होगा।

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