विंडोज़ के तहत गिट: MSYS या Cygwin?


80

मैं अपनी परियोजनाओं को परिचालित करने की योजना बना रहा हूं, और मैं वर्तमान में सोच रहा हूं कि खिड़कियों के नीचे सबसे अच्छा और / या सबसे स्थिर विकल्प कौन सा है।

मैं जो इकट्ठा करता हूं उसमें मूल रूप से 2.5 विकल्प होते हैं:

  1. MSYSgit
  2. Cygwin के तहत git
  3. (उर्फ 2.5) एक साइग्विन प्रॉम्प्ट से एमएसवाईएसजीटी (यह देखते हुए कि साइगविन गिट पहले से स्थापित है)।

नोट: IMO Cygwin अपने आप में एक बड़ा प्लस है क्योंकि आपके पास बहुत सारे * nix कमांड लाइन टूल्स तक पहुंच हो सकती है, जहां MSYSgit bash के साथ, आपके पास केवल इन टूल्स के बजाय छोटे सब्सक्रिप्शन तक पहुंच है।

यह देखते हुए कि आप क्या विकल्प सुझाएंगे?

जवाबों:


60

संपादित करें (2 वर्ष बाद: अक्टूबर 2014)

जोहान्स शिंडेलिन ने अभी-अभी (अक्टूबर 2014) समझाया कि एमएससिसिट को चरणबद्ध किया गया है :

अब हमारे पास विंडोज एसडीके के लिए एक लाइट-वेट गिट है - जो अनिवार्य रूप से एक मानक मिनगॉव / एमएसआईएस सिस्टम है जिसे पैकेज मैनेजर मिंगव-गेट के माध्यम से प्रबंधित किया जाता है।

हमने "msysGit" (साथ ही इसी नाम के GitHub org ) नाम को चरणबद्ध करने का फैसला किया और Git for Windows ( इसी GitHub org के साथ) पर काम किया , और इंस्टॉलर के लिए "Git for Windows" नाम का उपयोग किया। "एंड-यूजर्स" और "विंडोज डेवलपर्स के लिए जीआईटी को लक्षित करने वाले पर्यावरण के लिए" विंडोज एसडीके के लिए गिट ")।


संपादित करें (3 साल बाद: अप्रैल 2012)

MsysGit (अब GitHub पर ) जाने का तरीका है यदि आप Git दुनिया में हल्के- फुल्के तेज शुरुआत चाहते हैं: संग्रह को अनज़िप करें, लॉन्च करें git-cmd.batया git-bash.batआप करें।
इसकी नवीनतम रिलीज़ (1.7.10, अप्रैल 2012) में अब यूटीएफ -8 के लिए समर्थन भी शामिल है, इसे GitExtension में भी शामिल किया गया है । हालांकि अपने autocrlfझूठ को सेट करने के लिए मत भूलना ।

यदि आप वास्तव में सभी अन्य यूनिक्स कमांड्स को याद कर रहे हैं जो कि msysgit के साथ पैकेज नहीं है, तो बस GoW (विंडोज पर गन्नू) की एक रिलीज को डाउनलोड करें , जिसे उपयुक्त रूप से " सिग्विन का हल्का विकल्प" नाम दिया गया है।
मेरा मतलब है: 130 यूनिक्स कमांड एस ...

Cygwin को केवल कुछ मामलों के लिए एक बैकअप समाधान होना चाहिए, जैसे कि बड़ी Git रिपॉजिटरी की स्थानांतरण गति , जैसा कि उनके उत्तर में incrementor द्वारा नीचे उल्लेख किया गया है ।


जून 2012: यदि आप GitHub के साथ बातचीत करना चाहते हैं , तो अब आपके पास http://windows.github.com (" विंडोज के लिए डिजाइनिंग GitHub " भी देखें )।
यह न केवल आपके लिए ssh कुंजियों को कॉन्फ़िगर करेगा (और आपके GitHub प्रोफ़ाइल में जनरेट की गई कुंजी को जोड़ेगा), लेकिन यह सभी git ऑपरेशंस के लिए, एक ... MsysGit भी इंस्टॉल करेगा।


