जब GitHub के लिए GUI ऐप हैं तो git क्यों सीखें?


84

यह देखते हुए कि GitHub मैक और विंडोज दोनों के लिए GUI ऐप प्रदान करता है, कमांड लाइन से गिट का उपयोग करने के लिए सीखने के क्या लाभ हैं?

वर्तमान में मैं अपने रिपॉजिटरी को अपडेट करने के लिए उनके मैक ऐप का उपयोग कर रहा हूं, और अब तक यह मेरी जरूरतों को कवर करता है। मुझे क्या याद आ रही है?


15
लिनक्स के लिए एक gui है जो gitk मत भूलना।
DeveloperDon

14
आपको सारी स्क्रिप्टिंग याद आ रही है।
एसके-तर्क 14

3
@ केचलौक्स, हां, एक बहुत अच्छा कारण है कि अधिकांश जीयूआई ऐप बिल्कुल स्क्रिप्ट योग्य नहीं हैं। और जो स्क्रिप्ट करने योग्य हैं वे केवल भयानक हैं (लगता है कि कॉम और इसी तरह के घृणित हैं)।
एसके-लॉजिक

2
@ केचलौक्स, कोई कारण नहीं एक गुणवत्ता है। शुद्ध GUI एप्लिकेशन को स्क्रिप्ट योग्य बनाना वास्तव में कठिन है। मेरे द्वारा ज्ञात सभी उचित दृष्टिकोण, मूल रूप से, कमांड लाइन इंटरफ़ेस के कुछ रूप को शुरू करने पर बनाए गए हैं - या तो यूनिक्स-शैली सीएलआई, या पाठ-आधारित कमांड भाषा, या कुछ बाइनरी प्रोटोकॉल जो अनिवार्य रूप से कमांड भाषा के समान ही है। , COM देखें। लेकिन, सबसे अच्छा दृष्टिकोण, निश्चित रूप से, एक सामान्य कोर है जो दोनों विभिन्न सीएलआई उपकरणों के माध्यम से और जीयूआई से सुलभ है। उत्तरार्द्ध को सरलता के लिए सीएलआई पर भी बनाया जा सकता है।
एसके-तर्क

13
तुम नहीं। उसी तरह आपको HTML / CSS सीखने की आवश्यकता नहीं है क्योंकि Dreamweaver और FrontPage (या अब जो भी है) मौजूद है। हो सकता है कि यह आपके लिए कुछ चीजों के लिए काम करे, लेकिन जब यह कोई बेहतर नहीं जानता है कि यह वास्तव में कैसे काम करता है।
DorkRawk

जवाबों:


116

मुझे लगता है कि यह सवाल "मुझे किसी भी सीएलआई को क्यों सीखना चाहिए जिसके लिए एक जीयूआई विकल्प मौजूद है?" मुझे संदेह है कि बाद वाला प्रश्न GUI के रूप में पुराना है, और मुझे लगता है कि वर्षों में इसका उत्तर देने के कई प्रयास थे। मैं इस प्रश्न के अपने स्वयं के उत्तर के माध्यम से अपने तरीके से उकसाने की कोशिश कर सकता था, लेकिन नील स्टीफेंसन ने स्पष्ट किया कि मैं दस साल से भी अधिक समय पहले उनके अंतिम निबंध 'द बिगिनिंग ' के रूप में सहमत हूं, जो कि उनके शुरुआती निबंध ... द कमांड लाइन में था

जबकि निबंध कंप्यूटिंग के कई पहलुओं को छूता है, और जबकि स्टीफनसन खुद भी सोचते हैं कि इसका बहुत कुछ अब अप्रचलित है, निबंध बताता है कि सीएलआई किस तरह से एक बेहद सम्मोहक तरीके से बेहतर जीयूआई हैं जो सचमुच मेरे जीवन को बदल दिया। यह एक लंबा पढ़ा (~ 40 पृष्ठ) है, लेकिन मैं इसे किसी से भी अनुशंसित नहीं कर सकता, जो आपके यहां पूछे गए प्रश्नों की तरह है।

अंत में, हालांकि मैं किसी भी सीएलआई बनाम जीयूआई तरह के सवाल का एक ही तरह से जवाब दूंगा, मुझे लगता है कि मेरा उत्तर आपके विशिष्ट प्रश्न के लिए विशेष रूप से सच है क्योंकि आपके द्वारा चुने गए सभी कंप्यूटर चीजों के बारे में gitgitयकीनन नवीनतम उपकरण कंप्यूटर उपकरणों की एक लंबी-लंबी सूची में है जो वास्तव में स्टीफन-हॉफ रूपक के योग्य हैं जैसा कि स्टीफनसन के निबंध में वर्णित है। git, कई अन्य यूनिक्स-ईश चीजों की तरह, अपने आप में सीएलआई को जानने का एक कारण है। कभी-कभी इसके अनियमित 'पोर्सिलेन' के बावजूद ; कभी-कभी इसकी वजह से।

