Evan का Jujutsu ट्यूटोरियल
(evmar.github.io)- Git का उपयोग करने का अनुभव रखने वाले पाठकों के लिए सरल लेकिन शक्तिशाली version control system Jujutsu(jj) को संक्षेप में सीखने के लिए तैयार किया गया ट्यूटोरियल
- सीखना शुरू करने से पहले Jujutsu का उपयोग क्यों करें, यह जानने के इच्छुक पाठकों के लिए अलग Jujutsu परिचय लेख भी दिया गया है
- संवादात्मक शुरुआती गाइड, विस्तारपूर्ण आधिकारिक दस्तावेज़, version control के बिल्कुल नए पाठकों के लिए सामग्री आदि जैसे पाठक के स्तर के अनुसार विकल्प भी बताए गए हैं
- विषयों के चयन, किन बातों को छोड़ा जाए, और किस क्रम में रखा जाए, यह सावधानी से तय करने के लिए इसे Evan Martin ने स्वयं लिखा है
- मुख्य लेखन में AI का उपयोग नहीं किया गया, और अधिकांश सामग्री पूरी होने के बाद सिर्फ त्रुटि जाँच के लिए AI का उपयोग किया गया
लक्षित पाठक और सीखने का मार्ग
- Jujutsu एक सरल लेकिन शक्तिशाली version control system है, और इस ट्यूटोरियल में आगे इसे jj के रूप में लिखा गया है
- यह Git से परिचित पाठकों के लिए मुख्य बातों पर केंद्रित एक संक्षिप्त सीखने का प्रवाह प्रदान करता है
- अगर आप तुरंत सीखना शुरू करना चाहते हैं, तो ट्यूटोरियल शुरू करें पर जा सकते हैं; और अगर आप पहले इसकी ज़रूरत समझना चाहते हैं, तो Jujutsu परिचय लेख देख सकते हैं
पाठक के अनुसार वैकल्पिक सामग्री
- अगर इस ट्यूटोरियल का तरीका आपके लिए उपयुक्त नहीं है, तो अपने अनुभव स्तर और पसंद के अनुसार नीचे दी गई सामग्री चुन सकते हैं
- Steve's Jujutsu tutorial: शुरुआती लोगों के लिए सबसे अधिक अनुशंसित सामग्री, संवादात्मक शैली में लिखी गई है
- Jujutsu documentation: एक आधिकारिक ट्यूटोरियल प्रदान करता है जो शुरुआत से ही अधिक विस्तार में जाता है
- Jujutsu for Everyone: उन पाठकों के लिए है जिनके पास पहले से version control का अनुभव नहीं है
स्वयं लेखन और AI के उपयोग की सीमा
- पूरा पाठ Evan Martin ने स्वयं लिखा है, और क्या शामिल करना है, क्या छोड़ना है, तथा किस क्रम में रखना है, यह सब मनुष्य द्वारा सावधानी से तय किया गया है
- मुख्य सामग्री लिखने में AI का उपयोग नहीं किया गया, और अधिकांश लेखन पूरा होने के बाद केवल त्रुटियों की जाँच के लिए इसका उपयोग किया गया
1 टिप्पणियां
Lobste.rs की राय
सच कहूँ तो अपनी साख दाँव पर लगाकर कह सकता हूँ कि मैंने करीब एक हफ्ते
jjइस्तेमाल किया, लेकिन आखिरकार Git को सीधे संभालने की तकलीफ़ कम करने के लिए LLM की मदद लेनी पड़ी, और यह भी नहीं लगा कि यह मेरे मौजूदा workflow की पूरी तरह जगह लेता हैमैं आम तौर पर सिर्फ
git checkout,git add,git commit,git pushही इस्तेमाल करता हूँ, और प्रचार लेखों में जिन index, stash, कई तरह के reset, बीच में चल रहे rebase, और असंगत undo जैसी समस्याओं की बात होती है, उनसे मेरा लगभग कभी सामना नहीं हुआ; मैं monorepo भी ज़्यादा इस्तेमाल नहीं करताJujutsu का मुख्य target user कौन है, और
jjमें निपुण होने में कितना समय लगा—यह जानने में दिलचस्पी है; अगली बार कम से कम उतना समय तो देना चाहूँगामैं भी Git में बुनियादी कामों से आगे बढ़ने से बचता हूँ; stash करके branch बदलने की बजाय मैंने repo को दूसरी जगह फिर से clone किया, और सिर्फ संबंधित बदलाव चुनकर commit करने की बजाय
git add --allसे सब कुछ commit कर दिया, या editor में बदलाव revert करके commit किया और फिर दोबारा apply कियानौकरी में 7 साल Mercurial इस्तेमाल करने की वजह से
jjअपनाना मेरे लिए आसान रहा, लेकिन अब commit को इधर-उधर रखना और कई बदलावों को संभालना इतना आसान हो गया है कि पहले जिन जटिल कामों से मैं सहज रूप से बच निकलता, अब उन्हें सक्रिय रूप से करता हूँअगर आप बस linearly development करते हैं और कभी-कभार snapshot छोड़ना चाहते हैं, तो वे commands काफी हैं, और पूरा VCS ज़रूरत से ज़्यादा भी हो सकता है—Dropbox ही काफी हो सकता है
मेरे लिए VCS कोड और उसकी परतों के बारे में मेरी सोच को दिखाने वाला narrative बनाने का tool है; इसका मुख्य पाठक सहकर्मी हैं और दूसरा पाठक 10 साल बाद का मैं हूँ।
jjइसे बहुत कम friction के साथ संभव बनाता हैterminology और features की बुनियाद समझने के लिए मैंने कुछ guides शुरू से अंत तक पढ़ीं, और कुछ दिनों तक इसे अपने personal project में लगातार इस्तेमाल करने के बाद basic कामों में काफ़ी सहज हो गया; VCS को देखने का मेरा तरीका भी बदल गया
refactoring या बड़े feature पर काम करते समय मैं पहले अंतिम लक्ष्य तक implementation पूरा करता हूँ, फिर उसे ऐसे छोटे बदलावों में बाँटता हूँ जिन्हें review करना आसान हो और जिनका कारण साफ़ हो—जैसे “सभी eslint warnings ठीक करना”, “function expose करने के लिए refactoring”, “call site A को नए function में बदलना”, “नया feature जोड़ना”।
jj splitइस काम के लिए बिल्कुल perfect है, और सिर्फ यह एक feature भीjjइस्तेमाल करने के लिए काफ़ी वजह हैइसके उलट
git stashमें कई stash संभालना मुश्किल है, और conflict होने पर save किया हुआ कोड खोने का जोखिम भी रहता है—यह usability traps से भरा है। नीचे वाले commit पर PR feedback लागू करके ऊपर के commit या PR को rebase करना भी, खासकर stacked PR में, progress indicator न होने, बीच में रुक जाने, या दोबारा stack बनाना कठिन होने की वजह से लगभग डरावना अनुभव है। इसलिए stacked PR management के लिए मैं अब भी Graphite इस्तेमाल करता हूँjjसे मुझे सबसे बड़ा फायदा rebase को संभालने के तरीके में मिलाorganic chemistry में graduate student रहे एक व्यक्ति ने paper work branch को 4 साल तक बिना merge या rebase किए विकसित किया था, जिससे वह
mainसे हजारों commits पीछे रह गई; degree review से पहले उसे merge करना था। लगभग हर commit पर conflict आता था, इसलिए Git में इसमें 1–2 हफ्ते लगते; और अगर तीसरे दिन कोई urgent bug आ जाए, तो rebase रोककर bug fix करना पड़ता और फिर शुरुआत से फिर चालू करना पड़ता। 3 हफ्ते बाद जब काम खत्म हुआ, तब latestmainके हिसाब से फिर rebase करना पड़ाjjमें merge conflicts first-class object हैं, इसलिए समय मिलने पर उन्हें resolve किया जा सकता है, और बीच में नए commit पर जाकर urgent bug ठीक करने पर भी progress नहीं खोती। Git में जो rebase एक हफ्ता लेता, वह एक दिन में पूरा हो गया; एक बार तो लगातार 200 ऐसे commits मिल गए जिन्हें merge करने पर कोई बदलाव ही नहीं होता था, और मैं जिन टकरावों की दसियों हज़ार lines को दो दिन से संभाल रहा था, उन्हें एक मिनट से भी कम में पूरा का पूरा फेंक सका। Rebase के दौरान भीmainअपडेट किया जा सकता है और काम वाली branch को latestmainके ऊपर ले जाया जा सकता हैमैं Git का इतना आदी हूँ कि कभी-कभी बस command देखनी पड़ती है, फिर भी यह लेख पहला Jujutsu परिचय लेख है जो मुझे सच में दिलचस्प लगा
पहले के लेख ज़्यादातर “आप भयानक Git command-line interface से निकल सकते हैं” से शुरू होते थे; मैं Git की विचित्रताओं और दूसरों की दिक्कतों को समझता हूँ, लेकिन ऐसी भाषा की वजह से Jujutsu मुझे romance novel या beef vindaloo की तरह कोई ऐसी चीज़ लगती थी जिसका मुझसे लेना-देना नहीं
jjकी खुशी समझाना मुश्किल इसलिए है क्योंकि कई implicit properties, जिन्हें मैं हर VCS में स्वाभाविक मानता था, दरअसल वैसी नहीं हैं, और atomic operations कहीं ज़्यादा सरल हैंअच्छा marketing phrase बनाना कठिन है, इसलिए आखिर में “यह Git नहीं है” ही पूरी व्याख्या बन जाती है; मैं खुद भी इसे ठीक से समझाने में अच्छा नहीं हूँ
दूसरे Git GUI से अलग, यह असली Git commands के क़रीब से क़रीब रहता है, बस कठिन syntax को menus और buttons में बदल देता है, और हर action से जुड़ी command को छिपाने की बजाय status bar में दर्ज भी करता है। अगर Sublime JJ आया, तो मैं तुरंत उस पर चला जाऊँगा
jjआज़माने का मन कराया, वह थी: Git जो हमेशा interactive rebase की स्थिति में हो