मूल उत्तर (अप्रैल 2009)

मुझे MsysGit के नवीनतम संस्करण के साथ कोई समस्या नहीं है:
मैं विकल्प 2 का उपयोग करता हूं , जिसका अर्थ है कि मैं केवल GAT \ bin निर्देशिका को PATH पर्यावरण चर में जोड़ता हूं, लेकिन कुछ अंतर्निहित विंडोज़ टूल को ओवरराइड किए बिना।

मैं नोटपैड ++ और विनमर्ज़ (या डिफमर्ज़) जैसे बाहरी उपकरणों को प्रबंधित करने में कामयाब रहा

मैंने सफलतापूर्वक svn2git जैसी स्क्रिप्ट्स को चलाया क्योंकि, MsysGit1.6.2 + से, इसमें ' git svn' कमांड शामिल है।

और अंत में मैं MsysGit1.6.2.3 के लिए तत्पर हूं, इसके लिए अंत में ' git filter-branch' कमांड शामिल होगा ! (फ़िल्टर-शाखा का एक धीमा संस्करण, लेकिन फिर भी)।

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

तो सब के सब, मैं Cygwin परत का उपयोग नहीं करते हैं, और इसके Windows- आधारित रिलीज़ MsgGit में बहुत अच्छी तरह से चलाने में कामयाब रहे।


मैं p4merge का भी उपयोग करता हूं, जो बहुत अच्छा है। मैंने पढ़ा है कि git & unicode फ़ाइल नामों के साथ समस्याएँ हैं।
बेंजोल

Core.editor सेटिंग प्रश्न से लिंक करने के लिए धन्यवाद। (मैं Notepad ++ उपयोग करने के लिए कमांड लाइन -nosession और -multiInst तरह स्विच के साथ की कोशिश की)
MBX

यह जवाब वास्तव में जवाब नहीं देता है कि एक दूसरे पर एक का उपयोग क्यों करेगा। IMO के नीचे बेहतर उत्तर हैं
सेबस्टियन मार्टिन

@ सबस्टियनमार्टिन आपको उस मामले में ओपी (जॉइस) से इसका उल्लेख करना चाहिए। अन्यथा वह उस बेहतर उत्तर के बारे में सूचित नहीं किया जाएगा जिसका चयन उसे करना चाहिए।
VonC

@SebastienMartin मैंने इस पुराने उत्तर को अधिक वर्तमान जानकारी के साथ अद्यतन किया है।
VonC

15

हाँ। पुराना सवाल। नया उत्तर:

हम एक बड़ी तैनाती में अब लगभग 2 वर्षों से MSYSgit का उपयोग कर रहे हैं। एक स्थानीय गिट रिपॉजिटरी सर्वर से स्थानान्तरण की गति को कम से कम 5 MiB / s तक सीमित किया गया है। इससे पहले कि इस समस्या की जांच में संकेत दिया गया था कि समस्या MSYS devs के साथ थी Windows XP और विंडोज 7 सुरक्षा को कमांड प्रॉम्प्ट / वॉश शेल से कनेक्शन सीमित कर रहा था। ऐसा प्रतीत नहीं होता है, वास्तव में, समस्या।

मैंने डैरेल मोजिंगो के ब्लॉग पोस्टिंग की खोज की और केवल एक Cyvwin इंस्टॉल का उपयोग करके एक बड़े (कई GiB) रेपो के क्लोन का परीक्षण किया। स्थानांतरण गति 30 MiB / s रेंज में थी। समस्या यह है कि MSYSgit 2007 से एक प्राचीन OpenSSH बाइनरी का उपयोग करता है।

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


ऐसा लगता है कि मिनगवे ओपनएसएसएच 5.4 का उपयोग कर रहा है जो 2010 से है
स्टीवन पेनी

9

मैंने git के दोनों MSYS और Cygwin संस्करणों का उपयोग करने के साथ डब किया है, और वास्तव में ईमानदार होने के लिए, मुझे या तो अनुभव अच्छा नहीं लगा। मुझे नहीं लगता कि वास्तव में अभी तक विंडोज़ के लिए गिट तैयार है।