तो हाँ, आप निश्चित रूप से जीआईटीयू के जीयूआई के साथ उत्पादक हो सकते हैं, या तो ओएसएक्स के लिए या यहां तक ​​कि उनकी वेबसाइट पर भी। हां, यह वास्तव में काफी चिकना है, मैं अक्सर साइट की विशेषताओं का उपयोग करता हूं। लेकिन नहीं, आपको कभी ऐसा नहीं लगेगा कि ईश्वरीय भावना महसूस कर रही है कि आपका दाहिना पिंकी git filter-branchएक चींटी या दो के लिए एक पागल कमान के ऊपर लटका हुआ है । अगर मुझे कंप्यूटिंग के साथ अपने अनुभव से सिर्फ एक ही बात रखनी है - मानसिक चुनौतियां, 2AM में डेटकेंटर में बनाई गई घनिष्ठ मित्रता, चढ़ाई करने की क्षमता की अनंत सीढ़ी, उपयोगकर्ताओं के जीवन को छूना और कीमती डेटा के पीबी पर शासन करना, गद्दी नौकरी और आरामदायक जीवन - बस एक ही बात रखें - यह ईश्वरीय भावना होगी।


5
शुरुआत में अधिक सुलभ लिंक ... क्या कमांड लाइन थी: pauillac.inria.fr/~weis/info/commandline.html
एलियास ज़मरिया

1
पुन :: अप्रचलित: कि "BeOS के रूप में बैटमोबाइल" भाग होगा, है ना?
n

2
गैरेट बिर्केल ने नील स्टीफेंसन के मूल निबंध के साथ अपनी टिप्पणियों को इंटरसेप्ट करके "इन द बिगिनिंग ... द कमांड लाइन" निबंध को अपडेट किया है। आप इसके बारे में यहां पढ़ सकते हैं ।
मैं

2
... हाँ, जब आपको Visual Basic का उपयोग करके GUI इंटरफ़ेस बनाने के लिए CLI की आवश्यकता होती है। IP पते पर नज़र रखने जैसी चीज़ों के लिए बढ़िया है।
अरे

3
मैं 'पुराने बेहतर है' का सुझाव नहीं दे रहा था, मैं सुझाव दे रहा था कि सीएलआई (कई हैकर usecases के लिए) GUIs से बेहतर हैं। सीएलआई बाइनरी स्विच और पैच डोरियों से भी बेहतर हैं। यही कारण है कि मैं सीएलआई का उपयोग करता हूं। यह लेख "सबूत" नहीं है क्योंकि यह "एक लेख में" है, यह उन तर्कों के साथ गद्य है जो कि मैं सीएलआई के बारे में पसंद करता हूं। यह पुराना है, लेकिन इतना UNIX है, तो क्या है। वैसे, मैं Google के लिए काम करता हूं, और मेरे आसपास के अधिकांश डेवलपर्स सीएलआई आधारित विकास वातावरण का उपयोग करते हैं (लेकिन मैं संपूर्ण रूप से Google के लिए बात नहीं कर सकता)।
यानिव अकिन

108

यदि आपकी सभी ज़रूरतें पूरी हो गई हैं, तो भयानक, किसी भी तरह की गहराई तक खुदाई करने की आवश्यकता नहीं है, आपका समय बेहतर होगा कि आप वास्तव में जिस चीज़ की ज़रूरत है उसे सीखने में खर्च करें।

गिट सिर्फ एक उपकरण है, जब आपको कुछ ऐसा करने की आवश्यकता होगी जो आप जीयूआई ऐप के साथ नहीं कर सकते हैं, तो आपको यह पता चल जाएगा। बस ध्यान रखें कि गिटहब! = गिट।


1
मैं आपसे सहमत हूं, लेकिन ऐसी चीजें हो सकती हैं जो मैं वर्तमान में नहीं जानता हूं, अगर मैं उनके बारे में जानता हूं तो यह मेरे लिए उपयोगी हो सकता है। नहीं?
हिस्टेलिम

