मैं इस गिट भंडार में एक नई "रूट" शाखा को परिभाषित करना चाहता हूं। "रूट" शाखा से मेरा मतलब है एक शाखा जो भंडार में अन्य सभी शाखाओं से पूरी तरह से स्वतंत्र है।नया (और खाली!) "रूट" शाखा कैसे बनाएं?
दुर्भाग्य से, रेपो के प्रतिबद्ध पेड़ के बहुत ही आधार पर प्रतिबद्धता (चलो इसे A
पर कॉल करें) में बहुत सारी फ़ाइलें शामिल हैं (यह एक भंडार था जिसे पहले से ही परिपक्व प्रोजेक्ट पर शुरू किया गया था)।
इसका मतलब यह है कि भले ही मैं नई शाखा का <start-point>
रूप A
दिया था, इस नई शाखा एक "क्लीन स्लेट" से शुरू नहीं होगी, बल्कि यह सभी फ़ाइलें A
में अंजाम दिया होते हैं।
क्या कोई तरीका है कि मैं <start-point>
के साथ A
के करीब इस भंडार में पूरी तरह से नंगे शाखा बना सकता हूं?
BTW, यह नहीं एक नया रेपो बनाने के बराबर है। कई कारणों से अलग रिपो कम सुविधाजनक होंगे।
संपादित: ठीक है, यह मैं vcsjones 'उत्तर के आधार पर क्या किया, यह है:
# save rev of the current earliest commit
OLDBASE=$(git rev-list --max-parents=0 HEAD)
# create a new orphan branch and switch to it
git checkout --orphan newbranch
# make sure it's empty
git rm -rf .
# create a new empty commit in the new branch, and
# save its rev in NEWBASE
git commit --allow-empty -m 'base commit (empty)'
NEWBASE=$(git rev-list HEAD)
# specify $NEWBASE as the new parent for $OLDBASE, and
# run filter-branch on the original branch
echo "$OLDBASE $NEWBASE" > .git/info/grafts
git checkout master
git filter-branch
# NOTE: this assumes that the original repo had only one
# branch; if not, a git-filter-branch -f <branch> command
# need to be run for each additional branch.
rm .git/info/grafts
हालांकि इस प्रक्रिया में थोड़ा शामिल है, अंतिम परिणाम एक है खाली आधार प्रतिबद्ध जो किसी भी नई "साफ-स्लेट शाखा" के लिए <start-point>
के रूप में कार्य कर सकता है;
git init
git commit --allow-empty -m 'base commit (empty)'
... ताकि पहले प्रतिबद्ध खाली है, और हमेशा: सब मैं तो क्या करने की जरूरत होगी
git checkout -b cleanslate $(git rev-list --max-parents=0 HEAD)
भविष्य में मैं हमेशा इस तरह नई खजाने बनाएगा है एक नई स्वतंत्र शाखा शुरू करने के लिए उपलब्ध है। (यह हो सकता है, मुझे पता है, एक बहुत मुश्किल से ही जरूरत सुविधा है, लेकिन यह यह आसानी से उपलब्ध बनाने के लिए काफी सरल है।)
की डुप्लीकेट http://stackoverflow.com/questions/13969050/how-to-create-a-new-empty-branch-for-a-new-project – Anonymoose
@: मन आपको चाहिए में उन लोगों के साथ Anonymoose: बस रिकॉर्ड के लिए (बहस के बजाय): मैं आपकी राय से असहमत हूं। – kjo
'गिट रीबेज --onto'' के आधार पर एक बहुत ही सरल समाधान प्रतीत होता है, http://stackoverflow.com/questions/645450/insert-a-commit-before-the-root-commit-in-git –