00:00:00नमस्ते दोस्तों, मैं GitButler का CEO स्कॉट हूँ।
00:00:02आज मैं आपको GitButler के कुछ शानदार फीचर्स के बारे में बताऊंगा और
00:00:05इस Git क्लाइंट की क्षमताओं का एक सामान्य ओवरव्यू दूंगा।
00:00:07मेरे पास यहाँ एक उदाहरण प्रोजेक्ट है। यह ट्विटर या X का एक क्लोन है, जिसे मैं “Y” कहता हूँ।
00:00:12अब मैं इसमें कुछ पहले से किए गए बदलाव जोड़ूँगा और हम देखेंगे कि
00:00:16कमिट्स कैसे बनाएँ, ब्रांचेस कैसे बनाएँ, पैरेलल ब्रांचेस कैसे बनाएँ और
00:00:20स्टैक्ड ब्रांचेस कैसे बनाएँ। अगर मैं कुछ फाइलों को एडिट करता हूँ, तो आपको
00:00:25Git स्टेटस जैसा आउटपुट दिखेगा जो बताएगा कि आपकी वर्किंग डायरेक्टरी में ये फाइलें बदल गई हैं।
00:00:30अब आप इनके साथ क्या करना चाहते हैं? इन्हें कमिट कैसे करना है? यहाँ हम इनका निरीक्षण कर सकते हैं।
00:00:34मैं अपनी CSS, साइडबार और इंडेक्स फाइलों को देख सकता हूँ। मैंने यहाँ कुछ छोटे बदलाव किए हैं।
00:00:39तो अब मैं एक नई ब्रांच बनाना चाहता हूँ और इन बदलावों को उस पर कमिट करना चाहता हूँ।
00:00:45ऐसा करने के कुछ अलग तरीके हैं। मैं सीधे “कमिट टू न्यू ब्रांच” पर क्लिक कर सकता हूँ,
00:00:49या मैं यहाँ स्पष्ट रूप से एक नई ब्रांच बना सकता हूँ। मैं एक इंडिपेंडेंट (स्वतंत्र) ब्रांच बनाऊँगा,
00:00:54डिपेंडेंट ब्रांच नहीं। स्टैकिंग के बारे में हम थोड़ी देर में बात करेंगे।
00:00:57तो आप इसे एक नाम दें, ब्रांच बनाएँ, और अब आप कई चीजें कर सकते हैं।
00:01:03आप बस कुछ चीजें कमिट कर सकते हैं। जैसे मैं इस application.css फाइल को
00:01:08लेन (lane) में ड्रैग करके कमिट बना सकता हूँ, या मैं सीधे यहीं से कमिट शुरू कर सकता हूँ।
00:01:15आप या तो इस छोटी जगह में छोटा कमिट मैसेज लिख सकते हैं या इसे बढ़ाकर
00:01:19यहाँ एक विस्तृत कमिट मैसेज लिख सकते हैं। चलिए अभी इसे सरल रखते हैं।
00:01:27दूसरी चीज़ जो मैं कर सकता हूँ वो ये तय करना है कि इस कमिट में क्या जाएगा। यहाँ साइड में तीन फाइलें हैं।
00:01:34मैं न केवल यह कह सकता हूँ कि मुझे यह फाइल नहीं चाहिए, बल्कि मैं फाइल के अंदर जाकर विशिष्ट लाइन्स भी चुन सकता हूँ।
00:01:39लेकिन अभी के लिए, चलिए इन सभी बदलावों को कमिट कर देते हैं। या फिर, चलिए
00:01:44दो अलग कमिट करते हैं। मैं इसमें साइडबार वाले बदलाव नहीं चाहता, तो मैं इसे “फ्रंट-एंड फिक्सेस” नाम दूंगा,
00:01:48और फिर दूसरा कमिट “साइडबार फिक्सेस” करूँगा। अब मेरे पास इस नई ब्रांच में दो कमिट हैं।
00:01:55मैं थोड़ा आलसी हूँ, इसलिए यह काम करने के लिए मैं क्लाउड (Claude) कोड का इस्तेमाल करूँगा।
00:01:59मैं थीम को नीले से लाल कर दूँगा और फिर हम देखेंगे कि कैसे एक अलग नई ब्रांच जोड़ी जाए,
00:02:04जो मेरे फ्रंट-एंड फिक्सेस से अलग हो। लगता है काम हो गया। पहले वेबसाइट ऐसी दिखती थी।
00:02:09ट्विटर जैसी चीज़। अगर मैं इन बदलावों को लागू करूँ, तो अब सब कुछ लाल थीम में है,
00:02:14और मेरे फ्रंट-एंड बदलाव यहाँ हो चुके हैं। आप देख सकते हैं कि ये वास्तव में स्वतंत्र ब्रांचेस हैं।
00:02:18तो अगर मैं फ्रंट-एंड फिक्सेस स्टैक को अन-अप्लाई करूँ, तो थीम अब भी लाल रहेगी।
00:02:25मैंने यहाँ यही किया है। और मैं इसे वापस ला सकता हूँ।
00:02:34उसी तरह, मैं रेड कलर थीम को अन-अप्लाई कर सकता हूँ और अब यह लाल नहीं रही। चलिए इसे वापस लगा देते हैं।
00:02:43अब हमारे पास दो अलग ब्रांचेस हैं। मज़ेदार बात यह है कि अगर मैं इसे GitHub पर पुश करता हूँ,
00:02:48तो ये बदलाव एक-दूसरे से अलग रहते हैं, लेकिन वे एक साथ लागू भी हैं।
00:02:52यह बिल्कुल Git ब्रांचेस की तरह है, बस फर्क यह है कि आप एक साथ एक से ज़्यादा ब्रांचेस पर काम कर सकते हैं।
00:02:57अगर मैं साइडबार पर काम जारी रखूँ, तो मुझे यहाँ बदलाव दिखेंगे।
00:03:04मैं इसे ड्रैग करके इस कमिट में शामिल (amend) कर सकता हूँ,
00:03:10या उस ब्रांच पर एक नया कमिट बना सकता हूँ। तो अब ये दो ब्रांचेस समानांतर (parallel) चल रही हैं।
00:03:14चलिए इसे करने का एक दूसरा तरीका देखते हैं। मान लीजिए कि
00:03:18लाल थीम, फ्रंट-एंड में किए गए बदलावों पर निर्भर करती है।
00:03:24तो मैं लाल थीम को देखने से पहले फ्रंट-एंड वाले काम को मर्ज करना चाहता हूँ, या सब एक साथ।
00:03:29तो चलिए इस कमिट को अन-कमिट करते हैं। और हम इसे एक स्टैक्ड ब्रांच के रूप में बनाएंगे।
00:03:37इसे अन-कमिट करके स्टैक को अन-अप्लाई करते हैं। अब हम यहाँ एक नई डिपेंडेंट ब्रांच जोड़ेंगे।
00:03:42आप नई ब्रांच बनाने पर क्लिक करें और एक डिपेंडेंट ब्रांच जोड़ें। एक और तरीका यह है,
00:03:47कि यहाँ से डिपेंडेंट ब्रांच बनाएँ और इसमें स्टैक्ड फ्रंट-एंड फिक्सेस जोड़ें, और इसे नाम दें
00:03:51sc_red_theme। अब आप देख सकते हैं कि ये ब्रांचेस स्टैक्ड हैं। अब मैं इसे
00:03:58इसमें कमिट कर सकता हूँ। अब जब आपके पास ये स्टैक्ड ब्रांचेस हैं, तो आप इन्हें GitHub पर पुश कर सकते हैं।
00:04:06इन्हें पुश करना बहुत आसान है। अगर GitHub इंटीग्रेशन सेट है, तो आप
00:04:11पुल रिक्वेस्ट (PR) भी बना सकते हैं। अगर मैं यहाँ रेड थीम नाम से PR बनाता हूँ,
00:04:16लेकिन यह एक स्टैक्ड ब्रांच है, तो यह PR डिस्क्रिप्शन में एक पादलेख (footer) जोड़ देगा कि
00:04:20यह ब्रांच असल में एक दूसरी ब्रांच पर निर्भर है जिसे यह टारगेट कर रही है।
00:04:25आपको या तो सबको एक साथ मर्ज करना होगा या रेड थीम से पहले फ्रंट-एंड फिक्सेस को।
00:04:30स्टैक्ड ब्रांचेस के लिए यह बहुत बढ़िया तरीका है। अगर मैं अब इस PR को देखूँ,
00:04:34तो यह स्टैक की दोनों ब्रांचेस को लिंक करता है। यह स्टैक का भाग 2 है और यह भाग 1 है,
00:04:39और वे एक-दूसरे पर निर्भर हैं। एक और मज़ेदार चीज़ है जिसे
00:04:43ब्रांचेस को असाइन करना कहते हैं। यहाँ मेरे पास दो लेंस और तीन ब्रांचेस हैं। दो
00:04:48स्टैक्ड हैं और एक स्वतंत्र है। जब मैं बदलाव करना शुरू करता हूँ, तो मैं
00:04:54हंक्स (hunks) को असाइन कर सकता हूँ। मैं किसी खास ब्रांच को बदलाव असाइन करके उस पर काम जारी रख सकता हूँ।
00:05:00यह ऐसा है जैसे हर लेन का अपना स्वतंत्र स्टेजिंग एरिया हो। जैसे Git में आप
00:05:05git add चलाकर बदलावों को स्टेज करते हैं, यह वैसा ही है, बस यहाँ कई स्वतंत्र स्टेजिंग एरिया हो सकते हैं।
00:05:09चलिए इसे आज़माते हैं। मैं एडमिन पेज पर एक नया सेक्शन जोड़ने का फीचर बना रहा हूँ।
00:05:14मैं इसे उसी वर्किंग डायरेक्टरी में एक अलग ब्रांच में रखूँगा जो स्टैक्ड नहीं है,
00:05:19और मैं एक ऐसी PR खोल सकता हूँ जिसमें सिर्फ वही बदलाव हों। ठीक है, तो यह बदलाव से पहले का
00:05:24एडमिन डैशबोर्ड है। मैंने इसमें हालिया साइनअप्स दिखाने के लिए कुछ बदलाव किए हैं।
00:05:31मेरे पास ये दो बदलाव यहाँ हैं और मैं इन्हें इस लेन में
00:05:37असाइन करना चाहता हूँ। इसके बाद अगर मैं और बदलाव करूँगा, तो अगर सिस्टम समझ नहीं पाया,
00:05:43तो वह उन्हें अन-असाइंड में डाल देगा। लेकिन अगर वे उसी हंक के अंदर हैं, तो वह उन्हें
00:05:47अपने आप उसी असाइंड लेन में रखेगा। चलिए एडमिन कंट्रोलर में कुछ बदलाव करते हैं।
00:05:55बस एक साधारण सा कमेंट, पर देखते हैं क्या होता है। चूंकि एडमिन कंट्रोलर पहले से ही
00:06:00इस लेन को असाइन था, इसलिए मुझे इसे बार-बार स्टेज नहीं करना पड़ेगा।
00:06:05यह समझ जाता है कि यह भी उसी बदलाव का हिस्सा है। तो चलिए इस पर एक नया कमिट बनाते हैं।
00:06:10मैं फिर से कमिट शुरू करता हूँ। मैं इसे बड़ा करके एक अच्छा कमिट मैसेज लिख सकता हूँ। मैं AI का उपयोग
00:06:15कमिट मैसेज जेनरेट करने के लिए भी कर सकता हूँ और फिर उसे एडिट कर सकता हूँ।
00:06:19यह आपके किए गए बदलावों को देखेगा और कम से कम एक शुरुआती ड्राफ्ट दे देगा।
00:06:23तो अब हमारे पास न्यू साइनअप्स एडमिन पेज में एक कमिट है। साइड में हमारे पास
00:06:27वह स्टैक्ड ब्रांच है और मैं यहाँ से स्वतंत्र रूप से पुश करके PR बना सकता हूँ।
00:06:31अगर मैं उस PR को देखूँ, तो हम देखेंगे कि भले ही ये सभी बदलाव
00:06:37मेरी वर्किंग डायरेक्टरी में एक साथ मौजूद हैं, सिस्टम ने उन्हें अलग-अलग
00:06:42ब्रांचेस में बाँट दिया है। तो मैं यहाँ जाकर सिर्फ एडमिन वाला हिस्सा देख सकता हूँ।
00:06:48इसमें सिर्फ एडमिन पेजों का एडिट है, जो अपनी ही ब्रांच और कमिट में है, और यह
00:06:55वर्किंग डायरेक्टरी के बाकी कामों से जुड़ा नहीं है। वे अलग ब्रांचेस में सुरक्षित हैं।
00:06:58GitButler में पैरेलल और स्टैक्ड ब्रांचेस के साथ काम करने का यही फायदा है।
00:07:02ऐसी बहुत सी चीज़ें हैं जो सामान्य Git में काफी कठिन होती हैं, मैं आपको उनमें से कुछ दिखाता हूँ।
00:07:06पहली चीज़, हम कमिट्स को एक ब्रांच से दूसरी ब्रांच में ले जा सकते हैं।
00:07:11अगर मैं इस न्यू साइनअप्स कमिट को रेड थीम वाली ब्रांच में
00:07:15ले जाना चाहूँ, तो मैं बस इसे ड्रैग और ड्रॉप कर सकता हूँ और फिर उस स्टैक को हटा सकता हूँ।
00:07:20अब मेरा कमिट यहाँ है। अगर मुझे कमिट्स को स्क्वैश (एक साथ मिलाना) करना है, तो मैं इसे
00:07:26न केवल उसके नीचे वाले, बल्कि स्टैक के किसी भी दूसरे कमिट पर ड्रैग कर सकता हूँ।
00:07:30मैं इस एडमिन वाले कमिट को साइडबार फिक्सेस में ले जा सकता हूँ या उसकी जगह बदल सकता हूँ।
00:07:36मैं इसे स्टैक में और नीचे ले जा सकता हूँ या दूसरे कमिट में स्क्वैश कर सकता हूँ। अब आप देख सकते हैं
00:07:41कि यह एडमिन वाला काम भी साइडबार फिक्सेस का हिस्सा बन गया है। हम इसका उल्टा भी कर सकते हैं—एक कमिट को तोड़ सकते हैं।
00:07:47उसके लिए हम एक खाली कमिट जोड़ते हैं और फिर बदलावों को उस कमिट में ले जाते हैं।
00:07:52मैं इस स्टैक में कहीं भी, जैसे कि नीचे, एक खाली कमिट जोड़ सकता हूँ। मैं कमिट मैसेज अभी लिख सकता हूँ
00:07:58या पहले फाइलें इसमें डाल सकता हूँ। चलिए इन फाइलों को देखते हैं।
00:08:02यहाँ एडमिन कंट्रोलर और साइडबार वाली फाइलें हैं। चलिए एडमिन इंडेक्स को उठाकर
00:08:08इस बीच वाले कमिट में डाल देते हैं। अब इस कमिट में सिर्फ एडमिन इंडेक्स है, जबकि साइडबार फिक्सेस
00:08:13में अभी भी दूसरी फाइलें हैं। मैं हंक्स (hunks) को भी इधर-उधर ले जा सकता हूँ।
00:08:20अब इसमें साइडबार फिक्सेस का एक हिस्सा है और दूसरे में बाकी हिस्सा।
00:08:30और अगर मैं चाहूँ, तो बाद में कमिट मैसेज भी बदल सकता हूँ।
00:08:34इससे एक और बात याद आई कि कमिट मैसेज एडिट करना बहुत आसान है।
00:08:41सिर्फ इनका क्रम बदलना, स्क्वैश करना या अलग करना ही नहीं, मैं पीछे जाकर
00:08:46इसे “पार्ट 2” में बदल सकता हूँ, और यह उसके ऊपर के सभी कमिट्स को फिर से रिबेस (rebase) कर देगा।
00:08:53एक और दिलचस्प चीज़ है कमिट्स को उसी जगह एडिट करना, और इसके कुछ तरीके हैं।
00:08:57मान लीजिए किसी ने फीडबैक दिया कि मार्जिन टॉप को शून्य की जगह
00:09:0110 पिक्सल कर दो। अब हम उस कमिट को कैसे एडिट करें जो न केवल चार कमिट पीछे है,
00:09:06बल्कि दूसरे स्टैक में है? GitButler के साथ यह बहुत ही आसान है।
00:09:13चलिए अंदर जाकर यह बदलाव करते हैं।
00:09:16ठीक है, तो इसे 10 पिक्सल कर देते हैं। इनलाइन CSS सबसे बढ़िया है। तो यह बदलाव मैंने यहाँ किया है।
00:09:23यह लॉक्ड (locked) है क्योंकि हम एक ऐसे हंक को एडिट कर रहे हैं जो पहले ही एडिट हो चुका है, इसलिए इसे
00:09:28इसी ब्रांच में कहीं जाना होगा। हम इसे किसी अलग पैरेलल ब्रांच में नहीं डाल सकते थे।
00:09:32पर हम यह करेंगे कैसे? सबसे आसान तरीका है कि इस फाइल को लें
00:09:39और इस कमिट में ड्रैग कर दें। अब अगर हम इस कमिट को देखें, तो इसमें वो 10 पिक्सल वाला बदलाव है।
00:09:46हमने उसे मॉडिफाई किया और बाकी कमिट्स को उसके ऊपर रिबेस कर दिया। दूसरा तरीका जो हम देख चुके हैं,
00:09:51वो ये है कि हम इसे एक टेम्परेरी कमिट में डालें
00:09:55और फिर इसे पुराने वाले में स्क्वैश कर दें। इससे भी वही नतीजा मिलता है।
00:10:02अगर हम फिर से देखें, तो मार्जिन अब 10 पिक्सल है। और आखिरी दिलचस्प तरीका
00:10:07जिसे “एडिट मोड” कहते हैं। मान लेते हैं कि हमने यहाँ कुछ नहीं किया था, अभी भी
00:10:12यह शून्य पिक्सल है और हमें इसे एडिट करना है। हम सीधे उस कमिट में जा सकते हैं
00:10:20और “एडिट कमिट” पर क्लिक कर सकते हैं। ऐसा करने पर कुछ दिलचस्प होता है।
00:10:25यह Git में “डिटैच्ड हेड चेकआउट” (detached head checkout) करने जैसा है।
00:10:30यह उस कमिट को उस समय की स्थिति में चेकआउट कर देता है। आप अपनी पसंद का एडिट करें और जब आप उस मोड से बाहर निकलेंगे,
00:10:36तो यह बाकी सब कुछ उसके ऊपर रिबेस कर देगा। हम अपना बदलाव फिर से करेंगे।
00:10:39सिस्टम देख रहा है कि फाइल बदल गई है, और हम सेव करके बाहर निकल जाते हैं।
00:10:46और फिर से सब कुछ रिबेस हो गया। अब हमारा बदलाव वहाँ सुरक्षित है। तो आप सीधे
00:10:52कमिट एडिट कर सकते हैं, बदलाव करके उसे अमेन्ड कर सकते हैं, या नया कमिट करके
00:10:57स्क्वैश कर सकते हैं। GitButler में बदलावों को मैनेज करने के बहुत से तरीके हैं।
00:11:01और आखिरी चीज़ जो मैं दिखाऊँगा वो है “ऑपरेशन्स हिस्ट्री” (Operations History)।
00:11:05यह ऐसी चीज़ है जो Git में करना बहुत मुश्किल है, अगर आपने कभी रिफलॉग (reflog) इस्तेमाल किया हो।
00:11:10ज़्यादातर लोग इससे डरते हैं, लेकिन GitButler में आपका हर काम ऑपरेशन्स लॉग में स्टोर होता है
00:11:15और आप अपनी टाइमलाइन देखकर अतीत के किसी भी पॉइंट पर वापस जा सकते हैं।
00:11:21यह यहाँ वाला बटन है, यहाँ हम इस सेशन के दौरान किए गए अपने सभी काम देख सकते हैं।
00:11:26और मैं समय में किसी भी पॉइंट पर वापस जा सकता हूँ।
00:11:30जैसे अगर मैं उस 10 पिक्सल वाले बदलाव को शुरू करने से पहले की स्थिति में जाना चाहूँ,
00:11:37तो मैं यहाँ वापस आ सकता हूँ और देख सकता हूँ कि उस समय मेरा काम कैसा था।
00:11:42या मैं इस सेशन की बिल्कुल शुरुआत में भी जा सकता हूँ।
00:11:47यह फीचर उस चीज़ को अन-डू नहीं करता जो GitHub पर पुश हो चुकी है।
00:11:52यहाँ मैं देख सकता हूँ कि जो कमिट पुश हो चुके हैं वे अपस्ट्रीम (upstream) कमिट के रूप में लिस्टेड हैं,
00:11:56लेकिन मैं उस समय पर वापस जा रहा हूँ जब मैंने कुछ भी कमिट नहीं किया था।
00:12:01मैं चाहूँ तो इस ब्रांच को हटाकर फिर से शुरू कर सकता हूँ, पर इससे कोई फर्क नहीं पड़ता,
00:12:05क्योंकि मैं अन-डू को भी अन-डू कर सकता हूँ! अगर मैं यहाँ आकर स्नैपशॉट को रिवर्ट (revert) करूँ,
00:12:11तो हम वापस वहीं आ जाएंगे जहाँ हम थे। हम किसी भी समय पीछे जा सकते हैं।
00:12:16तो यह बहुत अच्छा है, आपको किसी भी एक्शन से डरने की ज़रूरत नहीं है।
00:12:22अगर आप उलझ गए हैं या बस 10 मिनट पहले वाली स्थिति में जाना चाहते हैं,
00:12:26तो टाइमलाइन खोलें, रिवर्ट दबाएं और आप वहाँ पहुँच जाएंगे। तो यह था GitButler का
00:12:32एक छोटा ओवरव्यू—रिबेसर, कमिट एडिटर, पैरेलल और स्टैक्ड ब्रांचेस,
00:12:36सब कुछ बिना किसी दूसरे टूल के। इसे डाउनलोड करें, डिस्कोर्ड पर हमें बताएं कि आपको कैसा लगा,
00:12:41और इसका आनंद लें।