मैं भगोड़ों की स्थिति खिड़की से फ़ाइल परिवर्तन कैसे छोड़ सकता हूं?


33

जब भगोड़े-प्लगइन स्थिति विंडो में , का उपयोग कर पहुँचा :Gstatus, यह एक फ़ाइल का उपयोग करने के लिए परिवर्तन करने के लिए संभव है Dऔर प्रतिबद्ध का उपयोग करने के लिए फ़ाइलों को टॉगल करें -

क्या बदलावों को त्यागने के लिए कोई समान शॉर्टकट है, क्या इस हार के साथ मेरा मतलब समान है git checkout -- filename?

अद्यतन करें:

भगोड़ों पर एक सुविधा का अनुरोध मिला github पृष्ठ अंक # 97: चेकआउट / फाइलों को हटाने के लिए शॉर्टकट

उस हिसाब से पसंदीदा तरीका इस्तेमाल हो रहा है :Gread :w

अपडेट 2:

जून 2014 के बाद से यह संभव है Uजैसा कि नीचे Anson द्वारा उत्तर दिया गया है

अद्यतन 3: के बाद से 3 जनवरी 2019 की बाइंडिंग के लिए मैप किया गया हैX

जवाबों:


27

यह कार्यक्षमता जून 2014 में जोड़ी गई थी और डिफ़ॉल्ट रूप से मैप की गई है U

जानकारी का यह टुकड़ा नीचे मदद फ़ाइल में स्थित है :h :Gstatus:

     U     |:Git| checkout HEAD

फ़ीचर अनुरोध और चर्चा:
https://github.com/tpope/vim-fugitive/issues/97

कमिट:
https://github.com/tpope/vim-fugitive/commit/061a81f247538aeb61e165e1551355f289d52f63


अगर यह अनिर्दिष्ट है तो इसे असुरक्षित माना जा सकता है। क्या यह पता लगाना कठिन नहीं होगा कि एक अनिर्दिष्ट जादू कीस्ट्रोके की वजह से आप अपने स्थानीय परिवर्तनों को रोक सकते हैं?
सेह

2
2019 अपडेट अब यह हैX
ओगुज़ बिलगिक

किसी को विशेषाधिकार के साथ संपादित करें, कृपया इसे एक्स में संपादित करें?
१३:०३ बजे

15

आप उपयोग कर सकते हैं भगोड़ा के Greadविभिन्न वैकल्पिक बफर की फाइल के संस्करणों (यानी यह एक फ़ाइल के बफर से किया जाना चाहिए से नहीं के साथ एक बफर की सामग्री बदलने के आदेश :Gstatusबफर)।

  • :Gread(कोई तर्क नहीं) सूचकांक से फ़ाइल के संस्करण का उपयोग करेगा ।
  • :Gread - HEAD कमिट से फ़ाइल के संस्करण का उपयोग करेगा।

:help fugitive-revisionअन्य संशोधन विनिर्देशों की सूची के लिए दस्तावेज़ीकरण देखें जो भगोड़े समर्थन करते हैं (ऊपर दो संभवतः सबसे उपयोगी हैं)।

:Greadकार्यप्रवाह इस तरह आगे बढ़ता है:

  1. :Gread
  2. भगोड़ा वर्तमान बफर को साफ करता है और सूचकांक से सामग्री में पढ़ता है
  3. परिणाम : बफ़र में अब अनुक्रमणिका के समान सामग्री है। कार्यशील ट्री फ़ाइल नहीं बदली गई है।
  4. आप :wफ़ाइल को कार्यशील ट्री में सहेजने के लिए (या :Gread|wयदि आपको पता है कि आप इसे तुरंत सहेजना चाहेंगे) का उपयोग कर सकते हैं।

:Git checkout -- %कार्यप्रवाह इस तरह आगे बढ़ता है:

  1. :Git checkout -- %
  2. Git इंडेक्स में फाइल के वर्जन को वर्किग ट्री में फाइल में कॉपी करता है।
  3. विम ने नोटिस किया कि फ़ाइल को संपादक के बाहर बदल दिया गया है और आपको इसे अनदेखा या पुनः लोड करने के लिए संकेत देता है।
  4. आप फ़ाइल को पुनः लोड करने के लिए विम को बताएं।
  5. परिणाम : वर्किंग ट्री फ़ाइल और बफ़र दोनों में अब इंडेक्स की सामग्री है।

