git - with - वर्तमान गिट शाखा को एक मास्टर शाखा बनाएं




integrate git bash with visual studio code (8)

अन्य दो उत्तरों के साथ समस्या यह है कि नए मास्टर के पास पूर्वजों के रूप में पुराना मास्टर नहीं होता है, इसलिए जब आप इसे दबाते हैं, तो हर कोई गड़बड़ हो जाएगा। यही वह है जो आप करना चाहते हैं:

git checkout better_branch
git merge --strategy=ours master    # keep the content of this branch, but record a merge
git checkout master
git merge better_branch             # fast-forward master up to the merge

यदि आप चाहते हैं कि आपका इतिहास थोड़ा स्पष्ट हो, तो मैं यह समझने के लिए विलय प्रतिबद्ध संदेश में कुछ जानकारी जोड़ने की अनुशंसा करता हूं कि आपने क्या किया है। दूसरी पंक्ति को इस पर बदलें:

git merge --strategy=ours --no-commit master
git commit          # add information to the template merge message

मेरे पास गिट में एक भंडार है। मैंने एक शाखा बनाई, फिर कुछ मास्टर और शाखा दोनों में कुछ बदलाव किए।

फिर, बाद में काम करने के दसियों, मुझे एहसास हुआ कि शाखा मास्टर की तुलना में बहुत बेहतर स्थिति में है, इसलिए मैं चाहता हूं कि शाखा मास्टर बन जाए और मास्टर पर हुए बदलावों को नजरअंदाज करे।

मैं इसे मर्ज नहीं कर सकता, क्योंकि मैं मास्टर पर बदलाव नहीं रखना चाहता हूं। मुझे क्या करना चाहिए?

अतिरिक्त : इस मामले में, 'पुराना' मास्टर पहले ही गिटहब जैसे किसी अन्य भंडार में push दिया गया है। यह चीजों को कैसे बदलता है?


उपयोग:

get fetch && git checkout branch

जेफ्रोमी के जवाब में जोड़ने के लिए, यदि आप source शाखा के इतिहास में एक अर्थहीन विलय नहीं करना चाहते हैं, तो आप ours विलय के लिए एक अस्थायी शाखा बना सकते हैं, फिर इसे फेंक दें:

git checkout <source>
git checkout -b temp            # temporary branch for merge
git merge -s ours <target>      # create merge commit with contents of <source>
git checkout <target>           # fast forward <target> to merge commit
git merge temp                  # ...
git branch -d temp              # throw temporary branch away

इस तरह मर्ज प्रतिबद्धता केवल target शाखा के इतिहास में ही मौजूद होगी।

वैकल्पिक रूप से, यदि आप बिल्कुल मर्ज बनाना नहीं चाहते हैं, तो आप केवल source की सामग्री को पकड़ सकते हैं और target पर एक नई प्रतिबद्धता के लिए उनका उपयोग कर सकते हैं:

git checkout <source>                          # fill index with contents of <source>
git symbolic-ref HEAD <target>                 # tell git we're committing on <target>
git commit -m "Setting contents to <source>"   # make an ordinary commit with the contents of <source>

जो मैं समझता हूं, उससे आप मौजूदा शाखा को मौजूदा शाखा में बदल सकते हैं। संक्षेप में, यह वर्तमान शाखा में जो कुछ भी है उसके साथ master को ओवरराइट करेगा:

git branch -f master HEAD

एक बार ऐसा करने के बाद, आप आमतौर पर अपनी स्थानीय master शाखा को धक्का दे सकते हैं, संभवतः यहां बल पैरामीटर की भी आवश्यकता होती है:

git push -f origin master

कोई विलय नहीं, कोई लंबा आदेश नहीं। बस branch और push - लेकिन, हाँ, यह master शाखा के इतिहास को फिर से लिख देगा , इसलिए यदि आप एक टीम में काम करते हैं तो आपको पता होना चाहिए कि आप क्या कर रहे हैं।

वैकल्पिक रूप से, मैंने पाया कि आप किसी भी शाखा को किसी भी दूरस्थ शाखा में धक्का दे सकते हैं, इसलिए:

# This will force push the current branch to the remote master
git push -f origin HEAD:master

# Switch current branch to master
git checkout master

# Reset the local master branch to what's on the remote
git reset --hard origin/master

मुझे सबसे अच्छा काम करने के लिए यह आसान तरीका मिला। यह इतिहास को फिर से लिखता नहीं है और शाखा के सभी पिछले चेक-इन मास्टर को जोड़ा जाएगा। कुछ भी नहीं खो गया है, और आप स्पष्ट रूप से देख सकते हैं कि प्रतिबद्ध लॉग में क्या हुआ।

उद्देश्य: "मास्टर" की वर्तमान स्थिति "मास्टर" बनाएं

एक शाखा पर काम करना, यह सुनिश्चित करने के लिए कि आपके स्थानीय और रिमोट रिपॉजिटरीज अद्यतित हैं, अपने परिवर्तनों को प्रतिबद्ध और धक्का दें:

git checkout master      # Set local repository to master
git reset --hard branch  # Force working tree and index to branch
git push origin master    # Update remote repository

इसके बाद, आपका मास्टर शाखा की आखिरी प्रतिबद्धता की सटीक स्थिति होगी और आपके मास्टर प्रतिबद्ध लॉग शाखा के सभी चेक-इन दिखाएंगे।


यदि आप ग्रहण में ईजीआईटी का उपयोग कर रहे हैं

  • प्रोजेक्ट नोड पर राइट क्लिक करें
  • टीम का चयन करें -> फिर उन्नत -> फिर शाखा का नाम बदलें
  • फिर रिमोट ट्रैकिंग फ़ोल्डर का विस्तार करें
  • गलत नाम वाली शाखा का चयन करें, फिर नाम बदलें बटन पर क्लिक करें, इसे नया नाम दें
  • नया मास्टर चुनें, फिर इसे मास्टर के नाम पर बदलें

शाखा के नाम से master नाम बदलें:

git branch -M branch_name master

सुनिश्चित करें कि सब कुछ आपके रिमोट रिपोजिटरी (गिटहब) पर धक्का दिया गया है:

git checkout master

"Better_branch" के साथ "मास्टर" को ओवरराइट करें:

git reset --hard better_branch

पुश को अपने रिमोट रिपोजिटरी पर मजबूर करें:

git push -f origin master




git