जवाबों:
वह लगभग काम करेगा।
गैर-डिफ़ॉल्ट शाखा पर धकेलने पर, आपको स्रोत रेफ और लक्ष्य रेफ को निर्दिष्ट करने की आवश्यकता होती है:
git push origin branch1:branch2
या
git push <remote> <branch with new changes>:<branch you are pushing to>
<remote>/<branch>
git push origin :branch2
देते हुए यह सोचकर सचेत रहें कि यह वर्तमान स्थानीय शाखा को रिमोट पर धकेल branch2
देगा, कि यह रिमोट को हटा देगा branch2
! सही तरीका है git push origin HEAD:branch2
।
निश्चित रूप से, हालांकि यह केवल तभी काम करेगा जब यह BRANCH2 का तेजी से आगे होगा या यदि आप इसे मजबूर करते हैं। ऐसा काम करने का सही सिंटैक्स है
git push <remote> <source branch>:<dest branch>
यह कैसे काम करता है पर अधिक विस्तार के लिए git पुश मैन पेज पर एक "refspec" का विवरण देखें । यह भी ध्यान दें कि एक बल धक्का और एक रीसेट दोनों ऑपरेशन हैं जो "इतिहास को फिर से लिखते हैं", और दिल के बेहोश होने का प्रयास नहीं किया जाना चाहिए जब तक कि आप पूरी तरह से सुनिश्चित न हों कि आप जानते हैं कि आप किसी दूरस्थ रिपॉजिटरी और अन्य के संबंध में क्या कर रहे हैं ऐसे लोग जिनके पास एक ही परियोजना के कांटे / क्लोन हैं।
git push --force remote local-branch:remote-branch
।
यह बहुत सरल है। मान लीजिए कि आपने अपनी शाखा ए में परिवर्तन किया है जो स्थानीय और दूरस्थ दोनों स्थानों पर रहता है लेकिन आप इन परिवर्तनों को शाखा बी में धकेलना चाहते हैं जो कहीं भी मौजूद नहीं हैं।
चरण -01: नई शाखा बी में बनाएं और स्विच करें
git चेकआउट -b B
चरण -2: नई स्थानीय शाखा में परिवर्तन जोड़ें
जोड़ देना। // या विशिष्ट फ़ाइल
चरण -03: परिवर्तनों के लिए प्रतिबद्ध करें
git कमिट-एम "कमिटमेज"
चरण -04: नई शाखा B में परिवर्तन बदलता है । नीचे दी गई कमांड एक नई शाखा बी बनाएगी और साथ ही दूरस्थ रूप से
git पुश ओरिजिनल B
अब, आप बिटबकेट से यह सत्यापित कर सकते हैं कि शाखा B की शाखा A की तुलना में एक और कमिट होगा । और जब आप शाखा A की जांच करेंगे तो ये परिवर्तन नहीं होंगे क्योंकि इन्हें शाखा B में धकेल दिया गया है ।
नोट: यदि आपने शाखा A में अपने परिवर्तन शुरू कर दिए हैं और उसके बाद आप उन परिवर्तनों को नई शाखा B में स्थानांतरित करना चाहते हैं तो आपको पहले उन परिवर्तनों को रीसेट करना होगा। #HappyLearning
मेरे मामले में मेरे पास एक स्थानीय प्रतिबद्धता थी, जिसे धक्का नहीं दिया गया था origin\master
, लेकिन मेरी स्थानीय master
शाखा के लिए प्रतिबद्ध था । इस स्थानीय प्रतिबद्ध को अब दूसरी शाखा में धकेल दिया जाना चाहिए।
गेट एक्सटेंशन के साथ आप कुछ इस तरह कर सकते हैं:
आप GIT कमांड लाइन पर भी ऐसा कर सकते हैं । उदाहरण डेविड क्रिस्टेनसेन से कॉपी किया गया :
मुझे लगता है कि तुम पाओगे
git cherry-pick
+git reset
बहुत तेज़ वर्कफ़्लो :अपने समान परिदृश्य का उपयोग करते हुए, "सुविधा" के साथ शाखा सबसे अधिक गलत होने के साथ, यह करना बहुत आसान होगा:
git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^
थोड़ा बहुत काम बचता है, और यही परिदृश्य है
git cherry-pick
संभालने के लिए डिज़ाइन किया गया था।मैं यह भी ध्यान रखूँगा कि अगर यह सबसे ऊपर की प्रतिबद्धता नहीं है तो यह भी काम करेगा; आपको केवल चेरी-पिक के तर्क के लिए एक कमिट की जरूरत है:
git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history
मुझे git push origin branch1:branch2
आदेश के साथ एक बुरा परिणाम मिला :
मेरे मामले में, branch2
हटा दिया गया है और branch1
कुछ नए परिवर्तनों के साथ अपडेट किया गया है।
इसलिए, अगर आप चाहते हैं केवल परिवर्तन पर धक्का branch2
से branch1
, नीचे प्रक्रियाओं का प्रयास करें:
branch1
:git add .
branch1
:git commit -m 'comments'
पर branch1
:git push origin branch1
पर branch2
:git pull origin branch1
ऑन branch1
: पिछली कमिट पर वापस।
git init
#git remote remove origin
git remote add origin <http://...git>
echo "This is for demo" >> README.md
git add README.md
git commit -m "Initail Commit"
git checkout -b branch1
git branch --list
****add files***
git add -A
git status
git commit -m "Initial - branch1"
git push --set-upstream origin branch1
#git push origin --delete branch1
#git branch --unset-upstream
आपने BRANCH1 के लिए प्रतिबद्ध किया है और परिवर्तनों को खोए बिना इस प्रतिबद्ध से छुटकारा पाना चाहते हैं? git रीसेट वह है जो आपको चाहिए। करना:
git branch BRANCH2
यदि आप चाहते हैं कि BRANCH2 एक नई शाखा हो। आप चाहें तो इसे दूसरी ब्रांच के साथ अंत में मर्ज भी कर सकते हैं। यदि BRANCH2 पहले से मौजूद है, तो इस चरण को छोड़ दें।
फिर करो:
git reset --hard HEAD~3
यदि आप अपने द्वारा की गई शाखा पर कमिट को रीसेट करना चाहते हैं। यह अंतिम तीन परिवर्तनों के परिवर्तन लेता है।
फिर BRANCH2 पर रीसेट किए गए कमिट लाने के लिए निम्न कार्य करें
git checkout BRANCH2
यह स्रोत मददगार था: https://git-scm.com/docs/git-reset#git-reset-Uooacommitmakingitatopicbranch
branch1
औरbranch2
रिमोट पर होने की जरूरत? क्या होगा यदि आप स्थानीयbranch1
से रिमोट पर पुश करना चाहते हैंorigin branch2
?