git - आपकी शाखा 1 प्रतिबद्ध द्वारा 'मूल / मास्टर' से आगे है


107

मैं git में नौसिखिया हूँ और मैं git पर काम कर रहा हूँ।

मैंने गिट में कुछ फाइलें जोड़ीं:

git add <file1>
git add <file2>

तब मैं समीक्षा के लिए उसे धक्का देना चाहता था, लेकिन गलती से मैंने ऐसा कर दिया

git commit

इसलिए जिन फाइलों को मैंने बदला है, वे समीक्षा के लिए नहीं जाती हैं।
अब अगर मैं कमांड दर्ज करता हूं:

git status

इसे कहते हैं

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

मैं उस कमिट को वापस करना चाहता हूं और मैं उन फाइलों को कमिट करने के बजाय समीक्षा के लिए धकेलना चाहता हूं। क्या कोई मुझे बता सकता है कि मैं ऐसा कैसे कर सकता हूं?


यदि आप अपनी प्रतिबद्धता को पूर्ववत करना चाहते हैं - समान प्रश्न पर एक नज़र डालें ।
ДМИТРИЙ МАЛИКОВ

1
मुझे नहीं पता कि आप कोड समीक्षाओं के लिए क्या उपयोग कर रहे हैं। अन-कम करने के सरल प्रश्न का सरल उत्तर हैgit reset HEAD^
अनाम ६

मैंने हेड को रीसेट किया। लेकिन फिर जब मैं धक्का देने की कोशिश करता हूं, तो यह कहता है कि मैंने डी फाइल 1 सीएमडी की कोशिश की, जब मैंने फिर से कहने की कोशिश की, तो उसने मुझसे कहा कि आपकी शाखा 1 प्रतिबद्ध द्वारा मूल / मास्टर से आगे है
sam

जब आप कहते हैं कि "मैं उन फ़ाइलों को समीक्षा के लिए धकेलना चाहता हूं" तो आपका क्या मतलब है? क्या आप चाहते हैं कि अन्य लोग आपकी प्रतिबद्धता को देखें?
जेक ग्रीन

मेरे कोड की पहले समीक्षा की जाएगी और फिर इसे शुरू किया जाएगा। इसलिए पहले मैं समीक्षा के लिए कोड को धकेलना चाहता हूं लेकिन गलती से मैंने कमिट किया है
सैम

जवाबों:


128

आप ऐसा कुछ भी नहीं कर सकते जो अभी तक प्रतिबद्ध नहीं है। संचालन का क्रम है:

  1. अपना परिवर्तन करें।
  2. git add - यह आपके परिवर्तनों को प्रतिबद्ध करने के लिए चरणबद्ध करता है
  3. git commit - यह आपके मंचन परिवर्तनों को स्थानीय स्तर पर करता है
  4. git push - यह आपके प्रतिबद्ध परिवर्तनों को रिमोट तक पहुंचाता है

अगर आप बिना किए धक्का देते हैं, तो कुछ भी धक्का नहीं दिया जाता है। यदि आप बिना जोड़ के प्रतिबद्ध होते हैं, तो कुछ भी प्रतिबद्ध नहीं होता है। यदि आप कमिट किए बिना जोड़ते हैं, तो कुछ भी नहीं होता है, git केवल यह याद रखता है कि आपके द्वारा जोड़े गए परिवर्तनों को निम्नलिखित कमिट के लिए माना जाना चाहिए।

जो संदेश आप देख रहे हैं (आपकी शाखा 1 कमिट द्वारा आगे है) का अर्थ है कि आपकी स्थानीय रिपॉजिटरी में एक प्रतिबद्ध है जिसे अभी तक धक्का नहीं दिया गया है।

दूसरे शब्दों में: addऔर commitस्थानीय ऑपरेशन हैं push, pullऔर fetchऐसे ऑपरेशन हैं जो रिमोट के साथ इंटरैक्ट करते हैं।

चूंकि आप जहां काम करते हैं, वहां आधिकारिक स्रोत नियंत्रण वर्कफ़्लो लगता है, आपको आंतरिक रूप से पूछना चाहिए कि यह कैसे संभाला जाना चाहिए।


4
आहा ... ठीक है। इसलिए इसका मतलब है कि कमिट करने के बाद, मुझे इसे आगे बढ़ाना होगा
sam

4
अच्छी व्याख्या - प्रश्नकर्ता शायद कमिटमेंट को वास्तव में वापस नहीं करना चाहता है, लेकिन इसके बजाय, लोगों ने इसे originरिपॉजिटरी पर धकेलने से पहले कमिट की समीक्षा की है। मैं git-scm.com/documentation
dbr

1
जब मेरी स्थिति यह कहती है कि "आपकी शाखा 1 प्रतिबद्ध द्वारा 'उत्पत्ति / विकास' से आगे है।" मैं वास्तव में कैसे देखता हूं कि फाइलें बदल दी गई थीं? git diff कुछ भी नहीं लगता है
Tom

कभी-कभी कोई और वहां काम करता है। अपने पुश से पहले एक पुल बनाएं
एड्रियन पी।

67

git reset HEAD^ --soft (अपने बदलावों को वापस लाएं, अंतिम वचन पर वापस जाएँ)

git reset HEAD^ --hard (परिवर्तन छोड़ें, अंतिम वचन पर वापस जाएँ)


3
गाजर '^' के साथ HEAD का क्या महत्व है? मैंने देखा है कि इसे गाजर के बिना भी लिखा जा रहा है।
मुगें

29

यदि आप केवल बदलावों को दूर करना चाहते हैं और अंतिम कमिट (जिसे आप साझा करना चाहते हैं) को वापस करना चाहते हैं:

git reset --hard HEAD~

आप यह सुनिश्चित करना चाहते हैं कि आप यह सुनिश्चित करना चाहते हैं ( git log), क्योंकि आप सभी परिवर्तनों को ढीला कर देंगे।

एक सुरक्षित विकल्प चलाना है

git reset --soft HEAD~ # reset to the last commit
git stash              # stash all the changes in the working tree 
git push               # push changes 
git stash pop          # get your changes back 

21

मैंने इसे केवल एक साधारण से हल करके हल किया है:

git pull

और कुछ नहीं। अब यह दिखा रहा है:

# On branch master
nothing to commit, working directory clean

यह समस्या पैदा कर सकता है अगर एक से अधिक बनाई गई शाखा है जिसकी आवश्यकता नहीं है।
अनिल कुमार आर्य

1
आप दूरस्थ अवस्था में वापस चले गए और अपना अंतिम कार्य खो दिया: D
Gucho Ca

13

git रीसेट HEAD ^

फिर संशोधित फ़ाइलों को दिखाना चाहिए।

आप संशोधित फ़ाइलों को एक नई शाखा में स्थानांतरित कर सकते हैं

उपयोग,

git checkout -b newbranch

git checkout commit -m "files modified"

git push origin newbranch

git checkout master

तब आपको एक साफ शाखा पर होना चाहिए, और आपके परिवर्तन को न्यूब्रांच में संग्रहीत किया जाना चाहिए। आप बाद में इस परिवर्तन को मास्टर शाखा में विलय कर सकते हैं


4
git reset HEAD <file1> <file2> ...

अगली प्रतिबद्ध से निर्दिष्ट फ़ाइलों को हटा दें

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