कहा जा रहा है, एक मुद्दा जो मुझे MSYS संस्करण के साथ मिला, वह यह है कि यह आपके (गैर-बाइनरी) फाइलों को UNIX स्टाइल (लाइन-फीड) से DOS स्टाइल (गाड़ी-वापसी / लाइन-फीड) में परिवर्तित कर देगा। आप इसे बग या सुविधा मान सकते हैं, लेकिन मेरे द्वारा खोजे जा सकने वाले व्यवहार को बदलने का कोई तरीका नहीं है। (संपादित करें: कॉन्फ़िगरेशन चर core.autocrlfको सेट करें false। धन्यवाद ब्रायन।)

OTOH, git के MSYS संस्करण में कुछ GUI कार्यक्षमता है जो कि साइबरविन संस्करण में उपलब्ध नहीं है जब तक कि आप पूरे X सर्वर को स्थापित और चलाना नहीं चाहते। (इसकी पुष्टि करने के लिए धन्यवाद जॉस।)

मेरी धारणा यह है कि MSYS संस्करण अधिक लोकप्रिय है, हालांकि ऐसा इसलिए हो सकता है क्योंकि आपको इसका उपयोग करने के लिए एक cygwin पारिस्थितिकी तंत्र स्थापित करने की आवश्यकता नहीं है। (और मैं सहमत हूं, साइबरविन बेहद उपयोगी है।)

व्यक्तिगत रूप से, मैं बाज़ार या मर्क्यूरियल के साथ जाऊंगा , जिनमें से किसी को भी विंडोज़ आईएमओ के लिए बेहतर समर्थन है।


3
बाज़ार विंडोज पर Git के सवाल का मेरा समाधान भी था। हे।
इंस्टा हंटर

9
आप समाप्त होने वाले अनुवाद को बंद कर सकते हैं। आपको केवल झूठी करने के लिए core.autocrlf सेट करना होगा।
ब्रायन कैंपबेल

1
वर्तमान में हम DCVS की पसंद के लिए हमारे विकल्पों की जाँच कर रहे हैं। मर्क्यूरियल सूची में है। हालांकि, ब्रांचिंग की लागत, विशेष रूप से बहुत बड़ी परियोजनाओं के लिए, काफी टर्न ऑफ है। साइगविन डिस्ट एक जीयूआई फ्रंट-एंड (एक एक्स सर्वर चलाने की लागत पर) के साथ आता है। हालाँकि, मुझे पूरी तरह से यकीन नहीं है कि यह कितना मूल्य जोड़ता है।
जॉइस

3
मैं msys संस्करण का उपयोग कर रहा हूं, और किसी भी समस्या का सामना नहीं कर रहा हूं।
इक्के २४'०

2
मुझे लगता है कि msys का नवीनतम संस्करण आपको यह कॉन्फ़िगर करने के लिए कहता है कि जब आप इसे स्थापित करते हैं तो लाइन अंत कैसे नियंत्रित किए जाते हैं।
केन लियू

7

Cygwin और Msys Git दोनों सामान्य उपयोग के मामलों के लिए काफी अच्छी तरह से काम करते हैं। यदि आप git-svn जैसी स्क्रिप्ट का उपयोग करना चाहते हैं, तो Cygwin एक बेहतर शर्त है। पुराने विंडोज उपयोगकर्ताओं के रूप में, जिन्होंने अंततः जहाज को लिनक्स में जकड़ लिया था, मैं निश्चित रूप से कह सकता हूं कि साइगविन एक महान वरदान है और अपने आप में होने के लायक है।

प्रसंग हालांकि महत्वपूर्ण है; क्या परियोजनाएं हैं? वे किसके द्वारा उपयोग किए जाते हैं? आदि।


