मैंने विभिन्न फाइलों पर कई कमिट किए हैं, लेकिन अभी तक मैं अपने रिमोट रिपॉजिटरी को केवल एक विशिष्ट कमिट पर धकेलना चाहूंगा।
क्या यह संभव है?
मैंने विभिन्न फाइलों पर कई कमिट किए हैं, लेकिन अभी तक मैं अपने रिमोट रिपॉजिटरी को केवल एक विशिष्ट कमिट पर धकेलना चाहूंगा।
क्या यह संभव है?
जवाबों:
दिए गए कमिट के माध्यम से पुश अप करने के लिए, आप लिख सकते हैं:
git push <remotename> <commit SHA>:<remotebranchname>
बशर्ते <remotebranchname>
रिमोट पर पहले से मौजूद हो। (यदि ऐसा नहीं होता है, तो आप git push <remotename> <commit SHA>:refs/heads/<remotebranchname>
इसे स्वतःपूर्ण करने के लिए उपयोग कर सकते हैं ।)
यदि आप पिछले कमिट्स को धक्का दिए बिना कमिटमेंट पुश करना चाहते हैं , तो आपको पहले कमिट्स git rebase -i
को री-ऑर्डर करने के लिए उपयोग करना चाहिए ।
git push <remotename> <commit SHA>:<remotebranchname>
काम करता है। ट्रिक यह git rebase -i
है कि आप जिस कमिट को पहली
git push <remotename> <commit SHA>:refs/heads/<new remote branch name>
। इसके बाद, उत्तर का वर्णन करते हुए धक्का दें।
git push origin HEAD~1:master
।
-f
झंडे का इस्तेमाल करें ।
अन्य जवाबों में कमी के विवरण की कमी है।
git push <remotename> <commit SHA>:<remotebranchname>
किसी एकल कमिट को धक्का देगा, लेकिन उस कमिट को आपके लोकल, नॉन-पुश, कमिट्स का OLDEST होना चाहिए, टॉप, फर्स्ट, या टिप कमेंट से भ्रमित न हों, जो कि मेरी राय में सभी अस्पष्ट विवरण हैं। कमिट को अपने सबसे पुराने कमिट्स यानी अपने सबसे हाल के कमेंट से सबसे ज़्यादा ज़रूरत है। यदि यह सबसे पुराना कमिट नहीं है, तो आपके पुराने, लोकल, नॉन-पुश SHA से लेकर SHA तक सभी कमिट किए जाएंगे। कमिट्स का उपयोग फिर से करने के लिए:
git rebase -i HEAD~xxx
प्रतिबद्ध को पुन: व्यवस्थित करने के बाद आप इसे सुरक्षित रूप से दूरस्थ भंडार में धकेल सकते हैं।
संक्षेप में, मैंने उपयोग किया
git rebase -i HEAD~<number of commits to SHA>
git push origin <post-rebase SHA>:master
मेरे दूरस्थ मास्टर शाखा के लिए एक एकल प्रतिबद्ध धक्का।
संदर्भ:
यह सभी देखें:
मैं उपयोग करने का सुझाव देता हूं git rebase -i
; आपके द्वारा किए गए कमिट्स के शीर्ष पर जाने के लिए कमिट करें। फिर git log
विद्रोही प्रतिबद्ध के SHA प्राप्त करने के लिए उपयोग करें, इसे देखें और इसे धक्का दें। रिबेस को सुनिश्चित करना होगा कि आपके अन्य सभी कमिट अब आपके द्वारा पुश किए गए के बच्चे हैं, इसलिए भविष्य के पुश भी ठीक काम करेंगे।
git log
कदम?
एक विशिष्ट प्रतिबद्धता को आगे बढ़ाते हुए अन्य सभी तरीकों की तुलना में चेरी-पिक सबसे अच्छा काम करता है।
ऐसा करने का तरीका है:
एक नई शाखा बनाएँ -
git branch <new-branch>
अपनी मूल शाखा के साथ अपनी नई शाखा को अपडेट करें -
git fetch
git rebase
इन क्रियाओं से यह सुनिश्चित हो जाएगा कि आपके पास वही सामान है जो आपके मूल में है।
चेरी- sha id
कि आप पुश करना चाहते हैं -
git cherry-pick <sha id of the commit>
आप sha id
दौड़कर प्राप्त कर सकते हैं
git log
इसे अपने मूल में रखें -
git push
भागो gitk
कि सब कुछ देखने के लिए एक ही तरह से आप चाहते थे लग रहा है।
git rebase -i
उपरोक्त समाधानों में सुझाए गए अनुसार आदर्श समाधान का उपयोग करना होगा। चेरी पिक का उपयोग केवल तभी किया जाना चाहिए जब आप प्रतिबद्ध को डुप्लिकेट करना चाहते हैं।
मेरा मानना है कि आपको उस कमिट पर वापस "git revert" करना होगा और फिर इसे पुश करना होगा। या आप cherry-pick
एक नई शाखा में कमिट कर सकते हैं , और उस शाखा को दूरस्थ रिपॉजिटरी पर धकेल सकते हैं। कुछ इस तरह:
git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}
cherry-pick
वही कमिट कर सकते हैं जो आप चाहते हैं।
आप अन्य निर्देशिका में भी कर सकते हैं: