00:00:00नमस्ते सबको। मेरा नाम स्कॉट चाकोन है। मैं Git Brother का CEO हूँ।
00:00:02मैं नए Git Brother CLI का एक छोटा सा डेमो देने जा रहा हूँ।
00:00:06तो अगर आप कमांड लाइन से परिचित हैं,
00:00:08और अगर आप Git Brother को प्रोग्राम के ज़रिए इस्तेमाल करना चाहते हैं,
00:00:11तो नया Git Brother CLI एक बहुत ही बेहतरीन चीज़ है।
00:00:14तो चलिए शुरू करते हैं। ठीक है, तो हम एक रिपॉजिटरी से शुरुआत करेंगे।
00:00:18मेरे पास यह छोटा सा Rust प्रोजेक्ट है,
00:00:20और हम Git Brother CLI के वर्कफ़्लो को समझना शुरू करेंगे।
00:00:23यह मुख्य रूप से Git की जगह सीधे इस्तेमाल किया जा सकता है। एक बार यह इंस्टॉल हो जाए,
00:00:27तो आपके पास “but” कमांड होगी। Git के बजाय यही आपका मुख्य इंटरफ़ेस होगा।
00:00:32आप “but” चला सकते हैं या “but” status चला सकते हैं। यह उसका छोटा रूप है।
00:00:35और यह आपको स्टेटस दिखाएगा।
00:00:38तो यह काफी हद तक Git status के आउटपुट जैसा ही है।
00:00:41हम देख सकते हैं कि यहाँ चार बदली हुई फ़ाइलें हैं।
00:00:44कुछ अनट्रैक्ड हैं और कुछ में बदलाव किए गए हैं।
00:00:47यानी कुछ नई फ़ाइलें और कुछ बदली हुई फ़ाइलें, लेकिन “but” का आउटपुट,
00:00:50स्टेटस आपको सिर्फ चार की लिस्ट दिखाएगा। ये बदलाव हैं, है ना?
00:00:55ये वे चीज़ें हैं जिन्हें आपने बदला है। और आप इन्हें कमिट कर सकते हैं,
00:00:59जैसे भी आप चाहें। तो हम क्या करेंगे, आप बस “but” commit चला सकते हैं।
00:01:02यह एक टेम्पररी ब्रांच बना देगा। दरअसल, चलिए इसे आज़माकर देखते हैं।
00:01:05और अगर हम फिर से “but” status चलाते हैं, तो हम देख सकते हैं कि वे सभी बदलाव एक साथ हैं।
00:01:11हम “but status -F” या “--files” भी चला सकते हैं।
00:01:15यह आपको वे फ़ाइलें दिखाएगा जो इस कमिट में बदली गई हैं।
00:01:18लेकिन मान लीजिए कि हम उन सभी को एक ही कमिट में नहीं डालना चाहते, है ना?
00:01:21कुछ Clod से संबंधित हैं। एक रीडमी है।
00:01:24एक मुख्य कोड में बदलाव है। ये वास्तव में तीन अलग-अलग बदलाव हैं, है ना?
00:01:28इसलिए हम चाहते हैं कि ये तीन अलग-अलग कमिट हों। तो चलिए इसे अनडू करते हैं।
00:01:31हम “uncommit” चलाकर एक कमिट को वापस ले सकते हैं।
00:01:36और अब हम वापस आ गए हैं। हमारे पास अभी भी वह टेम्पररी ब्रांच यहाँ है।
00:01:40अगर हम चाहें तो उसे डिलीट कर सकते हैं। लेकिन चलिए इसे ही फिर से इस्तेमाल करते हैं।
00:01:44मैं इसका नाम बदलने जा रहा हूँ। मैं ब्रांच को “Clod stuff” कहूँगा।
00:01:48और अब मेरे पास यहाँ एक नई ब्रांच है और मैं इसमें चीज़ें स्टेज कर सकता हूँ,
00:01:53बिल्कुल “git add” की तरह। तो हम कह सकते हैं, “but stage G0” और “H0”।
00:01:58ये इनके शॉर्ट कोड हैं।
00:02:01अगर आप चाहें तो पूरा पाथ भी टाइप कर सकते हैं,
00:02:04लेकिन हमने इसे तेज़ी से करने के लिए काफी आसान बनाने की कोशिश की है। और अब अगर मैं देखूँ,
00:02:08तो ये “Clod stuff” ब्रांच में स्टेज हो गए हैं और मैं “-O” के साथ कमिट कर सकता हूँ,
00:02:12जिसका मतलब है सिर्फ वही चीज़ें जो स्टेज की गई हैं। अगर मैं सिर्फ “commit” चलाता हूँ,
00:02:15तो यह वह सब कुछ कमिट कर देगा जो स्टेज किया गया है और वह भी जो स्टेज नहीं है।
00:02:18यह तब और बेहतर समझ आएगा जब हमारे पास ज़्यादा ब्रांच होंगी,
00:02:20लेकिन चलिए इसे कमिट करते हैं। अब हमारे पास एक ब्रांच है जिसमें एक कमिट है
00:02:25और कुछ अनस्टेज्ड बदलाव भी हैं।
00:02:28अब यहाँ चीज़ें दिलचस्प हो जाती हैं क्योंकि Git के विपरीत,
00:02:31मान लीजिए कि मैं इस रीडमी को डालना चाहता हूँ,
00:02:34मैं इस रीडमी को कमिट करके पुश करना चाहता हूँ और इसके लिए एक PR खोलना चाहता हूँ।
00:02:37सामान्य तौर पर, अगर मैं यहाँ इस “Clod” ब्रांच पर हूँ,
00:02:41तो मुझे इस ब्रांच को स्टैश करना होगा, रीडमी जोड़ना होगा, उसे कमिट करना होगा,
00:02:44और पुल रिक्वेस्ट के लिए पुश करना होगा।
00:02:45लेकिन Git Brother में हम असल में पैरलेल ब्रांच रख सकते हैं।
00:02:50तो मैं कह सकता हूँ “but branch new as read me” और आप देख सकते हैं कि एक नई ब्रांच
00:02:55निकल आई है और मैं उस फ़ाइल को स्टेज कर सकता हूँ।
00:03:00मैं उस फ़ाइल को कमिट कर सकता हूँ।
00:03:01अगर मैं बदली हुई फ़ाइलों को देखूँ, ठीक है?
00:03:07मेरे पास यह कमिट है जिसमें ये दो Clod वाली चीज़ें हैं।
00:03:09मेरे पास यह रीडमी है जिसमें एक रीडमी बदलाव है। फिर से,
00:03:11मैं वही चीज़ कर सकता हूँ। मैं कह सकता हूँ commit
00:03:17“-c” का मतलब है 'क्रिएट', तो मैं इस तरह एक नई ब्रांच बना सकता हूँ और मैं कहना चाहता हूँ, दरअसल,
00:03:21चलिए देखते हैं कि हमने यहाँ क्या बदला है। मैं थोड़ा भूल गया। ओह,
00:03:25यह “read” कमांड। ठीक है।
00:03:27और यह आखिरी अनकमिटेड चीज़ या उस समय जो भी अनकमिटेड है, उसे ले लेगा
00:03:32और आपको एक नई ब्रांच बनाकर उस पर कमिट करने देगा।
00:03:35और अब हम देख सकते हैं कि हमारे पास तीन ब्रांच हैं।
00:03:38वे सभी एक-दूसरे से स्वतंत्र हैं।
00:03:39वे सभी बदलाव अभी भी हमारी वर्किंग डायरेक्टरी में हैं।
00:03:42हमने वास्तव में अपनी वर्किंग डायरेक्टरी को बिल्कुल नहीं बदला है।
00:03:44हम बस मेमोरी में कमिट बना रहे हैं।
00:03:46और अब मैं “but push” चला सकता हूँ और यह पूछेगा कि आप क्या पुश करना चाहते हैं?
00:03:50क्या आप इन सबको पुश करना चाहते हैं? हर एक पर एक अनपुश्ड कमिट है।
00:03:53क्या आप सिर्फ एक को पुश करना चाहते हैं? चलिए सिर्फ रीडमी को पुश करते हैं।
00:03:57मान लेते हैं कि वही अकेला है जो अभी तैयार है।
00:03:59और हम बस उसे चुन सकते हैं और वह उसे पुश कर देगा।
00:04:02और अगर हम फिर से अपना स्टेटस देखें,
00:04:03तो हम यहाँ स्टेटस से देख सकते हैं कि यह वाला पुश हो चुका है।
00:04:06और ये बाकी सिर्फ लोकल में हैं।
00:04:08तो एक साथ कई ब्रांच पर काम करने में Git Brother बहुत शक्तिशाली है।
00:04:11पर यह स्टैक्ड ब्रांच (stacked branches) भी बना सकता है।
00:04:13तो चलिए हमारे किए गए कमिट्स में से एक के आधार पर
00:04:17एक नई चीज़ बनाने का उदाहरण देखते हैं,
00:04:19उससे एक स्टैक्ड ब्रांच बनाना।
00:04:20ताकि हम नीचे वाली को मर्ज कर सकें और ऊपर वाली पर काम जारी रख सकें।
00:04:23मान लीजिए कि हम एक स्टैक्ड ब्रांच बनाना चाहते हैं।
00:04:26हम चाहते हैं कि इस “read” कमांड को रिव्यू करके मर्ज कर दिया जाए,
00:04:30लेकिन हम उस पर काम जारी रखना चाहते हैं।
00:04:32स्वतंत्र ब्रांच के बजाय स्टैक्ड ब्रांच बनाने के लिए यह एक अच्छा मौका है
00:04:35क्योंकि यहाँ एक निर्भरता (dependency) है। तो इसे करने का तरीका यह है कि हम कह सकते हैं,
00:04:38“but branch new -a” (यानी एंकर पॉइंट),
00:04:42जो कि यह “SC read command” है। और हम कह सकते हैं “SC read more”।
00:04:46और अब अगर हम इसे देखें,
00:04:48तो हम देख सकते हैं कि हमारे पास यह ब्रांच है जो ऊपर स्टैक्ड है।
00:04:50तो चलिए इसे एडिट करते हैं।
00:04:52और हम देख सकते हैं कि यह 10 मैसेज ले रहा है और उन्हें दिखा रहा है।
00:04:57चलिए इसे 20 मैसेज कर देते हैं। और हम इसे भी बदल देंगे।
00:05:02और हम देख सकते हैं कि हमारे पास यह बदलाव है और यहाँ एक लॉक आइकन है क्योंकि यह
00:05:09उस फ़ाइल को बदल रहा है जिसे हमने पहले ही कहीं कमिट कर दिया है।
00:05:11इसलिए यह एक विशिष्ट कमिट से लॉक है।
00:05:13हम इसे वास्तव में इसी के ऊपर कमिट कर सकते हैं क्योंकि यह उसी कोड को बदल रहा है
00:05:16जो वहाँ शुरू किया गया था। हम देख सकते हैं कि “diff” कमांड से क्या बदला है,
00:05:20जो यह देखने का एक अच्छा तरीका है कि कौन से हिस्से बदले गए हैं और हम
00:05:25आगे बढ़कर उसे कमिट कर सकते हैं। ठीक है।
00:05:28अब यह देखने के लिए कि कमिट्स को आपस में बदलना कितना आसान है,
00:05:32मैं दिखाऊँगा कि इसे कैसे करना है,
00:05:33हम “status -F” करेंगे जिससे सभी फ़ाइलें देखी जा सकें।
00:05:37चलिए इसे शेयर करते हैं। हमने पहले ही “push” देखा है,
00:05:40जो आपके रिमोट पर पुश कर देगा,
00:05:42लेकिन हम “PR” भी कह सकते हैं जो पुल रिक्वेस्ट खोलता है। तो हम कह सकते हैं,
00:05:46इनमें से हम किसके लिए पुल रिक्वेस्ट खोलना चाहते हैं?
00:05:48तो चलिए उन सभी के लिए पुल रिक्वेस्ट खोलते हैं।
00:05:50तो यह हर एक के लिए एक एडिटर खोलेगा और पूछेगा,
00:05:54कि मैं PR डिस्क्रिप्शन क्या रखना चाहता हूँ? तो मैं इसे आसान रखूँगा।
00:05:57और अब हमारे पास ये सभी PRs हैं। अब जबकि हमने PRs खोल दिए हैं,
00:06:01हम असल में ऊपर ये नंबर देख सकते हैं। नंबर एक, नंबर दो,
00:06:04ये PR नंबर और मैसेज हैं।
00:06:06हम बस हर बार एक जैसे ही इस्तेमाल कर रहे हैं।
00:06:08हम “-V” कमांड से भी देख सकते हैं,
00:06:10जो कि इन सभी के लिए वर्बोस (verbose) URLs है।
00:06:12तो चलिए एक को देखते हैं।
00:06:14तो यह वह PR है जो रीडमी को बदलता है और हम देख सकते हैं कि इसमें सिर्फ
00:06:18एक कमिट है और सिर्फ उस एक रीडमी फ़ाइल में बदलाव है। तो यह अलग-थलग है।
00:06:23यह स्टैक्ड (stacked) वाला है।
00:06:24और हम देख सकते हैं कि इसने क्या किया है, इसने एक
00:06:28स्टैक खोला है। पहला वाला,
00:06:30यह नीचे वाला PR है जो इस वाले से 'main' को टारगेट कर रहा है।
00:06:35और दूसरा वाला, जिस पर हम यहाँ से जा सकते हैं, वह पहले वाले को टारगेट कर रहा है।
00:06:39तो यह वास्तव में सही ढंग से स्टैक्ड ब्रांच बनाता है।
00:06:41तो अब देखते हैं कि जब हम कुछ इंटीग्रेट करते हैं तो क्या होता है।
00:06:43चलिए इस पुल रिक्वेस्ट पर चलते हैं, यह रीडमी वाली। हम कह सकते हैं, ठीक है,
00:06:46यह अच्छा लग रहा है। मैं इसे मर्ज कर दूँगा। यह अब अपस्ट्रीम (upstream) है।
00:06:49और अगर हम “but pull --check” चलाते हैं तो वह चेक करेगा।
00:06:55हम “but fetch” भी चला सकते हैं, यह आपके लिए इसे रन कर देगा।
00:06:57और यह बीच-बीच में बैकग्राउंड में फ़ेच भी करता रहेगा।
00:07:00आपने शायद इसे देखा होगा जब हम कुछ कमांड चला रहे थे।
00:07:02यह कहता है कि मैंने एक बैकग्राउंड प्रोसेस शुरू की है, लेकिन हम देख सकते हैं कि यह वाला
00:07:06इंटीग्रेट हो गया है। हम इसे अपस्ट्रीम इंटीग्रेटेड देख सकते हैं। और इसलिए जब हम “get pull” चलाते हैं,
00:07:10तो यह क्या करेगा कि वह नई जानकारी प्राप्त करेगा।
00:07:13यह हमारी दूसरी ब्रांचों को रीबेस (rebase) कर देगा और इस इंटीग्रेटेड
00:07:16ब्रांच को बाहर निकाल देगा। तो हम देख सकते हैं कि इसे लोकल से हटा दिया गया है।
00:07:19तो अब जब हम देखते हैं, तो वह वाला काम हो चुका है,
00:07:22इन्हें रीबेस कर दिया गया है ताकि ये नए वाले के साथ अपडेट हो जाएँ और अगर हम चाहें तो
00:07:25इन्हें वापस ऊपर पुश कर सकते हैं। और अब किसी भी समय,
00:07:29और वह आपकी ब्रांचों में से एक को चुन लेगा।
00:07:33and that will go ahead and choose one of your branches.
00:07:36और आप देख सकते हैं कि यह उसी पहली ब्रांच को चुन लेगा जिस पर आप थे,
00:07:39लेकिन आपके पास अभी भी वे सभी ब्रांच हैं जिन पर हम यहाँ काम कर रहे थे।
00:07:43बस इतना है कि आपका अपना Git केवल एक पर ही हो सकता है। तो अब आप फिर से केवल एक पर हैं।
00:07:47तो आप Git Brother मोड में अंदर-बाहर जाने के लिए “set up” और “tear down” का उपयोग कर सकते हैं।
00:07:50अगर आप एक से अधिक ब्रांचों पर काम करना चाहते हैं या बस सामान्य Git कमिट टूलिंग के साथ काम करना चाहते हैं।
00:07:55लेकिन फिर से, भले ही हम Git Brother मोड में हों, आप अभी भी ज़्यादातर
00:08:00Git कमांड का उपयोग कर सकते हैं। तो आप इनमें से किसी एक पर “git show” कह सकते हैं। यह वही चीज़ है।
00:08:04आप “git log” कह सकते हैं, वही बात है, “git log” अभी भी काम करता है।
00:08:08ये सभी रीडिंग कमांड्स ठीक काम करते हैं। शो, लॉग, ये सभी चीज़ें,
00:08:13बस कमिट करना ही है जिसे हम वास्तव में आपके लिए मैनेज कर रहे हैं। इस मामले में,
00:08:16आप सीधे किसी चीज़ को चेकआउट भी कर सकते हैं और Git Brother उसे देख लेगा और वह
00:08:21वह सब कुछ हटा देगा जो वह कर रहा था। और फिर से,
00:08:24आपको फिर से सब ठीक मिल जाएगा।
00:08:26और आखिरी चीज़ जो मैं दिखाने जा रहा हूँ वह यह है कि इन सभी कमांड्स में एक
00:08:30“--json” वर्शन है। तो अगर आप “--json” के साथ स्टेटस चलाना चाहते हैं,
00:08:34तो आप वैसा कर सकते हैं। अगर आप किसी कमिट पर “show” चलाना चाहते हैं, उदाहरण के लिए,
00:08:41तो आप कर सकते हैं, लगभग सभी कमांड्स में एक,
00:08:44और आप “but help” के साथ सभी कमांड्स देख सकते हैं, लगभग इन सभी
00:08:48कमांड्स में “--json” या “-J” का विकल्प होता है।
00:08:52जिसका मतलब है कि आप उन्हें आसानी से स्क्रिप्ट कर सकते हैं, दरअसल दिलचस्प बात यह है कि,
00:08:56आप “diff” कर सकते हैं और यह आपको डिफ का एक तरह का JSON वर्शन देता है,
00:09:00जो मुझे लगता है कि काफी कूल है।
00:09:01तो यह Git Brother का एक अच्छा परिचय है और आप इसमें क्या कर सकते हैं बनाम
00:09:05आप Git में क्या कर सकते हैं। लेकिन फिर से, आप इसे किसी भी Git रिपॉजिटरी में डाल सकते हैं।
00:09:08आप “but set up” चला सकते हैं, आप ये सभी कमांड्स शुरू कर सकते हैं।
00:09:12आप चीज़ों के लिए JSON आउटपुट ले सकते हैं। आप कई ब्रांच मैनेज कर सकते हैं।
00:09:15आप स्टैक्ड ब्रांच मैनेज कर सकते हैं। आप अपना,
00:09:17एक तरह का GitHub इंटीग्रेशन और PR मैनेजमेंट कर सकते हैं।
00:09:20ये सभी चीज़ें बस सीधे शामिल हो जाती हैं, “but” कमांड चलाना शुरू करें और सब ठीक है।
00:09:24जब भी आप Git पर वापस जाना चाहें,
00:09:26भले ही ज़्यादातर Git कमांड इस माहौल में अभी भी काम करते हैं,
00:09:29तो आप बस इसे टीयर डाउन (tear down) कर सकते हैं या किसी ब्रांच को चेकआउट कर सकते हैं और यह
00:09:33आपके लिए सब कुछ साफ कर देगा। तो आज ही इसे आज़माएँ।
00:09:35आप [gitbrother.com/cli](https://www.google.com/search?q=https://gitbrother.com/cli) पर जाकर इसे डाउनलोड कर सकते हैं और इसके साथ खेलना शुरू कर सकते हैं।
00:09:39हमारे डिस्कॉर्ड पर आएँ और मुझे बताएँ कि आपको यह कैसा लगा। शुक्रिया।