28
@ एरोनइंडबर्ग हाँ, शायद हैं। लेकिन आप गलत सवाल पूछ रहे हैं, आपको जांच में जो समय बिताना चाहिए वह गिट की वर्कफ्लो और अवधारणा है, न कि यह कमांड लाइन है। यहां तक ​​कि अगर कोई आपको सभी कार्यक्षमता की सूची देता है तो जीयूआई एप्लिकेशन गायब हैं, तो आपको कैसे पता चलेगा कि आपको वास्तव में इसकी आवश्यकता है? (यह भी कुछ है जो आप बहुत आसानी से खुद कर सकते हैं, सिर्फ गिट के दस्तावेज को देखकर)
यानिस

//, एक सीएलआई आपको वर्कफ़्लोज़ और अवधारणाओं के बारे में थोड़ा और सोचने के लिए मजबूर करेगा, क्योंकि संगठन के सभी विकल्प, विकल्प और प्रवाह आपके सिर में होंगे, विजार्ड्स और ड्रॉप-डाउन मेनू में नहीं।
नाथन बसानी 21

57

सीएलआई-ओनली फीचर्स केवल तब ही चलन में आते हैं जब आप गलती से अपनी रिपॉजिटरी को एक अजीब स्थिति में ले आते हैं और इसे ठीक करना चाहते हैं। दूसरी ओर, एक अजीब स्थिति में अपने रेपो को प्राप्त करने का सबसे आम तरीका उन्नत सुविधाओं का उपयोग करना है जिन्हें आप नहीं समझते हैं। यदि आप GUI को जो प्रदान करते हैं उससे चिपके रहते हैं, तो यह आपकी आवश्यकताओं को 99% समय तक कवर करेगा।

सीएलआई सीखने का दूसरा कारण यह हो सकता है कि यह git की भाषा है। इसका मतलब है कि जबकि बहुत से लोग विभिन्न प्लेटफार्मों पर विभिन्न GUI का उपयोग करते हैं, यदि आप StackOverflow या अन्य जगहों पर मदद मांगते हैं, तो उत्तर CLI कमांड के रूप में आने की संभावना है। यदि आप सीएलआई को नहीं जानते हैं, तो सहायता प्राप्त करने के लिए आपके विकल्प बहुत अधिक सीमित होने जा रहे हैं।


यहाँ निश्चित रूप से सबसे अच्छा जवाब। ब्लाह-ब्लाह-दर्शन नहीं।
जॉन सीजे

//, यह मेरा पहला विचार था, और हालांकि दार्शनिक उत्तर मुझे अपील करते थे, प्राथमिक कारण मैं सीएलआई का उपयोग करता हूं, क्योंकि वे पाठ के बारे में दूसरों के बारे में तर्क करना, मानकीकरण करना और संवाद करना बहुत आसान हैं। हम सब नहीं जानते कि कैसे आकर्षित किया जाए, लेकिन हम सभी जानते हैं कि कैसे टाइप करना है।
नाथन बसानी 21

9

GUI अनुप्रयोग जटिल व्यवहार करने के लिए मैन्युअल इंटरैक्शन पर निर्भर करते हैं। यह परियोजनाओं की स्थापना और नई चीजों को विकसित करने के लिए बहुत अच्छा है।

एक कमांड-लाइन इंटरफेस (सीएलआई) के लाभ पूर्वनिर्धारित स्क्रिप्ट बनाने की क्षमता से आते हैं जिन्हें स्वचालित किया जा सकता है। सभी गिटहब का GUI है, कुछ अच्छे ग्राफिक्स और फैंसी बटन हैं जो गिट CLI कहते हैं।

GUI ऐप आपके लिए क्या नहीं करेगा स्वचालित रूप से 1:30 पूर्वाह्न पर एक सर्वर पर एक रेपो ट्रंक को स्वचालित रूप से अपडेट किया जाता है, लेकिन क्रिट जॉब जिसे गिट सीएलआई कहते हैं, यह सेट करने का एक बहुत आसान तरीका है।

इसके अतिरिक्त, जब टीम में किसी प्रोजेक्ट पर काम करते हैं, तो स्क्रिप्ट स्थापित करना, स्क्रिप्ट बनाना, स्क्रिप्ट तैनात करना और इस तरह से काम करना सुविधाजनक होता है ताकि टीम के साथी थकाऊ दोहराव वाले कार्यों के बजाय समस्याओं को हल करने पर ध्यान केंद्रित कर सकें।


सूँ ढ? मुझे लगता है कि आप मास्टर मतलब है।
jpmc26

