मान लें कि हमारे पास Git में निम्नलिखित स्थिति है:
एक निर्मित भंडार:
mkdir GitTest2 cd GitTest2 git init
मास्टर में कुछ संशोधन होते हैं और प्रतिबद्ध होते हैं:
echo "On Master" > file git commit -a -m "Initial commit"
सुविधा 1 मास्टर और कुछ काम किया जाता है:
git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1"
इस बीच, एक बग मास्टर-कोड में खोजा जाता है और एक हॉटफ़िक्स-शाखा स्थापित की जाती है:
git checkout master git branch hotfix1 git checkout hotfix1
बग को हॉटफ़िक्स शाखा में तय किया गया है और मास्टर में वापस विलय कर दिया गया है (शायद एक पुल अनुरोध / कोड समीक्षा के बाद):
echo "Bugfix" > bugfixFile git commit -a -m "Bugfix Commit" git checkout master git merge --no-ff hotfix1
फीचर 1 पर विकास जारी है:
git checkout feature1
कहो कि मुझे अपनी सुविधा शाखा में हॉटफ़िक्स की आवश्यकता है, हो सकता है कि बग भी वहाँ हो। मैं अपनी सुविधा शाखा में कमिट की नकल किए बिना इसे कैसे प्राप्त कर सकता हूं?
मैं अपनी सुविधा शाखा पर दो नए कमिट्स प्राप्त करने से रोकना चाहता हूं जिनका फीचर कार्यान्वयन से कोई संबंध नहीं है। यह विशेष रूप से मेरे लिए महत्वपूर्ण लगता है अगर मैं पुल अनुरोधों का उपयोग करता हूं: इन सभी कमिटों को भी पुल अनुरोध में शामिल किया जाएगा और इसकी समीक्षा की जानी चाहिए, हालांकि यह पहले से ही किया गया है (जैसा कि मास्टर में पहले से ही है)।
मैं ऐसा नहीं कर सकता git merge master --ff-only
: "घातक: तेजी से आगे बढ़ना, गर्भपात करना संभव नहीं है।", लेकिन मुझे यकीन नहीं है कि इससे मुझे मदद मिली।
git rebase
मेरे लिए काले जादू की तरह लगता है ....
git branch feature1
और git checkout feature1
में जोड़ा जा सकता है git checkout -b feature1
और 4. पूरी तरह से कम किया जा सकता हैgit checkout -b hotfix1 master
feature1
पूरी तरह से स्थानीय है, तो एक नज़र डालेंgit rebase
।