मैंने गलती से गलत शाखा के लिए प्रतिबद्ध किया। मैं उस प्रतिबद्धता को कैसे हटा सकता हूं?मैं अप्रशिक्षित गिट को कैसे हटा सकता हूं?
उत्तर
हटाएँ हाल ही में प्रतिबद्ध है, काम आपके द्वारा किए गए रखते हुए:
git reset --soft HEAD~1
, काम को नष्ट करने के लिए प्रतिबद्ध सबसे हाल ही में हटाएं आपके द्वारा किए गए:
git reset --hard HEAD~1
एक कार्य करें git rebase -i FAR_ENOUGH_BACK
और उस प्रतिबद्धता के लिए लाइन ड्रॉप करें जिसे आप नहीं चाहते हैं।
कर पाया जा सकता है यह इतना बेहतर है! पुनर्जन्म से डरो मत! – Chris
आप प्रश्न में प्रतिबद्ध है, ले जाने के लिए है कि एक और शाखा के लिए प्रतिबद्ध मिल SHA
git rev-parse HEAD
तो वर्तमान शाखा
git checkout other-branch
और cherry-pick
other-branch
git cherry-pick <sha-of-the-commit>
मेरे अनुभव से, यह मूल शाखा से प्रतिबद्धता को पूर्ववत नहीं करता है, इस प्रकार 'गीट रीसेट - हार्ड ~ 1' बाद में जरूरी है। मुझे लगता है कि 'रीसेट - सॉफ्ट' का उपयोग करके शाखाओं को स्विच करना और फिर से काम करना अतिरिक्त काम बचा लेगा। फिर फिर मैं अपनी अधिकांश मूलभूत सामग्री करने के लिए SourceTree का उपयोग कर रहा था, केवल मेरी त्रुटि के बाद इसे इसके साथ कमांड लाइन कर रहा था। – jusopi
इसे हटाएं नहीं: केवल एक प्रतिबद्ध git cherry-pick
पर्याप्त है।
लेकिन अगर आप गलत शाखा पर कई करता था, वह यह है कि जहां git rebase --onto
चमकता:
मान लीजिए आप इस राशि:
x--x--x--x <-- master
\
-y--y--m--m <- y branch, with commits which should have been on master
, तो आप master
चिह्नित कर सकते हैं और इसे स्थानांतरित जहां बनना चाहते हैं:
git checkout master
git branch tmp
git checkout y
git branch -f master
x--x--x--x <-- tmp
\
-y--y--m--m <- y branch, master branch
, वाई शाखा को रीसेट करें जहां यह होना चाहिए:
git checkout y
git reset --hard HEAD~2 # ~1 in your case,
# or ~n, n = number of commits to cancel
x--x--x--x <-- tmp
\
-y--y--m--m <- master branch
^
|
-- y branch
, और अंत में अपने प्रतिबद्ध (उन्हें पुन: लागू, वास्तव में नए प्रतिबद्ध बनाने)
git rebase --onto tmp y master
git branch -D tmp
x--x--x--x--m'--m' <-- master
\
-y--y <- y branch
आपके संदर्भ के लिए ले जाते हैं, मेरा मानना है कि आप कर सकते हैं "हार्ड कट" अपने वर्तमान शाखा में से केवल के साथ नहीं करता है Git --hard रीसेट, लेकिन यह भी निम्न आदेश के साथ:
git checkout -B <branch-name> <SHA>
वास्तव में, यदि आप बाहर की जाँच के बारे में परवाह नहीं है, आप शाखा जो कुछ भी आप के साथ चाहते हैं करने के लिए सेट कर सकते हैं:
git branch -f <branch-name> <SHA>
उदाहरण के लिए, यह एक शाखा से काम को हटाने के लिए एक प्रोग्रामेटिक तरीका होगा, ताकि नए कामों को प्रतिलिपि बनाने के लिए (रीबेस का उपयोग कर)।
मान लीजिए कि आपके पास ऐसी शाखा है जो मास्टर से डिस्कनेक्ट हो गई है क्योंकि आपने किसी अन्य स्थान से स्रोत ले लिए हैं और इसे शाखा में छोड़ दिया है।
अब आपके पास एक शाखा है जिसमें आपने परिवर्तन लागू किए हैं, चलिए इसे "विषय" कहते हैं।अब
git branch topic_duplicate topic
git rebase --onto dump master topic_duplicate
अपने परिवर्तनों के आधार शाखा topic_duplicate में फिर से लागू कर रहे हैं:
अब आप अपने विषय शाखा का डुप्लिकेट पैदा करेगा और उसके बाद स्रोत कोड डंप कि शाखा में बैठा होता है पर इसे rebase "डंप" "डंप" का प्रारंभ बिंदु लेकिन केवल "मास्टर" के बाद से हुआ यह काम करता है। तो मास्टर के बाद से आपके परिवर्तन अब "डंप" के शीर्ष पर पुनः लागू किए गए हैं लेकिन परिणाम "topic_duplicate" में समाप्त होता है।
फिर आप ऐसा करके "topic_duplicate" के साथ "डंप" की जगह सकता है: बस
git branch -D dump
शायद आप कर सकते थे डंप को त्यागकर द्वारा
git branch -f dump topic_duplicate
git branch -D topic_duplicate
या
git branch -M topic_duplicate dump
या साथ वर्तमान "topic_duplicate" को साफ़ करने के बाद भी चेरी-पिक करें।
मैं क्या कहने की कोशिश कर रहा हूँ कि अगर आप वर्तमान अद्यतन करना चाहते "नकल" शाखा आप पहली बार हटाना होगा पहले "cherrypicked" एक अलग पूर्वज के आधार पर एक git reset --hard <last-commit-to-retain>
या git branch -f topic_duplicate <last-commit-to-retain>
कर और फिर दूसरे को कॉपी करके करता है या तो रिबिसिंग या चेरी-पिकिंग द्वारा (मुख्य विषय शाखा से) पर काम करता है।
रीबेजिंग केवल उस शाखा पर काम करता है जो पहले से ही काम करता है, इसलिए आपको हर बार अपनी विषय शाखा को डुप्लिकेट करने की आवश्यकता होती है।
cherrypicking बहुत आसान है:
git reset --hard <latest-commit-to-keep>
git cherry-pick master..topic
जब अपने विषय-डुप्लिकेट शाखा की जाँच कर दिया गया है
git cherry-pick master..topic
तो पूरा अनुक्रम करने के लिए नीचे आ जाएगा। इससे मौजूदा डुप्लिकेट से पहले-चेरी-चुने गए कामों को हटा दिया जाएगा, और अपने वर्तमान "डंप" (विभिन्न पूर्वजों) के शीर्ष पर "विषय" में होने वाले सभी परिवर्तनों को फिर से लागू करें। ऐसा लगता है कि आपके स्थानीय परिवर्तन अभी भी उस पर लागू होते हैं या नहीं, यह जांचने के लिए एक अलग "डाउनस्ट्रीम" मास्टर का उपयोग करते हुए "असली" अपस्ट्रीम मास्टर पर अपने विकास को आधार देने का एक उचित सुविधाजनक तरीका प्रतीत होता है। वैकल्पिक रूप से आप केवल एक diff उत्पन्न कर सकते हैं और फिर इसे किसी भी गिट स्रोत पेड़ के बाहर लागू कर सकते हैं। लेकिन इस तरह आप एक अद्यतित संशोधित (पैच) संस्करण रख सकते हैं जो आपके वितरण के संस्करण पर आधारित है जबकि आपका वास्तविक विकास असली अपस्ट्रीम मास्टर के खिलाफ है।
तो बस प्रदर्शित करने के लिए:
- रीसेट करने के लिए एक अलग करने के लिए अपने शाखा बिंदु कर देगा (--hard भी सूचकांक में पिछले प्रतिबद्ध, --soft जोड़ा रहता फ़ाइलें बाहर की जाँच करता है (कि प्रतिबद्ध होना होगा यदि आप फिर से प्रतिबद्ध) और डिफ़ॉल्ट (--mixed) की जाँच नहीं होंगे पिछले प्रतिबद्ध (अपने स्थानीय परिवर्तन पोंछते) लेकिन यह सूचकांक साफ हो जाएगा (अभी तक कुछ नहीं प्रतिबद्ध)
- तुम सिर्फ एक शाखा मजबूर कर सकते हैं के लिए जोड़ दिया गया है एक अलग करने के लिए बात करने के लिए प्रतिबद्ध
- आप ऐसा करते हुए तुरंत बाहर की जाँच कर सकते हैं कि रूप में अच्छी तरह प्रतिबद्ध
- रिबेसिंग पर काम करता है अपने वर्तमान शाखा में मौजूद करता
- चेरी पिकिंग
आशा एक अलग शाखा से की प्रतिलिपि को यह किसी को मदद करता है मतलब है। मैं इसे फिर से लिखने का मतलब था, लेकिन अब मैं प्रबंधन नहीं कर सकता। सादर।
आप (.git
फ़ोल्डर सहित) अपने कोड का बैकअप है, तो अपने नवीनतम codebase से .git फ़ोल्डर हटाना। पुराने कोडेबेस में पुराना .git
फ़ोल्डर कॉपी करें। git pull
निष्पादित करें।
नोट: इस समाधान केवल यदि आप समय से बाहर चल रहे हैं और एक बहुत भ्रमित कर रहे हैं का उपयोग करें।
- 1. अप्रशिक्षित गिट टैग
- 2. मैं गिट के MERGE_MSG को कैसे हटा सकता हूं?
- 3. मैं गिट में रिमोट शाखा कैसे हटा सकता हूं?
- 4. मैं पंक्तियों को कैसे हटा सकता हूं?
- 5. मैं सत्र चर को कैसे हटा या हटा सकता हूं?
- 6. मैं विशेष वर्ण कैसे हटा सकता हूं?
- 7. मैं एक सिम्लिंक कैसे हटा सकता हूं?
- 8. मैं सभी लाइनब्रेक कैसे हटा सकता हूं?
- 9. मैं बैश फ़ंक्शन कैसे हटा सकता हूं?
- 10. मैं प्रोग्राम को एक प्रोग्राम को कैसे हटा सकता हूं?
- 11. मैं प्रक्रिया आउटपुट से नई लाइन कैसे हटा सकता हूं?
- 12. मैं गिटहब से शाखा कैसे हटा सकता हूं?
- 13. मैं रिमोट गिट शाखा को सुरक्षित रूप से कैसे हटा सकता हूं?
- 14. मैं स्थानीय गिट भंडार में रिमोट शाखा को कैसे हटा सकता हूं?
- 15. मैं गिट भंडार से फ़ाइल को पूरी तरह से कैसे हटा सकता हूं?
- 16. गिट डिफ - मैं चयनित लाइनों या हिस्सों को कैसे हटा सकता हूं
- 17. मैं QTreeWidgetItem को एक QTreeWidget से कैसे हटा सकता हूं?
- 18. मैं jQuery में बच्चों को कैसे हटा सकता हूं?
- 19. मैं टीसीएल प्रक्रिया को कैसे हटा सकता हूं?
- 20. मैं UITableView की सीमाओं को कैसे हटा सकता हूं?
- 21. मैं केवल पढ़ने-योग्य फ़ाइल को कैसे हटा सकता हूं?
- 22. मैं साइट टेम्पलेट को कैसे हटा सकता हूं?
- 23. मैं कच्चे x86 कोड को कैसे हटा सकता हूं?
- 24. मैं Google geoChart से किंवदंती को कैसे हटा सकता हूं?
- 25. मैं एक संपूर्ण प्रोटोकॉल को कैसे हटा सकता हूं?
- 26. मैं एक पायथन लिपि को कैसे हटा सकता हूं?
- 27. मैं UIViewController से UINavigationBar को कैसे हटा सकता हूं?
- 28. मैं आईआईएस ऑब्जेक्ट्स को सी # से कैसे हटा सकता हूं?
- 29. मैं विकसित एक फेसबुक ऐप को कैसे हटा सकता हूं?
- 30. मैं MySQL में रिक्त पंक्तियों को कैसे हटा सकता हूं?
सुनिश्चित करें कि हेड शाखा में इंगित कर रहा है .. (इसे पहले देखें) –
और सुनिश्चित करें कि हेड ~ 1 प्रतिबद्ध है ... आप 'गिट रीसेट - हार्ड मूल' – Daenyth
थॉट 'गिट रिमोट' मेरे लिए मूल सूची, 'गिट रीसेट - हार्ड मूल' कहता है 'घातक: संदिग्ध तर्क' उत्पत्ति ': अज्ञात संशोधन या पथ काम करने वाले पेड़ में नहीं।'। क्यूं कर? – trss