Git: 'अलग किए गए राज्य' से कैसे लौटा जाए


217

यदि कोई शाखा की जाँच करेगा:

git checkout 760ac7e

उदाहरण के लिए b9ac70b, b9ac70bकोई अपने SHA1 को जाने बिना अंतिम ज्ञात सिर पर वापस कैसे जा सकता है ?

जवाबों:


331

यदि आपको याद है कि किस शाखा को पहले चेक किया गया था (जैसे master) तो आप बस कर सकते थे

git checkout master

अलग राज्य से बाहर निकलने के लिए ।

आम तौर पर बोल: git checkout <branchname>आप से बाहर हो जाएगा।

यदि आपको अंतिम शाखा का नाम याद नहीं है, तो प्रयास करें

git checkout -

यह आपकी पिछली जाँच की गई शाखा की जाँच करने का भी प्रयास करता है।


17
git checkout -- हत्यारा सुविधा!
डिंपीयाक्स

1
यदि आप ऐसा नहीं करते हैं git checkout -b new_branch_nameतो आप अलग-थलग पड़े अवस्था में किए गए कमिट खो देते हैं?
जोकसीड

2
@jocassid हाँ आप करते हैं। वे थोड़ी देर के लिए मौजूद होते हैं लेकिन जब git gcउन्हें चलाया जाता है, तो उन्हें हमेशा के लिए हटा दिया जाता है। आप उन्हें git reflogतब तक देख सकते हैं जब तक वे अभी भी वहाँ हैं।
eckes

यदि आप ऐसा करते हैं तो आप किसी भी तरह के बदलाव / बदलाव को नहीं खो सकते हैं? क्या यह बेहतर तरीका नहीं है? stackoverflow.com/a/61489179/13087176
tipsy boopenstein

@tipsyboopenstein सही है। jocassid ने पहले ही इस बात का उल्लेख किया है: stackoverflow.com/questions/11801071/…
eckes

16

git reflogपहले से चेक किए गए कमिट्स के हैश का पता लगाने के लिए उपयोग करें ।

आपके अंतिम चेक आउट शाखा में जाने के लिए एक शॉर्टकट कमांड (सुनिश्चित नहीं है कि यह काम सही ढंग से अलग किया गया है और मध्यवर्ती कमिट्स के साथ है) git checkout -


4

मेरे पास यह बढ़त मामला था, जहां मैंने उस कोड के पिछले संस्करण की जांच की जिसमें मेरी फ़ाइल निर्देशिका संरचना अलग थी:

git checkout 1.87.1                                    
warning: unable to unlink web/sites/default/default.settings.php: Permission denied
... other warnings ...
Note: checking out '1.87.1'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. 
Example:

  git checkout -b <new-branch-name>

HEAD is now at 50a7153d7... Merge branch 'hotfix/1.87.1'

इस तरह के एक मामले में आपको उपयोग करने की आवश्यकता हो सकती है - प्रवर्तन (जब आप जानते हैं कि मूल शाखा में वापस जाना है और परिवर्तनों को त्यागना एक सुरक्षित बात है)।

git checkout master काम नहीं किया:

$ git checkout master
error: The following untracked working tree files would be overwritten by checkout:
web/sites/default/default.settings.php
... other files ...

git checkout master --force(या git checkout master -f) काम किया:

git checkout master -f
Previous HEAD position was 50a7153d7... Merge branch 'hotfix/1.87.1'
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

1

आपने detached HEADराज्य में कुछ नए आवागमन किए होंगे । मेरा मानना ​​है कि यदि आप अन्य उत्तरों की सलाह देते हैं:

git checkout master
# or
git checkout -

तो आप अपने कमिट्स खो सकते हैं !! इसके बजाय, आप ऐसा करना चाह सकते हैं:

# you are currently in detached HEAD state
git checkout -b commits-from-detached-head

और फिर commits-from-detached-headआप जो भी शाखा चाहते हैं, उसमें विलय करें , ताकि आप कमिट न करें।

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