2
हम एक छोटी सी टीम (~ 10 progs) द्वारा विकसित एक बड़ी परियोजना (32K + स्रोत फ़ाइलें) के बारे में बात कर रहे हैं। उनमें से सभी कुशल डब्ल्यू / * निक्स पर्यावरण नहीं हैं, लेकिन दिन के उपयोग के लिए गिट की सादगी आशाजनक दिखती है। हम बहुत सारे ब्रांचिंग का उपयोग करने की भी योजना बनाते हैं जैसे कि एक पी 4 चेंजलिस्ट <=> एक गिट ब्रांच। अकेले उस कारण से, उदाहरण के लिए gg Hg की तुलना में अधिक दिलचस्प है। साइगविन बनाम एमएसवाईएस में मेरा डर यह है कि साइगविन संस्करण एमएसवाईएस एक के बराबर नहीं है।
जॉइस

6

मैंने दोनों दुनियाओं (साइगविन और एमएससिट्ज) का भी परीक्षण किया है, मेरे अनुभव यह भी है कि एमएससिट्ज बैश में कुछ कमियां हैं। गाइट स्टैश को लगातार चलाने में असमर्थ है जबकि सिग्विन ने इसे उसी गिट रेपो पर इनायत से संभाला।

कोई गहन विश्लेषण अभी तक नहीं किया गया है, हालांकि ...


4

मैं वर्तमान में TortoiseGit के साथ Msysgit का उपयोग करता हूं।

MsysGit UI वास्तव में मेरी पसंद के हिसाब से नहीं है, इसलिए मैं TortoiseGit जैसे परिचित उपकरण का उपयोग करता हूं और जब कमांडलाइन पर काम कर रहा होता है (ज्यादातर समय), मैं Msysgit से git बाइनरी का उपयोग करता हूं


3

मैं msysgit पुनः आरंभ करेंगे। विशेष रूप से यदि इसका उपयोग Git एक्सटेंशन के साथ किया जाता है : यह पर्यावरण को कॉन्फ़िगर करने का आसान तरीका प्रदान करता है: संपादक / भिन्न / मर्ज उपकरण, और उपयोगकर्ता इंटरफ़ेस से उन्नत गिट संचालन करने की अनुमति देता है।


1

मैं MSys के साइबर कार्यान्वयन में गंभीर कीड़े में चला गया हूं: कुछ कमांड, विशेष रूप से रिबास, विफलता के लिए काफी प्रवण थे। साइगविन मेरे लिए बहुत अधिक स्थिर था।

कहा कि, यह एक महीने पहले था, तब से सुधार हो सकता है।


3
"MSys के साइबरविन"? क्या आपका मतलब MSys के Git से नहीं है?
जॉइस

2
@ एलेक्स गोनमाखेर शायद यह अधिक स्थिर है, लेकिन यह धीमी गति से मृत्यु भी है। इस पोस्ट को देखें: stackoverflow.com/questions/6724471/…
WinWin

1

मैंने विंडोज के साथ Cygwin Git और Msysgit दोनों का उपयोग किया है। मैं Cygwin + Git का उपयोग करने का सुझाव दूंगा। Cygwin 1.7 (वर्तमान में बीटा में) git gui और gitk का उपयोग करते समय एक प्रमुख बारीकियों (कम से कम मेरे लिए) को संबोधित करता है। Cygwin के पहले के संस्करण हर बार जब मैं git-gui या gitk में कुछ करता हूँ तो 10s cmd विंडो खोलता था। यह 1.7 में संबोधित किया गया है। साइग्विन का शक्तिशाली खोल, लीनक्स टर्मिनल की खूबियों को भी सामने लाता है।

उस ने कहा, Msysgit काफी विकसित हो गया है और विंडोज में वास्तव में उपयोगी है। हालांकि मुझे कुछ मुद्दों का सामना करना पड़ा।

अनुमति का मुद्दा: विंडोज़ में मूल रूप से बनाई गई कुछ फ़ाइलों में मोड 755 था जो मिसिसिट का उपयोग करते हुए 644 में परिवर्तित हो गया। यह संशोधित फ़ाइलों के रूप में दिखाई देगा। एक चेकइन को इस समस्या को ठीक करना चाहिए।