सारांश: :Gread"संपादन शुरू होने के बाद से फ़ाइल बदल गई है" से बचा जाता है, संकेत देता है और जब आप काम करने वाले पेड़ में फ़ाइल को संशोधित करना चाहते हैं, तो आपको निर्णय लेने देता है।


जब बफर कार्यशील पेड़ से फ़ाइल के बजाय फ़ाइल के सूचकांक चरण का प्रतिनिधित्व करता है, तो फ़ाइल :Greadकी सामग्री से पढ़ता है क्योंकि यह कार्यशील पेड़ में डिस्क पर सूचकांक के चरण 0 के बजाय मौजूद है।


फ़ाइल को वापस लाने के लिए गस्टाटस के लिए मैपिंग:au FileType gitcommit nmap <buffer> U :Git checkout -- <c-r><c-g><cr>
मैजकिनटोर

1

फ़ाइल को वापस लाने के लिए gstatus का मानचित्रण:

au FileType gitcommit nmap <buffer> U :Git checkout -- <c-r><c-g><cr>

यह महान काम करता है, केवल नकारात्मक पक्ष यह है कि मुझे वह संवाद मिलेगा जो फ़ाइल डिस्क पर बदल गया है और यदि मैं इसे फिर से लोड करना चाहता हूं। अच्छा होगा यदि यह चुप था।
tidbeck

1
यह और भी बेहतर IMO है क्योंकि आपको इस बात की पुष्टि हो जाती है कि फ़ाइल वास्तव में वापस आ गई है। लेकिन ऑटोमैटिक साइलेंट रीलोड को 'ऑटोरैड' विकल्प ( :help autoread) के साथ किया जा सकता है । अन्य तो आप bufdo eऊपर के भीतर कर सकते हैं au
मेजकिनेटोर

0

अच्छा, आपने कोशिश की :help fugitive?

जाहिरा तौर पर नहीं, इस Git सुविधा के लिए कोई शॉर्टकट नहीं है।


हाँ, मैंने किया। कई बार मुझे ऐसी मदद नहीं मिली है जो कभी मौजूद नहीं थी। क्या आपकी राय यह है कि आपको उस सुविधा के बारे में कभी नहीं पूछना चाहिए जो प्रोग्राम / प्लगइन की मदद में नहीं है?
tidbeck

हाँ यह मेरे साथ भी हुआ: एक ऐसा कार्य था जो मैं करने में सक्षम था, :callलेकिन एक कमांड जुड़ा नहीं था। मुझे प्लगइन का नाम याद नहीं है ... संरेखित करें? जो भी हो, मेरी राय यह है कि किसी को पूछने से पहले डॉक्स पढ़ना चाहिए। जो तुमने किया। तो यह अच्छा है। लेकिन डॉक्स पढ़ने के बाद तार्किक दूसरा चरण, प्लगइन के स्रोत को देखने के लिए IMO होगा और देखें कि क्या वहां कुछ उपयोगी कार्य है। जो आपको करना चाहिए। लेकिन, AFAIK, भगोड़ा git checkoutसभी के साथ सौदा नहीं करता है ताकि आपके मौके पतले हों। आप शायद वापस करने के लिए गिर करने की आवश्यकता होगी :!git checkout -- filename
romainl

ठीक है, स्पष्टीकरण के लिए धन्यवाद। मुझे लगता है कि आप स्रोत कोड पर एक नज़र डालने के संबंध में एक वैध बिंदु बनाते हैं लेकिन एक ही समय में यदि जानकारी केवल स्रोत कोड में उपलब्ध है तो यह यहाँ एक मान्य क्यूए हो सकता है। आपके उत्तर को स्वीकार करेगा और उपयोग जारी रखेगा :Git checkout -- %
tidbeck

0

हालांकि इसका कोई मतलब नहीं है, लेकिन मुझे लगता है कि मैं कभी-कभी ऐसा करने के बारे में सोचता हूं:

$ git status
...
#
#   modified:   .rvmrc
#   modified:   app/views/admin/base/index.html.erb
#   modified:   config/routes.rb
#
...

$ # mouse-copy the files i want to reset, and paste them into the next command

$ cat | xargs git checkout
app/views/admin/base/index.html.erb
config/routes.rb
^D

काम जल्दी खत्म करना।

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