आप अपने स्टेजिंग क्षेत्र संस्करण में एक git फ़ाइल को कैसे वापस लाते हैं?


80

मान लीजिए कि मेरे पास एक फ़ाइल है जिसका नाम है a.txt। मैं इसे स्टेजिंग क्षेत्र में जोड़ता हूं, और फिर मैं इसे संशोधित करता हूं। जब मैंने इसे जोड़ा तो मैं इसे कैसे वापस कर सकता था?

जवाबों:


77
  • 2.23 से पहले Git: git checkout a.txt
  • Git 2.23 से शुरू: git restore a.txt

यदि आप लिखते हैं तो Git आपको यह बताता है git status

2.23 से पहले Git:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   a
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified:   a
#

Git 2.23 से शुरू:

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   a

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   a

3
@Dayyth मैंने इसे पोस्ट करने से पहले जांच लिया है, और आप देख सकते हैं कि आउटपुट विभिन्न राज्यों में फ़ाइलों को रीसेट करने के अलग-अलग तरीके दिखाता है (मंचन बनाम अस्थिर)
abyx

1
@ डायनेथ - आप 'गिट चेकआउट ब्रांच-नेम पाथ' या 'गिट चेकआउट हैड पाथ' के बारे में सोच रहे हैं
विलियम पर्ससेल

@William: धन्यवाद! अब बहुत अधिक समझ में आता है।
डेनिथ

नई फ़ाइलों के लिए काम नहीं करता है, इसलिए यह वास्तव में स्टेजिंग से जांच नहीं करता है, क्योंकि इसमें एक ऑब्जेक्ट की आवश्यकता होती है। मैं स्टेजिंग से चेकआउट कैसे करूं? इसे संपादित करें-- जैसे स्थिति कहती है के साथ काम किया ।
रुडी

30

git checkout -- a.txt

इस पृष्ठ पर अन्य उत्तर के पास नहीं है --, और परिणामस्वरूप कुछ भ्रम है।

जब आप टाइप करते हैं तो यह आपको बताता है git status:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   a
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified:   a
#

4
आपने पहले जो उद्धृत किया है, उसे पोस्ट करने के बजाय हमें अंतर बताने से बेहतर था।
बछसौ

2

मंचन फ़ाइल का विरोध करना

अगले दो खंड प्रदर्शित करते हैं कि आपके मंचन क्षेत्र और कार्यशील निर्देशिका में परिवर्तन के साथ कैसे काम किया जाए। अच्छी बात यह है कि उन दो क्षेत्रों की स्थिति को निर्धारित करने के लिए आप जिस कमांड का उपयोग करते हैं, वह आपको यह भी याद दिलाता है कि उन्हें कैसे बदलना है। उदाहरण के लिए, मान लें कि आपने दो फ़ाइलों को बदल दिया है और दो अलग-अलग परिवर्तनों के रूप में उन्हें कमिट करना चाहते हैं, लेकिन आप गलती से git add * टाइप करते हैं और उन दोनों को स्टेज करते हैं। आप दोनों में से किसी एक को कैसे अस्थिर कर सकते हैं? Git स्टेटस कमांड आपको याद दिलाता है:

$ git add *
$ git status

On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

renamed:    README.md -> README
modified:   CONTRIBUTING.md

"परिवर्तन किए जाने वाले" पाठ के ठीक नीचे, यह कहता है कि git रीसेट HEAD ... का उपयोग करें। तो, चलिए CONTRIBUTING.md फ़ाइल को अनस्टेज करने के लिए उस सलाह का उपयोग करें:

$ git reset HEAD CONTRIBUTING.md
Unstaged changes after reset:
M   CONTRIBUTING.md

$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

renamed:    README.md -> README

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified:   CONTRIBUTING.md

कमांड थोड़ा अजीब है, लेकिन यह काम करता है। CONTRIBUTING.md फ़ाइल को संशोधित किया गया है, लेकिन एक बार फिर अस्थिर है।

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