CRLF: सभी मायावी CRLF हमेशा की तरह विंडोज में समस्याएँ पैदा करते हैं। Msysgit संशोधित रूप में फ़ाइलों की रिपोर्ट कर सकता है। Msysgit स्थापित करते समय "अपरिवर्तित छोड़ें" (सटीक पाठ को भूल जाएं) का चयन करके इसे ठीक किया जा सकता है।

डेमॉन: और हाँ, मैं अभी भी यह मुश्किल मिलिटॉन में git डेमन को सेटअप करने के लिए पा रहा हूँ।


1

एक पुराने सवाल का नया जवाब ...

मैं विंडोज 7 cmd शेल से git 1.7.3 का उपयोग कर रहा हूं, और यह बहुत अच्छा काम करता है। मैं git कमांड लाइन और git gui के मिश्रण का उपयोग करता हूं, और दोनों महीनों से ठीक काम कर रहे हैं। जब हम मैक डेवलपर्स को टीम में शामिल करते हैं, तो हमारे पास कैरिज रिटर्न / लाइन फीड मुद्दे होते थे, लेकिन इनका समाधान किया जाता था ...

core.autocrlf=true
core.safecrlf=false

यह कहते हुए कि आपको * nix-y शेल का उपयोग नहीं करना चाहिए, बस यह आवश्यक नहीं है।


0

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

बात यह है, अगर मैं कभी कमांड लाइन की तरह * निक्स के साथ काम करना चाहता हूं, तो मैं अपने लिनक्स मशीन पर जाऊंगा और इसके बजाय उस कंप्यूटर पर काम करूंगा। वर्चुअल कंप्यूटर और रिमोट डेस्कटॉप आजकल आकर्षण की तरह काम करते हैं और डेवलपर्स के लिए पर्याप्त सुलभ हैं।

वास्तव में आपके लिए CygWin का उपयोग करने का एक वैध कारण होना चाहिए। अगर यह सिर्फ git का उपयोग करने के लिए है तो मैं आपको MSysGit का उपयोग करने का सुझाव दूंगा मेरी पसंद के बजाय । यह वास्तव में अच्छी तरह से gitk और git-gui टूल के साथ काम करता है जो बंडल हैं। मैं एक्लिप्स और विजुअल स्टूडियो दोनों पर काम कर रहा हूं, जिसमें msysgit का उपयोग किया गया है और यह एक आकर्षण की तरह काम करता है।

केवल एक चीज जो मैं अभी इंतजार कर रहा हूं वह गिट के लिए पूरी तरह से काम करने वाला कछुआ क्लोन है


और यह कम से कम 3/13/17 के रूप में प्रकट होता है Cygwin 2.8.3 git पर है और अद्यतन करते समय मेरे पास कुछ पर्ल मुद्दे थे। Git Bash MINGW 2.12 पर है।
मार्क

0

वहाँ Windows के तहत एक परिदृश्य में जहाँ आप बस है है Cygwin के माध्यम से Git उपयोग करने के लिए: यह तब होता है जब आप एक SVN सर्वर है, जो 1.5 से SVN ग्राहक संस्करणों उच्च उम्मीद के खिलाफ Git उपयोग करना चाहते हैं। एसवीएन पूर्व-प्रतिबद्ध हुक मौजूद हैं, जो तब ब्लॉक करता है जब कोई 'मर्जिनफो' तर्क नहीं होता है - और केवल 1.5 संस्करण के बाद से एसवीएन में 'मर्जिनफो' तर्क डिफ़ॉल्ट है। MsysGit के साथ समस्या यह है कि यह एक पुराने SVN संस्करण (1.4.6) के खिलाफ है, इसलिए आप इस मामले में सफलतापूर्वक प्रतिबद्ध नहीं हो सकते। लेकिन यह सिग्विन के गिट के साथ संभव है, क्योंकि यह नए एसवीएन संस्करणों के खिलाफ बना है।


0

यदि आप बस पुश / पुल / ब्रांचिंग जैसी सरल क्रिया करना चाहते हैं तो आप एटलसियन से सोर्सट्री आज़मा सकते हैं। Git कमांड के लिए एक बहुत ही सरल और स्पष्ट यूआई। हालांकि यह कम आ रहा है।

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

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