@ jpmc26, मैंने इसे तब लिखा था जब मैं SVN से आने वाली नई थी, शब्दावली को क्षमा करें।
zzzzBov

6

एक और कारण है कि सीएलआई बेहतर हो सकता है वर्कफ़्लो का मामला है। कई रूपरेखाओं को कमांड लाइन के माध्यम से प्रबंधित किया जाता है। सीएलआई के माध्यम से गिट का उपयोग करके मुझे अपनी परियोजना और उस परियोजना निर्देशिका पर ध्यान केंद्रित करने दें। उदाहरण के लिए, मैं एक परीक्षण चला सकता हूं और फिर एक ही इंटरफ़ेस और स्थान से सभी नए बदलाव करने का निर्णय ले सकता हूं।


+1; और इसका उपयोग करना जितना आसान / अधिक सुलभ है, उतना ही संभव है कि मैं इसका इस्तेमाल तब करूं जब उचित समय पर (टैप टैप गिट कमिट टैप टैप टैप) के बजाय (टैप टैप लॉन्च GUI git कमिट 'वीक कमिट का अंत')
अबे

5

मुझे हाल ही में एसवीएन-टू-गिट माइग्रेशन में मदद करने में सक्षम होने के लिए वास्तव में गिट में खुदाई करनी है। और मैंने जो चीज सीखी वह यह है कि Git कमांड लाइन टूल सीखने के लिए जटिल हिस्सा नहीं है।

Git के पीछे की अवधारणाएं और विचार जटिल हिस्सा हैं (और ऐसा इसलिए नहीं है क्योंकि वे बुरी तरह से डिज़ाइन किए गए हैं, बल्कि सिर्फ इसलिए कि वे ज्यादातर उन लोगों के लिए विदेशी हैं जो कुछ अन्य, केंद्रीकृत VCS से आते हैं)।

एक बार जब मैंने अवधारणाओं को पकड़ लिया, तो वास्तविक कमांड लाइन स्टेटमेंट अपेक्षाकृत आसान हो गए। इसका मतलब है कि यूआई वास्तव में Git (सरलतम संचालन को छोड़कर) को समझने में मदद नहीं करता है ।


3
दरअसल, पीछे की अवधारणाएं gitइतनी सरल हैं कि लोग उन्हें समझ नहीं सकते हैं - वे कुछ कठिन देख रहे हैं।
गहुआ

4

सीएलआई को जानना उस समय काम आता है जब (यदि नहीं) तो आप कुछ ऐसे वातावरण में हैं जहां आपको जीयूआई ऐप नहीं मिल सकता है।

एक संभावित परिदृश्य: आपको एक बंद स्थान पर एक परियोजना में सिर्फ कुछ दिनों के लिए मदद करने के लिए कहा जाता है, जहां सिस्टम में नए उपकरण प्राप्त करने के लिए यह कठिन और लंबा है। वे केवल सीएलआई का उपयोग करते हैं। आपकी उत्पादकता सिर्फ एक हिट हुई क्योंकि आपको फिर से सब कुछ सीखने की जरूरत है।


एक वाक्य के उत्तर शायद ही कभी बहुत अधिक मूल्य प्रदान करते हैं। क्या आप अपने जवाब पर विस्तार कर सकते हैं?
वाल्टर

//, वह @grumpasaurus है। आपको क्या उम्मीद थी, एक गाथा?
नाथन बसानी 22

2

कमांड-लाइन गिट सीखने का एक कारण यह है कि अधिकांश प्रलेखन उस वातावरण के लिए लिखे गए हैं। इसके अलावा, यदि आप एक प्रश्न पूछते हैं: "मैं एक्स को गिट के साथ कैसे करूं?", संभावना है कि उत्तर में कमांड-लाइन कमांड होंगे।


1

GUI बनाम कमांड लाइन का उपयोग करने के साथ मुख्य समस्याओं में से एक यह है कि आप ज्यादातर मामलों में अपनी प्रक्रिया पर एक ही नियंत्रण रखने में असमर्थ हैं। उदाहरण के लिए, GitHub एप्लिकेशन बहुत सारे गिट वर्कफ्लो के लिए प्रयोज्य के मामले में महान है, लेकिन उन्नत गिट प्रक्रियाओं के लिए अभी भी बोझिल हो सकता है।

