git - गिट में मास्टर शाखा को पूरी तरह से दूसरी शाखा से कैसे बदलें?




merge git-branch (4)

आप इस तरह के seotweaks के साथ मास्टर ओवरराइट करने के लिए "हमारी" विलय रणनीति का उपयोग करने में सक्षम होना चाहिए:

git checkout seotweaks
git merge -s ours master
git checkout master
git merge seotweaks

परिणाम आपका मास्टर अब अनिवार्य रूप से seotweaks होना चाहिए।

( --strategy=ours लिए छोटा है --strategy=ours )

'हमारी' रणनीति के बारे में दस्तावेज़ों से:

यह किसी भी संख्या के सिर को हल करता है, लेकिन विलय का परिणामी पेड़ हमेशा मौजूदा शाखा प्रमुख का होता है, जो प्रभावी रूप से अन्य सभी शाखाओं के सभी परिवर्तनों को अनदेखा कर देता है। इसका मतलब साइड शाखाओं के पुराने विकास इतिहास को पीछे छोड़ने के लिए किया जाता है। ध्यान दें कि यह -ऑर्स विकल्प से रिकर्सिव विलय रणनीति से अलग है।

संभावित डुप्लिकेट:
वर्तमान शाखा को गिट में मास्टर करने के लिए बदलें

मेरे गिट रेपो में दो शाखाएं हैं:

  1. स्वामी
  2. seotweaks (मूल रूप से मास्टर से बनाया गया)

मैंने इसे master में वापस विलय करने के इरादे से seotweaks बनाया, हालांकि यह 3 महीने पहले था और इस शाखा में कोड master से 13 संस्करण आगे है, यह प्रभावी ढंग से हमारी कामकाजी मास्टर शाखा बन गया है क्योंकि मास्टर में सभी कोड अधिक है या अब कम अप्रचलित।

मुझे पता है कि बहुत बुरा अभ्यास, सबक सीखा।

क्या आप जानते हैं कि मैं master शाखा की सभी सामग्री को seotweaks में कैसे बदल सकता seotweaks ?

मैं बस master में सबकुछ हटा सकता हूं और विलय कर सकता हूं, लेकिन यह सर्वोत्तम अभ्यास की तरह महसूस नहीं करता है।


आप रिमोट पर मास्टर का नाम बदल सकते हैं / हटा सकते हैं, लेकिन यह एक मुद्दा होगा यदि बहुत से लोगों ने रिमोट मास्टर शाखा पर अपना काम किया है और उस शाखा को अपने स्थानीय रेपो में खींच लिया है।
यह मामला यहां नहीं हो सकता है क्योंकि हर कोई शाखा ' seotweaks ' पर काम कर रहा है।

उस स्थिति में आप कर सकते हैं:
गिट रिमोट - शो काम नहीं कर सकता है। (यह जांचने के लिए एक git remote show बनाएं कि आपके रिमोट को आपके स्थानीय रेपो में कैसे घोषित किया गया है। मैं ' origin ' origin )
( house9 बारे में, house9 टिप्पणियां: "मुझे एक अतिरिक्त कदम करना था, house9 पर ' Admin ' बटन पर क्लिक करें और ' master ' के अलावा किसी अन्य चीज़ को ' Default Branch ' सेट करें, फिर इसे बाद में रखें")

git branch -m master master-old  # rename master on local
git push origin :master          # delete master on remote
git push origin master-old       # create master-old on remote
git checkout -b master seotweaks # create a new local master on top of seotweaks
git push origin master           # create master on remote

मगर फिर से:

  • यदि अन्य उपयोगकर्ता दूरस्थ रूप से मास्टर को हटाते समय खींचने का प्रयास करते हैं, तो उनके खींच विफल हो जाएंगे ("रिमोट पर ऐसा कोई रिफ नहीं है")
  • जब मास्टर रिमोट पर पुनर्निर्मित होता है, तो एक पुल उस नए मास्टर को अपने स्थानीय (अब पुराने) मास्टर पर विलय करने का प्रयास करेगा: बहुत सारे संघर्ष। उन्हें वास्तव में reset --hard करने की आवश्यकता होती है - अपने स्थानीय मास्टर को रिमोट / मास्टर शाखा में लाएंगे, और उनके वर्तमान मास्टर को भूल जाएंगे।

मास्टर शाखा का नाम बदलने के लिए गिट शाखा-एम का उपयोग करने के बारे में क्या, फिर seotweaks शाखा का नाम मास्टर करने के लिए? कुछ इस तरह:

git branch -m master old-master
git branch -m seotweaks master
git push -f origin master

यह मूल मास्टर में काम को हटा सकता है , कृपया git push -f origin master चलाने से पहले अपने मूल मास्टर की जांच करें।


मैंने यह करने का सबसे अच्छा तरीका पाया (मुझे अपने सर्वर के साथ कोई समस्या थी जो मुझे हटाने की अनुमति नहीं दे रही थी)

मूल भंडार होस्ट करने वाले सर्वर पर, भंडार के अंदर निर्देशिका से निम्न टाइप करें:

git config receive.denyDeleteCurrent ignore

आपके वर्कस्टेशन पर:

git branch -m master vabandoned                 # rename master on local
git branch -m newBranch master                  # locally rename branch newBranch to master
git push origin :master                         # delete the remote's master
git push origin master:refs/heads/master        # push the new master to the remote
git push origin abandoned:refs/heads/abandoned  # push the old master to the remote

सर्वर पर वापस जो मूल भंडार होस्ट करता है:

git config receive.denyDeleteCurrent true

इस पृष्ठ के लेखक को क्रेडिट

http://www.mslinn.com/blog/?p=772





git-branch