GitHub में "शुरू" कैसे करें?


14

मैं अपनी परियोजना की एक पूरी तरह से फिर से लिखने की योजना बना रहा हूं, एक अन्य रूपरेखा आदि का उपयोग करके संदर्भ के लिए इतिहास सहित पुराने कोड को रखना अच्छा होगा। जोखिम, भ्रम और आश्चर्य से बचने के लिए, ऐसा करने का सबसे अच्छा तरीका क्या है?

मेरा विचार एक नई शाखा बनाने का है, वहां सब कुछ बदल देना और वहां चल रहा एक मूल "नया" संस्करण प्राप्त करना, अंतिम "पुराने" मास्टर को टैग करना, और फिर शाखा को मास्टर में विलय करना। क्या यह आवाज़ उचित है?


18
यह प्रश्न गिट के बारे में प्रतीत होता है, न कि जीथब के बारे में।
user253751

यदि आप पुराने कोड को संपादित करने की योजना नहीं बनाते हैं, तो बस यह चाहते हैं कि आप आसानी से देख सकें कि आप टैग का उपयोग कर सकते हैं। लेकिन टैग को अपरिवर्तनीय माना जाता है (लेकिन आप हमेशा हटा सकते हैं, फिर से जोड़ सकते हैं)।
ट्रैविस

2
एक नया भंडार बनाएँ।
कोडनेम

जवाबों:


15

मैं एक ही भंडार में सब कुछ रखने के लिए वोट देता हूं।

मैं:

  1. अपने पुराने कोड को इंगित करने के लिए एक नई शाखा बनाएं
  2. सभी कोड हटाएं और मास्टर पर प्रतिबद्ध करें
  3. मास्टर पर अपना पुनर्लेखन शुरू करें।

इस तरह से:

# checkout the master branch
git checkout master

# create a new branch so you can find the old code easily
git branch oldStuff-KeepingForReference

# push the branch to github
git push origin oldStuff-KeepingForReference

# You currently have the master branch checked out
# so now cd to the project root and start your rewrite: 
cd <your project root>
rm -rf *

# Create a commit of the delete
git add --all *
git commit -m "Fresh start"

# Start your rewrite
echo "Some changes" > file.txt
git add file.txt
git commit -m "This is the first commit of the rewrite"

एक तरफ: आप पुराने विरासत कोड का एक टैग भी बना सकते हैं, अगर आप जानते हैं कि आप कभी भी इसमें कोई कमिट नहीं जोड़ना चाहेंगे।

जब आपको ऐसा करने के बजाय एक नया भंडार बनाना चाहिए:

  • जब आपका वर्तमान रेपो निषेधात्मक रूप से बड़ा होता है और रेपो का क्लोनिंग धीमा होता है। आप एक नए रेपो का उपयोग करने पर विचार कर सकते हैं।

8

जब तक कि पुनर्लेखन और ऐतिहासिक शाखाओं को मिलाने का कोई दबाव न हो, मैं उन्हें अलग रखूँगा। पुराने कोड को रखने के लिए एक नई शाखा बनाएं, मास्टर में अपना पुनर्लेखन करें और उन्हें इस तरह अलग रखें। इस तरह से आप हमेशा पुराने ढांचे / कार्यान्वयन के साथ काम कर सकते हैं यदि स्थिति में परिवर्तन होता है।


3

यही अनाथ शाखाएं हैं।

git branch -m master new_branch       #rename the branch
git push origin new_branch:new_branch #push the old code
git push origin :master               #delete the origin/master branch containing the old code
git checkout --orphan master          #create a new orphane branch - master. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and commits.

echo foo > file.txt
git add file.txt
git commit -m 'init commit'
git push origin master

आपको Github में डिफ़ॉल्ट शाखाnew_branch को अस्थायी रूप से सेट करने की आवश्यकता हो सकती है क्योंकि यह डिफ़ॉल्ट रूप से मास्टर प्रदर्शित करता है।


2

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

मेरा सुझाव है कि आप इस दृष्टिकोण को अपनाने के बजाय बाद में शाखा को वापस न केवल मास्टर में विलय करने का प्रयास करें, क्योंकि आपके पास अभी भी अप्रचलित कोड से ब्लोट होगा, बल्कि इसलिए भी कि आपके द्वारा तैयार किए जाने तक कई निराशाजनक विलय संघर्ष हो सकते हैं खींचो। इससे बचने के लिए कि दो पूरी तरह से अलग-अलग लोगों को एक साथ विलय करने के बजाय एक स्पष्ट शाखा के साथ शुरू करना सबसे अच्छा होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.