2017-02-07 8 views
6

पर स्विचिंग मैं अपनी परियोजना कर रहा हूं जबकि किसी बिंदु पर मुझे पता चला कि एक चीज काम करना बंद कर दी गई है। जब मैं सही तरीके से काम कर रहा था, तो मुझे अपने कोड की स्थिति देखने की ज़रूरत थी, इसलिए मैंने गिट चेकआउट का उपयोग करने का फैसला किया है (क्योंकि मैं कुछ-जांच करना चाहता था)।गिट चेकआउट - वापस HEAD

git checkout SHA-HEAD 

error: Your local changes to the following files would be overwritten by checkout: 
    [list of files] 
Please, commit your changes or stash them before you can switch branches. 
Aborting 

मैं काफी यकीन है कि मैं नहीं गया है: और इसलिए मैं

git checkout SHA 

दो बार समय पहले बिंदु जहाँ से मैं सिर पर नहीं जा सकते करने के लिए जा रहा है, उत्पादन पीछा कर रहा है किया है कुछ बदल गया आदेश

git checkout master 

समान उत्पादन देता है।

क्या हेड पर वापस जाने का कोई तरीका है?

इतिहास "कूदने" का सुरक्षित तरीका क्या है?

+0

आप उन परिवर्तनों को 'Git स्वच्छ -f' सभी ट्रैक न किए गए फ़ाइलों को साफ करेंगे रखने के लिए नहीं करना चाहते हैं। फिर – gmuraleekrishna

+0

मास्टर करने के लिए चेकआउट 'त्रुटि: ...' संदेश का अर्थ है कि आप या आपने जो कुछ किया है, शायद अप्रत्यक्ष रूप से- * किया * फ़ाइलों को बदल दिया। आप इन परिवर्तनों को त्यागने या ओवरराइट करने के लिए गिट को बता सकते हैं, या देखने के लिए 'गिट स्टेटस' और/या 'गिट diff' का उपयोग कर सकते हैं, ठीक से बदल गए हैं। यह किसी प्रकार के लाइन-एंडिंग संशोधन के रूप में सरल हो सकता है, या कुछ कमांड जो फ़ाइल में लिखे गए पृष्ठभूमि में चलता है। (इसके अलावा: "हेड पर वापस जाएं" गिट में कोई समझ नहीं आता है, क्योंकि आप हमेशा * हेड पर हैं: 'HEAD' का शाब्दिक अर्थ है "वर्तमान प्रतिबद्धता"। आप * हेड बदल सकते हैं, जिसके बाद आप अभी भी सिर पर हैं , सिर्फ एक अलग सिर। यह है ... वाक्यांश के लिए मुश्किल है :-)) – torek

+1

गिट तंत्र के साथ भरा हुआ है, इसलिए यहां दो हैं: 'गिट रीसेट - हार्ड हेड' का मतलब है "मिलान करने के लिए इंडेक्स और वर्क-पेड़ को रीसेट करें सिर ", यानी, परिवर्तनों को फेंक दें। या: 'गिट चेकआउट -एफ मास्टर' का अर्थ है "हेड को 'मास्टर' के रूप में बदलें, भले ही इसका मतलब कुछ काम फेंकना": '-f' का अर्थ है "बल"। – torek

उत्तर

11

आप stash (अस्थायी बॉक्स में परिवर्तनों को सहेज सकते हैं), फिर master शाखा हेड पर वापस कर सकते हैं।

$ git add . 
$ git stash 
$ git checkout master 

कूद से अधिक वापस और आगे प्रतिबद्धता:

  • एक विशिष्ट commit-sha पर जाएं।

    $ git checkout <commit-sha> 
    
  • तुम यहाँ तो अप्रतिबद्ध परिवर्तन है, तो आप एक नई शाखा चेकआउट कर सकते हैं, जोड़े, प्रतिबद्ध, दूरस्थ करने के लिए वर्तमान शाखा पुश।

    # checkout a new branch, add, commit, push 
    $ git checkout -b <branch-name> 
    $ git add . 
    $ git commit -m 'Changes in the commit' 
    $ git push origin HEAD  # push the current branch to remote 
    
    $ git checkout master   # back to master branch now 
    
  • आप विशिष्ट में परिवर्तन के लिए प्रतिबद्ध है और परिवर्तन रखने के लिए नहीं करना चाहती है, तो आप stash या reset तो master (या किसी भी अन्य शाखा) के लिए चेकआउट कर सकते हैं।

    # stash 
    $ git add -A 
    $ git stash 
    $ git checkout master 
    
    # reset 
    $ git reset --hard HEAD 
    $ git checkout master 
    
  • बाहर की जाँच के बाद एक विशिष्ट आप तो कोई अप्रतिबद्ध परिवर्तन अगर प्रतिबद्ध, बस करने के लिए master या other शाखा वापस।

    $ git status   # see the changes 
    $ git checkout master 
    
    # or, shortcut 
    $ git checkout -  # back to the previous state 
    
+0

जिसने मेरी समस्या हल की - आंशिक रूप से। फिर भी मुझे यह जानने की जरूरत है कि परिणाम के बिना आगे और आगे कैसे चलना है। – asdfgh

+1

@rbraun, मैंने अपना जवाब संपादित किया है कि आप आगे बढ़ने पर कैसे कूद सकते हैं। –

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