कैसे डर
मैं तुम्हें दिखाना चाहते हैं रहो नहीं करने के लिए कि कोई बात नहीं कितना बुरा आप गंदगी, करता है कभी नहीं नष्ट हो * और आप हमेशा वापस करने के लिए जहां आप कार्य आरंभ कर सकते हैं।
मैं एक छद्म Git पेड़ एक ही आकार है कि के रूप में आप सचित्र कर दिया है:
मैं अब 'बैकअप' शाखा से पिछले तीन प्रतिबद्ध का सफाया करने जा रहा हूँ:
$ git log --oneline
9b41f46 Removed extraneous whitespace
981e2e8 Merged the "loadscripts" function
005bc62 Pick up a few very fringe cases
07e71d9 Merged "getDepsForScript" function
...
$ git reset --hard HEAD~3
HEAD is now at 07e71d9 Merged "getDepsForScript" function
$ git log --oneline
07e71d9 Merged "getDepsForScript" function
...
ओह, वह बुरा था। आइए हम वापस कहां से शुरू करें। सबसे पहले देखते हैं कि हम क्या किया:
$git reflog
07e71d9 [email protected]{0}: HEAD~3: updating HEAD
9b41f46 [email protected]{1}: commit: Removed extraneous whitespace
...
आप देख सकते हैं कि जब हम रीसेट, सभी Git कि पुराने प्रतिबद्ध करने के लिए प्रमुख बिंदु बनाने के लिए था। लेकिन वास्तव में कोई काम नहीं हुआ - वे सिर्फ अनाथ बन गए, किसी भी शाखा का हिस्सा नहीं। आइए उन्हें फिर से "बैकअप" शाखा का हिस्सा बनाएं:
$ git reset --hard 9b41f46
HEAD is now at 9b41f46 Removed extraneous whitespace
$ git log --oneline
9b41f46 Removed extraneous whitespace
981e2e8 Merged the "loadscripts" function
005bc62 Pick up a few very fringe cases
07e71d9 Merged "getDepsForScript" function
...
गिट का मतलब है कि आपको कभी भी खेद नहीं है।
* ढीले वस्तुओं को अंततः कचरा इकट्ठा किया जाता है, लेकिन जब तक वे कम से कम दो सप्ताह तक नहीं होते हैं।
आप जो चाहते हैं उसे कैसे करें।
पहले के मास्टर में दो करता गठबंधन करते हैं:
$ git checkout master
$ git rebase -i HEAD~2
Git अपने संपादक का शुभारंभ करेंगे। इस बदलें:
pick 6389f4e Moved "loaded" function out of "require".
pick 41fb646 comma
इस के लिए
:
pick 6389f4e Moved "loaded" function out of "require".
s 41fb646 comma
और सेव करें। गिट फिर से आपका संपादक लॉन्च करेगा। इस बदलें:
# This is a combination of two commits.
# The first commit's message is:
Moved "loaded" function out of "require".
# This is the 2nd commit message:
comma
इस के लिए
:
Moved "loaded" function out of "require".
और सहेजें।
अब चलो 'बैकअप' में प्रतिबद्ध पुन: व्यवस्थित करते हैं:
$ git checkout backup
$ git rebase -i remotes/origin/master
अपने संपादक पॉप अप होता है, यह बदलने के लिए:
pick ec7f71c moved "loaded" function out of "require"
pick 4a76897 Replaced maploaded event
pick 07e71d9 Merged "getDepsForScript" function
pick 005bc62 Pick up a few very fringe cases
pick 981e2e8 Merged the "loadscripts" function
pick 9b41f46 Removed extraneous whitespace <-----
इस के लिए
:
pick 9b41f46 Removed extraneous whitespace <-----
pick ec7f71c moved "loaded" function out of "require"
pick 4a76897 Replaced maploaded event
pick 07e71d9 Merged "getDepsForScript" function
pick 005bc62 Pick up a few very fringe cases
pick 981e2e8 Merged the "loadscripts" function
और सहेजें।
अब चेरी लेने मर्ज किए गए "लोड ले जाया गया" एक ही करने के लिए गुरु के बंद और वर्तमान शाखा पर ("बैकअप")
$git cherry-pick master
मेक मास्टर बिंदु प्रतिबद्ध "बैकअप"
$git checkout master
$git reset --hard backup
के रूप में प्रतिबद्ध
मोड़ शाखा से छुटकारा
$git branch -D twist
इस प्रश्न में काफी खराब शीर्षक "गिट रीबेस सहायता" है और यह अलग-अलग संचालनों की एक श्रृंखला है जिसे आप करना चाहते हैं। एक प्रश्न के रूप में इसे पुनः प्रयोग करने का प्रयास करें। पहला लक्ष्य जिसे आप पूरा करने की कोशिश कर रहे हैं, एक प्रश्न के रूप में, संभवतः उनमें से बाकी को स्पष्ट कर देगा। – Dustin
मुझे नहीं लगता कि यह एक बुरा शीर्षक है, यह निश्चित रूप से एक समस्या है जिसके लिए काम करने की आवश्यकता होती है। –
क्या आप वाकई 'मोड़' और 'बैकअप' शाखाओं को मर्ज करना चाहते हैं? मैं पूछता हूं क्योंकि वे दोनों समान दिखने वाले विवरणों के साथ काम करते हैं। –