एक उदाहरण के रूप में, यहां कुछ चीजें हैं जो मुझे समझ नहीं आई हैं कि गीथहब एप्लिकेशन का उपयोग कैसे करें (एक और बात ध्यान दें कि प्रत्येक जीयूआई में सीखने की अवस्था भी है)।

  • रिबासिंग करता है
  • व्यक्तिगत रूप से पुश / खींचो / प्राप्त करें (GitHub में उन्हें एक एकल "सिंक" कमांड में वर्गीकृत किया गया है जो कुछ समय के लिए समस्या पैदा कर सकता है)
  • संशोधन करना

अंत में, सीएलआई उपयोगकर्ताओं को स्क्रिप्टिंग के समय इन उपकरणों का उपयोग करने की अनुमति देता है।


अंतिम बिंदु मेरे लिए काफी महत्वपूर्ण है। स्क्रिप्ट्स, टूल्स और सर्वर का निर्माण शायद ही कभी कोई एक gui एक्सेस वर्जन कंट्रोल करने के लिए एक gui का उपयोग करने के लिए हो। इसके बजाय कमांड लाइन का उपयोग करना चाहिए।

0

मुझे मैक के लिए गिटहब के बारे में नहीं पता है, लेकिन विंडोज ऐप केवल सबसे आम कार्य करता है - ऐड, कमिट, पुश, पुल आदि। अधिक जटिल कार्य जैसे git merge --no-ffकमांड लाइन से किया जाना है।

जीयूआई उपलब्ध नहीं होने पर जीआईटी के साथ ऐसे मामले भी होते हैं, जैसे जब दूरस्थ सर्वर में एसएसएचिंग।

लेकिन अन्यथा, अगर GUI आपको वह सब कुछ देता है जो आपको चाहिए तो कमांड लाइन सीखना समय की बर्बादी हो सकती है। मेरा काम विंडोज-केवल वातावरण में TortoiseSVN का उपयोग करता है, और मुझे एक बार भी SVN कमांड लाइन को नहीं छूना पड़ा है।


0

मैंने सिर्फ एक मामला सीखा है जिसमें सीएलआई जीयूआई से बेहतर हो सकता है। इसे समझने के लिए, मैंने एक पुस्तक git - सभी के लिए संस्करण नियंत्रण से एक उदाहरण लिया।

जब आप एक इंट्रानेट पर साझा करना चाहते हैं, तो आप उपयोग कर सकते हैं:

  1. Gitolite सर्वर
  2. नंगे रिपोजिटरी के साथ सामान्य शेयर निर्देशिका

एक नंगे रेपो बनाने के चरणों को देखें।

सीएलआई मोड में एक नंगे भंडार का निर्माण

एक नंगे रिपॉजिटरी बनाने का कमांड वही होगा जो आप --bare पैरामीटर को छोड़कर एक रिपॉजिटरी को क्लोन करने के लिए इस्तेमाल करते हैं, जो सभी अंतर बनाता है। git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench अपने कंसोल में पूर्ववर्ती कोड को निष्पादित करने से आपके सामान्य साझा फ़ोल्डर में हमारे कार्यक्षेत्र रिपॉजिटरी का एक नंगे क्लोन जेनेरिक_शेयर बनाया जाना चाहिए।

GUI मोड में एक नंगे भंडार का निर्माण

GUI का उपयोग करके पहले से मौजूद रिपॉजिटरी से एक नंगे क्लोन बनाना एक आसान प्रक्रिया है। आपको बस इतना करना है:

  1. मौजूदा रिपॉजिटरी से .गित निर्देशिका को कॉपी करें और रिपॉजिटरी के बाहर एक अलग_नाम.गीत (जो भी नाम आप अपने नए नंगे भंडार को देना चाहते हैं) के साथ पेस्ट करें। हमारे मामले में हमारे पास C: \ Users \ raviepic3 \ Desktop \ पर वर्कबेंच नामक एक नंगे रेपो है जिसके अंदर हमारे पास content.docx है। और अब मैं GUI का उपयोग करके एक नया नंगे भंडार बनाना चाहता हूं। मैं C: \ Users \ raviepic3 \ Desktop \ Workbench.it की प्रतिलिपि बनाकर C: \ generic_share \ Bare_Workbench.git के रूप में पेस्ट करूँगा।

  2. config fileएक टेक्स्ट एडिटर के साथ Bare_Workbench.git के अंदर खोलें और उस रेखा को खोजें जो bare = falseसच के साथ स्ट्रिंग को बदल देती है।

  3. सुरषित और बहार।

GUI में, आपको बहुत सारे क्लिक करने होंगे और याद रखना होगा कि किस फाइल को एडिट करना है। सीएलआई में, एक साधारण कमांड यह सब आपके लिए करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.