खोज…
वाक्य - विन्यास
- git worktree add [-f] [--detach] [- checkout] [-b <नई-शाखा>] <पथ> [<शाखा>]
- git वर्कट्री प्रून [-n] [-v] [- एक्पायर <एक्सपायर>]
- गिट वर्कट्री सूची [- चीनी मिट्टी के बरतन]
पैरामीटर
पैरामीटर | विवरण |
---|---|
-फ --फोर्स | डिफ़ॉल्ट रूप से, एक नया वर्किंग ट्री बनाने से इंकार करते हैं जब <branch> दूसरे वर्किंग ट्री द्वारा पहले ही चेक आउट कर दिया जाता है। यह विकल्प उस सुरक्षा को ओवरराइड करता है। |
-बी <new-branch> -बी <new-branch> | जोड़ने के साथ, एक नई शाखा बनाएं जिसका नाम <new-branch> <branch> से शुरू हो रहा है, और नए कार्यशील वृक्ष में <new-branch> । यदि <branch> छोड़ा गया है, तो यह HEAD लिए डिफॉल्ट करता है। डिफ़ॉल्ट रूप से, -b पहले से मौजूद होने पर एक नई शाखा बनाने से इनकार करता है। -B इस सुरक्षा को ओवरराइड करता है, <new-branch> से <branch> रीसेट करता है। |
--detach | जोड़ने के साथ, नए काम के पेड़ में HEAD को अलग करें। |
- [सं-पु।] चेकआउट | डिफ़ॉल्ट रूप से, चेक आउट करें <branch> , हालांकि, --no-checkout का उपयोग कस्टमाइज़ेशन बनाने के लिए चेकआउट को दबाने के लिए किया जा सकता है, जैसे कि विरल-चेकआउट को कॉन्फ़िगर करना। |
—न --dry-run | Prune के साथ, कुछ भी न निकालें; बस रिपोर्ट करें कि यह क्या हटाएगा। |
--चीनी मिटटी | सूची के साथ, स्क्रिप्ट के लिए एक आसान-से-पार्स प्रारूप में आउटपुट। यह प्रारूप Git संस्करणों और उपयोगकर्ता कॉन्फ़िगरेशन की परवाह किए बिना स्थिर रहेगा। |
-व - शब्दशः | Prune के साथ, सभी निष्कासन की रिपोर्ट करें। |
- एक्पायर <time> | Prune के साथ, केवल <time> से पुराने अप्रयुक्त कार्यशील पेड़ों को समाप्त करें। |
टिप्पणियों
अधिक जानकारी के लिए आधिकारिक दस्तावेज देखें: https://git-scm.com/docs/git-worktree ।
वर्कट्री का उपयोग करना
आप एक नई सुविधा पर काम करने के बीच में हैं, और आपका बॉस यह मांग करने में आता है कि आप तुरंत कुछ ठीक करें। आप अपने परिवर्तनों को अस्थायी रूप से संग्रहीत करने के लिए आमतौर पर git stash
का उपयोग कर सकते हैं। हालाँकि, इस बिंदु पर आपका काम करने वाला पेड़ अव्यवस्था की स्थिति में है (नई, स्थानांतरित, और हटाई गई फ़ाइलों और अन्य बिट्स और टुकड़ों के आसपास बिखरे हुए) और आप अपनी प्रगति को विचलित नहीं करना चाहते हैं।
एक कार्यपत्रक जोड़कर, आप एक अस्थायी जुड़ा हुआ कार्यशील पेड़ बनाते हैं, जिससे आपातकाल को ठीक किया जा सकता है, जब इसे हटा दिया जाता है, और फिर अपने पहले कोडन सत्र को फिर से शुरू करते हैं:
$ git worktree add -b emergency-fix ../temp master
$ pushd ../temp
# ... work work work ...
$ git commit -a -m 'emergency fix for boss'
$ popd
$ rm -rf ../temp
$ git worktree prune
नोट: इस उदाहरण में, ठीक अभी भी आपातकालीन-फिक्स शाखा में है। इस बिंदु पर आप शायद git merge
या git format-patch
को git merge
करना चाहते हैं और बाद में आपातकालीन-फिक्स शाखा को हटा दें।
एक कार्यबल को आगे बढ़ाना
वर्तमान में (संस्करण 2.11.0 के रूप में) पहले से मौजूद वर्कट्री को स्थानांतरित करने के लिए कोई अंतर्निहित कार्यक्षमता नहीं है। यह एक आधिकारिक बग के रूप में सूचीबद्ध है (देखें https://git-scm.com/docs/git-worktree#_bugs) ।
इस सीमा के आस-पास जाने के लिए .git
संदर्भ फ़ाइलों में सीधे मैनुअल ऑपरेशन करना संभव है।
इस उदाहरण में, रेपो की मुख्य प्रति /home/user/project-main
और द्वितीयक कार्यस्थल /home/user/project-1
पर स्थित है और हम इसे /home/user/project-2
स्थानांतरित करना चाहते /home/user/project-2
।
इन चरणों के बीच में कोई भी git कमांड निष्पादित न करें, अन्यथा कचरा कलेक्टर को ट्रिगर किया जा सकता है और द्वितीयक ट्री के संदर्भ खो सकते हैं। बिना रुकावट के अंत तक शुरू से इन चरणों का पालन करें:
Worktree के बदले
.git
मुख्य पेड़ के अंदर नए स्थान पर बात करने के लिए फ़ाइल। फ़ाइल/home/user/project-1/.git
अब निम्नलिखित होने चाहिए:gitdir: /home/user/project-main/.git/worktrees/project-2
अंदर worktree का नाम बदलें
.git
worktree की निर्देशिका है कि वहाँ में मौजूद ले जाकर मुख्य परियोजना की सूची:$ mv /home/user/project-main/.git/worktrees/project-1 /home/user/project-main/.git/worktrees/project-2
नए स्थान को इंगित करने के लिए
/home/user/project-main/.git/worktrees/project-2/gitdir
अंदर संदर्भ बदलें। इस उदाहरण में, फ़ाइल में निम्नलिखित सामग्री होगी:/home/user/project-2/.git
अंत में, अपने वर्कट्री को नए स्थान पर ले जाएं:
$ mv /home/user/project-1 /home/user/project-2
यदि आपने सब कुछ सही ढंग से किया है, तो मौजूदा कार्य-सूची को सूचीबद्ध करके नए स्थान का उल्लेख करना चाहिए:
$ git worktree list
/home/user/project-main 23f78ad [master]
/home/user/project-2 78ac3f3 [branch-name]
git worktree prune
चलाने के लिए अब यह सुरक्षित होना चाहिए।