शुरुआती के लिए गिट: निश्चित व्यावहारिक गाइड


854

ठीक है, PJ Hyett द्वारा इस पोस्ट को देखने के बाद , मैंने अंत तक छोड़ने और Git के साथ जाने का फैसला किया है ।

इसलिए मुझे जो चाहिए वह है एक शुरुआती प्रैक्टिकल गाइड टू गिट। "बिगिनर" को किसी ऐसे व्यक्ति के रूप में परिभाषित किया जा रहा है जो जानता है कि अपने संकलक को कैसे संभालना है, कुछ स्तर को समझता है कि एक मेकफाइल क्या है, और इसे बहुत अच्छी तरह से समझे बिना स्रोत नियंत्रण को छू लिया है।

"प्रैक्टिकल" को इस व्यक्ति के रूप में परिभाषित किया जा रहा है जो बैकग्राउंड में Git क्या कर रहा है, इस बारे में बहुत विस्तार से नहीं जानना चाहता है, और यह भी ध्यान नहीं देता (या पता है) कि यह वितरित है। आपके उत्तर संभावनाओं पर इशारा कर सकते हैं, लेकिन शुरुआत करने वाले के लिए एक 'मुख्य' रिपॉजिटरी को 'सर्वर' पर रखना चाहते हैं, जो कि बैकअप और सुरक्षित है, और अपने स्थानीय रिपॉजिटरी को केवल 'क्लाइंट' संसाधन के रूप में व्यवहार करना चाहते हैं।

इसलिए:

स्थापना / सेटअप

कोड के साथ काम करना

टैगिंग, ब्रांचिंग, रिलीज़, बेसलाइन

अन्य

  • एक अच्छे GUI, IDE प्लगइन इत्यादि का वर्णन और लिंक करें, जो Git को एक गैर-कमांड लाइन संसाधन बनाता है, लेकिन कृपया इसकी सीमाओं के साथ-साथ इसके अच्छे को भी सूचीबद्ध करें।
    • एमएसटीजिट - क्रॉस प्लेटफॉर्म, जिसमें गिट के साथ शामिल है
    • gitk - Git के साथ शामिल क्रॉस प्लेटफ़ॉर्म इतिहास दर्शक
    • gitnub - मैक ओएस एक्स
    • gitx - Mac OS X इतिहास दर्शक
    • smartgit - क्रॉस प्लेटफॉर्म, वाणिज्यिक, बीटा
    • tig - लिनक्स के लिए GUI कंसोल
    • क्विट - विंडोज, लिनक्स के लिए जीयूआई
    • Git एक्सटेंशन - विंडोज के लिए पैकेज, दोस्ताना GUI शामिल हैं
  • किसी भी अन्य सामान्य कार्यों की शुरुआत करनी चाहिए?
  • मैं अपने स्रोत नियंत्रण स्रोत के रूप में एक तोड़फोड़ भंडार के साथ प्रभावी ढंग से कैसे काम करूं?

अन्य गिट शुरुआत के संदर्भ

जीआईटी में पहुंचना

मैं समय-समय पर प्रविष्टियों के माध्यम से जाऊंगा और उन्हें 'साफ' कर दूंगा ताकि उनके पास एक सुसंगत रूप / अनुभव हो और सूची को स्कैन करना आसान हो - एक सरल "हेडर का पालन करने के लिए स्वतंत्र महसूस करें - संक्षिप्त विवरण - निर्देशों की सूची - गोच अतिरिक्त जानकारी "टेम्पलेट। मैं ऊपर दी गई बुलेट सूची से प्रविष्टियों को भी लिंक करूंगा ताकि बाद में उन्हें ढूंढना आसान हो।

जवाबों:


118

आप एक नया प्रोजेक्ट / रिपॉजिटरी कैसे बनाते हैं?

एक गिट रिपॉजिटरी केवल एक निर्देशिका है जिसमें एक विशेष .gitनिर्देशिका होती है।

यह "केंद्रीकृत" संस्करण-नियंत्रण प्रणालियों (जैसे तोड़फोड़) से अलग है, जहां एक "रिपॉजिटरी" को दूरस्थ सर्वर पर होस्ट किया जाता है, जिसे आप checkout"वर्किंग कॉपी" निर्देशिका में रखते हैं। Git के साथ, अपने काम कर प्रतिलिपि है भंडार।

बस git initउस निर्देशिका में चलाएं जिसमें वे फ़ाइलें हैं जिन्हें आप ट्रैक करना चाहते हैं।

उदाहरण के लिए,

cd ~/code/project001/
git init

यह .gitवर्तमान निर्देशिका में एक (छिपा हुआ) फ़ोल्डर बनाता है ।

एक नया प्रोजेक्ट बनाने के लिए, git initएक अतिरिक्त तर्क के साथ चलाएं (बनाई जाने वाली निर्देशिका का नाम):

git init project002

(This is equivalent to: mkdir project002 && cd project002 && git init)

यह जांचने के लिए कि क्या वर्तमान करंट रास्ता एक git रिपॉजिटरी के भीतर है, बस चलाएं git status- यदि यह रिपॉजिटरी नहीं है, तो यह "घातक: नहीं git रिपॉजिटरी" रिपोर्ट करेगा

आप .gitनिर्देशिका को सूचीबद्ध भी कर सकते हैं , और जाँच सकते हैं कि इसमें निम्न के समान फ़ाइलें / निर्देशिकाएँ हैं:

$ ls .git
HEAD         config       hooks/       objects/
branches/    description  info/        refs/

यदि किसी भी कारण से आप एक भंडार को "डी-गिट" करना चाहते हैं (आप उस परियोजना को ट्रैक करने के लिए गिट का उपयोग बंद करना चाहते हैं)। बस .gitरिपॉजिटरी के आधार स्तर पर निर्देशिका को हटा दें ।

cd ~/code/project001/
rm -rf .git/

सावधानी: यह सभी संशोधन इतिहास को नष्ट कर देगा , आपके सभी टैग, सब कुछ गिट ने किया है। यह "वर्तमान" फाइलों (उन फ़ाइलों को नहीं छू सकता है जिन्हें आप वर्तमान में देख सकते हैं), लेकिन पिछले परिवर्तन, हटाई गई फाइलें और इतने पर अप्राप्य होंगे!


3
Git अपनी वस्तुओं को केवल पढ़ने के लिए बनाता है, इसलिए आप rm -rf .gitgit के डेटाबेस को अलग करना चाहेंगे ।
जोश ली

आम तौर पर .itignore फ़ाइल को वर्जनिंग में अनदेखा करने के लिए फ़ाइलों / पेड़ों को निर्दिष्ट करने के लिए सामान्य उपयोग के दौरान बनाने की आवश्यकता होगी, इसलिए "। De- gitting" पर अंतिम भाग के बारे में पूर्ण होने के अलावा, .it को हटाने के लिए भी आपको आवश्यकता होगी। gitignore फ़ाइल। :)
मोनोमन

नंगे रिपोजिटरी के बारे में कैसे? वे किसी भी तरह "केंद्रीकृत" हैं, और मुझे लगता है कि वे कई परियोजनाओं के लिए एक अच्छी चीज हैं जिन्हें कुछ प्रकार के केंद्रीकरण की जरूरत है (जैसे: कई लोगों द्वारा विकसित परियोजनाएं)
peoro

WRT git statusयह सुनिश्चित करने के लिए चल रहा है कि आप एक रिपॉजिटरी के भीतर हैं: इसमें एक गोचर है: यदि आपके पास पर्यावरण चर $ GIT_DIR आपके वर्तमान शेल में सेट है, तो git आपके वर्तमान स्थान को अनदेखा कर देगा और $ GIT_DIR पर रिपॉजिटरी का उपयोग करेगा। मुझे पता होना चाहिए, मैंने उस कल को एक घंटा खो दिया।
sanmiguel

110

गिट के लिए जीयूआई


जीआईटी जीयूआई

Git के साथ शामिल - git guiकमांड लाइन से चलाएँ , और Windows msysgit इंस्टॉलर इसे स्टार्ट मेनू में जोड़ता है।

गिट GUI आप बहुमत के साथ क्या करने की आवश्यकता होगी के बहुमत कर सकते हैं। जिसमें चरण परिवर्तन, git और रिपॉजिटरी कॉन्फ़िगर करना, परिवर्तन धकेलना, शाखाएँ बनाना / जांचना / हटाना, विलय करना, और कई अन्य चीजें शामिल हैं।

मेरी पसंदीदा विशेषताओं में से एक राइट-क्लिक मेनू में "स्टेज लाइन" और "स्टेज हंक" शॉर्टकट हैं, जो आपको किसी फ़ाइल के विशिष्ट भागों को बनाने देता है। आप उसी के माध्यम से प्राप्त कर सकते हैं git add -i, लेकिन मुझे इसका उपयोग करना आसान है।

यह सबसे सुंदर एप्लिकेशन नहीं है, लेकिन यह लगभग सभी प्लेटफार्मों (Tcl / Tk पर आधारित होने) पर काम करता है

स्क्रीनशॉट | एक कैंची


GitK

Git के साथ भी शामिल है। यह एक गिट इतिहास दर्शक है, और आपको एक रिपॉजिटरी के इतिहास की कल्पना करने देता है (शाखाओं सहित, जब वे बनाए जाते हैं, और विलय होते हैं)। आप देख सकते हैं और खोज सकते हैं।

गिट-गुई के साथ अच्छी तरह से चला जाता है।


Gitnub

मैक ओएस एक्स आवेदन। मुख्य रूप से समतुल्य है git log, लेकिन गितुब के साथ कुछ एकीकरण है (जैसे "नेटवर्क दृश्य")।

सुंदर दिखता है, और मैक ओएस एक्स के साथ फिट बैठता है। आप रिपॉजिटरी खोज सकते हैं। गितनब की सबसे बड़ी आलोचना यह है कि यह एक रेखीय फैशन (एक समय में एक शाखा) में इतिहास को दर्शाता है - यह ब्रांचिंग और विलय की कल्पना नहीं करता है, जो कि गिट के साथ महत्वपूर्ण हो सकता है, हालांकि यह एक नियोजित सुधार है।

डाउनलोड लिंक, परिवर्तन लॉग और स्क्रीनशॉट | गिट रिपॉजिटरी


GitX

"ओएस एक्स के लिए गिटक क्लोन" बनना चाहता है।

यह गैर-रैखिक शाखाओं में बंटी इतिहास की कल्पना कर सकता है, कमिट्स कर सकता है, देख सकता है और खोज कर सकता है, और इसकी कुछ अन्य अच्छी विशेषताएं हैं जैसे किसी भी संशोधन में किसी भी फाइल को "क्विकवेयर" करने में सक्षम होना (फाइल-लिस्ट दृश्य में प्रेस स्पेस), किसी भी फाइल को निर्यात करना (ड्रैग एंड ड्रॉप के माध्यम से)।

यह OS X से बेहतर रूप से एकीकृत है git-gui/ है gitk, और असाधारण रूप से बड़े भंडार के साथ भी तेज और स्थिर है।

मूल गिट रिपॉजिटरी पीटर ने हाल ही में (लेखन के समय एक वर्ष से अधिक) अपडेट नहीं किया है। एक अधिक सक्रिय रूप से बनाए रखा शाखा ब्रदरबेड / गिटक्स में उपलब्ध है - यह "साइडबार, लाने, खींचने, धक्का, रिमोट, मर्ज, चेरी-पिक, रिबेस, क्लोन, क्लोन को जोड़ता है"

डाउनलोड करें | स्क्रीनशॉट | गिट रिपॉजिटरी | भाई का कांटा | laullon कांटा


SmartGit

मुखपृष्ठ से:

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

आप इसे उनकी वेबसाइट से डाउनलोड कर सकते हैं ।

डाउनलोड


TortoiseGit

विंडोज उपयोगकर्ताओं के लिए TortoiseSVN Git संस्करण।

यह TortoiseSVN को TortoiseGit में पोर्ट कर रहा है। नवीनतम रिलीज़ 1.2.1.0 यह रिलीज़ नियमित कार्य को पूरा कर सकती है, जैसे कमिट, शो लॉग, दो संस्करण में भिन्न, शाखा और टैग बनाएँ, पैच और इसी तरह बनाएँ। विस्तार के लिए रिलीज़नोट्स देखें । इस परियोजना में योगदान देने के लिए आपका स्वागत है।

डाउनलोड


QGit

QGit Qt / C ++ पर निर्मित एक गिट GUI दर्शक है।

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

डाउनलोड


gitg

gitg gtk + / GNOME को लक्षित करने वाला एक git रिपॉजिटरी दर्शक है। इसका एक मुख्य उद्देश्य कई डेस्कटॉप के दौरान सामने वाले दृश्य के लिए एक अधिक एकीकृत उपयोगकर्ता अनुभव प्रदान करना है। यह क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन नहीं लिख रहा है, लेकिन अन्य ऑपरेटिंग सिस्टम (जैसे ओएस एक्स के लिए जीआईटीएक्स) के लिए समान क्लाइंट के साथ घनिष्ठ सहयोग से।

विशेषताएं

  • संशोधन इतिहास ब्राउज़ करें।
  • बड़ी रिपोजिटरी संभालें (1 सेकंड के तहत लिनक्स रिपॉजिटरी, 17000+ संशोधन लोड करता है)।
  • प्रतिबद्ध बदलाव।
  • स्टेज / अस्थिर व्यक्तिगत हक्स।
  • परिवर्तन वापस करें।
  • संशोधन में परिवर्तन के रंग का प्रदर्शन करें।
  • किसी दिए गए संशोधन के लिए पेड़ ब्राउज़ करें।
  • किसी दिए गए संशोधन के पेड़ के निर्यात भागों।
  • किसी भी refspec की आपूर्ति करें जो 'git log' जैसी कमांड को इतिहास बनाने के लिए समझ सके।
  • इतिहास दृश्य में शाखाओं के बीच दिखाएँ और स्विच करें।

डाउनलोड करें: रिलीज़ या स्रोत


Gitbox

Gitbox Git संस्करण नियंत्रण प्रणाली के लिए एक मैक OS X चित्रमय इंटरफ़ेस है। एकल विंडो में आप शाखाओं, इतिहास और कार्यशील निर्देशिका स्थिति देखते हैं।

हर दिन ऑपरेशन आसान होते हैं: एक चेकबॉक्स के साथ चरण और अस्थिर परिवर्तन। एक क्लिक से कमिट, पुल, मर्ज और पुश। FileMerge.app के साथ एक अंतर दिखाने के लिए एक डबल क्लिक करें।

डाउनलोड


Gity

Gity वेबसाइट में अधिक जानकारी नहीं है, लेकिन वहां के स्क्रीनशॉट से यह एक सुविधा संपन्न खुला स्रोत OS X git gui प्रतीत होता है।

डाउनलोड या स्रोत


मिलकर एक हो जाना

Meld एक विजुअल डिफरेंस और मर्ज टूल है। आप दो या तीन फ़ाइलों की तुलना कर सकते हैं और उन्हें जगह में संपादित कर सकते हैं (डायनामिक रूप से अपडेट भिन्न होता है)। आप दो या तीन फ़ोल्डरों की तुलना कर सकते हैं और फ़ाइल तुलनाओं को लॉन्च कर सकते हैं। आप सीवीएस, सबवर्सन, बाज़ार-एनजी और मर्क्यूरियल [ और जीआईटी ] जैसे लोकप्रिय संस्करण नियंत्रण प्रणालियों से एक काम की कॉपी को ब्राउज़ और देख सकते हैं ।

डाउनलोड


कटाना

स्टीव डकोर्ट द्वारा एक गिट GUIfor OSX।

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

1 रिपॉजिटरी के लिए नि: शुल्क, $ 25 अधिक के लिए।

डाउनलोड


स्प्राउट (पूर्व में GitMac)

Git को उपयोग में आसान बनाने पर ध्यान केंद्रित करता है। देशी कोको (मैक जैसी) यूआई, फास्ट रिपॉजिटरी ब्राउजिंग, क्लोनिंग, पुश / पुल, ब्रांचिंग / मर्जिंग, विजुअल डिफरेंस, रिमोट ब्रांचेज, टर्मिनल तक आसान पहुंच आदि की सुविधा है।

सबसे अधिक इस्तेमाल की जाने वाली Git क्रियाओं को सहज और आसान बनाने के लिए, Sprout (पूर्व में GitMac) Git को उपयोगकर्ता के अनुकूल बनाता है। अधिकांश गिट वर्कफ्लो के साथ संगत, स्प्राउट डिजाइनरों और डेवलपर्स, टीम सहयोग और उन्नत और नौसिखिए उपयोगकर्ताओं के लिए समान है।

डाउनलोड करें | वेबसाइट


मीनार

मैक OSX के लिए एक सुविधा संपन्न गिट GUI। 30-दिवसीय नि: शुल्क परीक्षण, एकल उपयोगकर्ता लाइसेंस के लिए $ 59USD।

डाउनलोड करें | वेबसाइट


EGit

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

ईजीट परियोजना, गिग के जीजीटी जावा कार्यान्वयन के शीर्ष पर ग्रहण टूलिंग को लागू कर रही है।

डाउनलोड करें | वेबसाइट


गिट एक्सटेंशन

विंडोज के लिए ओपन सोर्स - आपको एक ही पैकेज में जीआईटी के साथ काम करने के लिए आवश्यक सभी चीजें स्थापित करता है, उपयोग करने में आसान।

Git एक्सटेंशन्स विंडोज पर Git के साथ काम करने को अधिक सहज बनाने के लिए एक टूलकिट है। शेल एक्सटेंशन विंडोज एक्सप्लोरर में इंटरग्रेट करेगा और फाइलों और निर्देशिकाओं पर एक संदर्भ मेनू प्रस्तुत करेगा। Visual Studio से git का उपयोग करने के लिए एक Visual Studio प्लगइन भी है।

डाउनलोड

Git gui सामान पर विस्तार के लिए dbr का बड़ा धन्यवाद ।


SourceTree

SourceTree Git, Mercurial और SVN के लिए एक मुफ्त मैक क्लाइंट है। एटलसियन द्वारा निर्मित, बिटबकेट के पीछे के लोग, यह किसी भी वीसी सिस्टम के साथ समान रूप से अच्छी तरह से काम करता है, जो आपको अपनी सभी परियोजनाओं के साथ उपयोग के लिए एक एकल टूल को मास्टर करने की अनुमति देता है, हालांकि वे संस्करण-नियंत्रित हैं। फ़ीचर-पैक और मुफ़्त।

नौसिखिए और उन्नत उपयोगकर्ताओं के लिए विशेषज्ञ-तैयार और फ़ीचर-पैक:

आउटगोइंग और इनकमिंग बदलावों की समीक्षा करें। शाखाओं के बीच चेरी-पिक। पैच हैंडलिंग, रिबेस, स्टैश / शेल्व और बहुत कुछ।

डाउनलोड करें | वेबसाइट



2
आपके पास कुछ अच्छे उत्तर हैं (विशेषकर गिटकास्ट, और पुश / पुल उत्तर), लेकिन क्या मैं इसे एक अलग उत्तर में विभाजित करने की सिफारिश कर सकता हूं? प्रश्नकर्ता ने अनुरोध किया कि आप "एक उत्तर में जानकारी का एक गुच्छा जाम करने की कोशिश न करें"!
13

3
शायद तुम TortoiseGit जोड़ना चाहिए code.google.com/p/tortoisegit अपनी सूची में, विंडोज gitters के लिए ...
Kret

1
Gity ( macendeavor.com/gity ) एक विकल्प है, लेकिन अभी भी विकास में है (OS X)
डेव देलांग

2
टॉवर ("मैक के लिए सबसे शक्तिशाली गिट क्लाइंट") गिट के लिए एक नया सुंदर ग्राहक है।
रुबई

59

ठीक है, इस तथ्य के बावजूद कि आपने पूछा कि हम अन्य संसाधनों से "बस" लिंक नहीं करते हैं, यह बहुत ही मूर्खतापूर्ण है जब पहले से ही एक समुदाय (और बढ़ते) संसाधन मौजूद हैं जो वास्तव में काफी अच्छा है: गिट कम्युनिटी बुक । गंभीरता से, एक प्रश्न में यह 20+ प्रश्न संक्षिप्त और सुसंगत कुछ भी होने वाला है। Git कम्युनिटी बुक HTML और PDF दोनों के रूप में उपलब्ध है और आपके कई प्रश्नों के उत्तर स्पष्ट, अच्छी तरह से स्वरूपित और सहकर्मी द्वारा समीक्षा किए गए उत्तर और एक प्रारूप में दिए गए हैं जो आपको सीधे अपनी समस्या पर कूदने की अनुमति देते हैं।

काश, अगर मेरी पोस्ट वास्तव में आपको परेशान करती है तो मैं इसे हटा दूंगा। बस केवल ऐसा कहो।


2
यदि आप git का उपयोग नहीं कर रहे हैं क्योंकि यह एक DVCS है, तो git का उपयोग करने में परेशान क्यों हैं? यह सवाल मूर्खतापूर्ण है और संसाधनों को उलट देता है जो एक संदिग्ध लक्ष्य को पूरा करने के लिए अन्य चीजों पर खर्च किया जा सकता है।
रान्डल शवार्ट्ज

56

फ़ाइलों को अनदेखा करने के लिए इसे कैसे कॉन्फ़िगर करें:

जिन फ़ाइलों को ट्रैक करने की इच्छा नहीं है, उन्हें अनदेखा करने की क्षमता बहुत उपयोगी है।

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

  • एक रिक्त रेखा कोई फ़ाइलों को नजरअंदाज नहीं करती है, यह आमतौर पर एक विभाजक के रूप में उपयोग की जाती है।
  • # के साथ घूरने वाली लाइनें टिप्पणी के रूप में काम करती हैं।
  • ! उपसर्ग वैकल्पिक है और पैटर्न को नकार देगा। कोई भी उपेक्षित पैटर्न जो मेल खाता है, निचले मिसाल पैटर्न को ओवरराइड करेगा।
  • उन्नत भाव और वाइल्ड कार्ड का समर्थन करता है
    • Ex: पैटर्न: *। [oa] .o या .a (ऑब्जेक्ट और संग्रह) में समाप्त होने वाली रिपॉजिटरी की सभी फाइलों को अनदेखा कर देगा
  • यदि एक पैटर्न में एक स्लैश गिट के साथ समाप्त होने वाली निर्देशिका है, तो यह केवल इस निर्देशिका और उसके नीचे के मार्गों से मेल खाएगी। यह मैच से नियमित फ़ाइलों और प्रतीकात्मक लिंक को बाहर करता है।
  • एक प्रमुख स्लैश उस पथ के नाम की सभी फाइलों से मेल खाएगा।
    • Ex: पैटर्न /*.c फ़ाइल foo.c से मेल खाएगा लेकिन बार / भयानक नहीं

Gitignore से महान उदाहरण (5) मैन पेज:

$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
#       Documentation/gitignore.html
#       file.o
#       lib.a
#       src/internal.o
[...]
$ cat .git/info/exclude
  # ignore objects and archives, anywhere in the tree.
  *.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
[...]

आम तौर पर अनट्रैक फ़ाइलों को अनदेखा करने के तीन अलग-अलग तरीके हैं।

1) भंडार के सभी उपयोगकर्ताओं के लिए उपेक्षा:

अपने काम की प्रतिलिपि के मूल में .gitignore नामक एक फ़ाइल जोड़ें ।

अपनी प्राथमिकताओं से मेल खाने के लिए .gitignore को संपादित करें , जिसके लिए फ़ाइलों को अनदेखा / अनदेखा नहीं किया जाना चाहिए।

git add .gitignore 

और जब आपका काम हो जाए तो कमिट करें।

2) केवल भंडार की अपनी प्रति के लिए उपेक्षा करें:

अपने पसंदीदा प्रतिमानों के साथ अपनी वर्किंग कॉपी में $ GIT_DIR / जानकारी / बाहर करें / एडिट करें ।

Ex: मेरी वर्किंग कॉपी ~ / src / project1 है इसलिए मैं ~ / src / project1 / .git / info /ise को संपादित करूंगा।

हो गया!

3) अपने सिस्टम पर सभी स्थितियों में ध्यान न दें:

आपके सिस्टम के लिए वैश्विक अनदेखा पैटर्न एक फ़ाइल में जा सकता है जिसका नाम कभी भी आप चाहते हैं।

मेरा व्यक्तिगत रूप से ~ / .gitglobalignore कहा जाता है

फिर मैं निम्नलिखित लाइन के साथ अपनी ~ / .ITconfig फ़ाइल को संपादित करके इस फ़ाइल के बारे में जानकारी दे सकता हूं :

core.excludesfile = ~/.gitglobalignore

हो गया!

मुझे gitignore मैन पेज अधिक जानकारी के लिए सबसे अच्छा संसाधन लगता है।


क्या कोई व्यक्ति, कृपया, इस पोस्ट में एक छोटा लेकिन महत्वपूर्ण विवरण जोड़ सकता है? यह केवल उन फ़ाइलों के लिए काम करता है जो पहले से ही गिट द्वारा ट्रैक नहीं की गई हैं। फ़ाइल को 'अनट्रैक' करने के लिए लेकिन इसे फाइलसिस्टम में छोड़ दें, इसके लिए आपको 'git rm - caked filename' की आवश्यकता होगी। धन्यवाद!
निकिता रायबाक

मैं सिर्फ यह ध्यान रखना चाहता हूं कि core.excludesfile लाइन को जोड़ना मेरे लिए काम नहीं करता था। मुझे इसे काम करने के लिए [git config --global core.excludesfile ~ / .gitglobalignore] में लाना पड़ा।
कोडिंग डिस्ट्रिक्ट

अब Gitub पर एक परियोजना है जिसे gitignore कहा जाता है जिसमें विभिन्न भाषाओं और विकास के वातावरण के लिए gitignore फाइलें हैं: github.com/github/gitignore
Ryan Lundy

47

आप संशोधन का एक विशेष सेट 'टैग' कैसे करते हैं

आप फ़ाइलों के एक विशेष सेट के लिए संशोधनों का एक विशेष सेट 'टैग' या 'रिलीज़' कैसे करते हैं ताकि आप हमेशा बाद में उसे खींच सकें?

git tagकमांड का उपयोग करना ।

वर्तमान संशोधन को केवल "टैग" करने के लिए, आप बस चलाएंगे।

git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'

वर्तमान टैगों को सूचीबद्ध करने के लिए, बस git tagबिना किसी तर्क के, या -l(लोअर केस L) चलाएं :

$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname

टैग हटाने के लिए, आप -dध्वज का उपयोग करते हैं :

$ git tag -d thetagname 
Deleted tag 'thetagname'
$ git tag
[no output]

एक विशिष्ट (पिछले) प्रतिबद्ध को टैग करने के लिए, आप बस करते हैं।

git tag [tag name] [revision SHA1 hash]

उदाहरण के लिए:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b

नोट: डिफ़ॉल्ट रूप से, गिट एक "हल्का" टैग बनाता है (मूल रूप से एक विशिष्ट संशोधन का संदर्भ)। "सही" तरीका -aध्वज का उपयोग करना है । यह आपके संपादक को टैग संदेश के लिए पूछेगा (एक प्रतिबद्ध संदेश के लिए पूछने के लिए समान है, आप -mकमांड लाइन पर टैग संदेश की आपूर्ति के लिए ध्वज का उपयोग भी कर सकते हैं )। एक एनोटेट टैग का उपयोग करना अपनी आईडी, दिनांक, टैगर (लेखक) और वैकल्पिक रूप से एक GPG हस्ताक्षर ( -sटैग का उपयोग करके ) के साथ एक ऑब्जेक्ट बनाता है । इस बारे में अधिक जानकारी के लिए, इस पोस्ट को देखें

git tag mytagwithmsg -a -m 'This is a tag, with message'

और टैग को एनोटेशन के साथ सूचीबद्ध करने के लिए, -n1प्रत्येक टैग संदेश की 1 पंक्ति ( -n245प्रत्येक एनोटेशन की पहली 245 लाइनें, और इसी तरह दिखाने के लिए) झंडे का उपयोग करें :

$ git tag -l -n1
mytagwithmsg    This is a tag, with message

अधिक जानकारी के लिए, गिट-टैग (1) मैनुअल पेज देखें


git टैग डिफ़ॉल्ट रूप से टैग नहीं बनाता है, केवल हल्के संदर्भ। आपको टैग ऑब्जेक्ट बनाने के लिए या तो -a या -s का उपयोग करना चाहिए (जो कि वर्णन जैसी चीजें उपयोग करेगा): rockstarprogrammer.org/post/2008/oct/16/…
Dustin

आह, दिलचस्प है। धन्यवाद, मैंने इसे दर्शाने के लिए उत्तर दिया है
dbr

और आप पहले से किए गए संशोधन को कैसे टैग करते हैं? (खेद यह बहुत लंबा तो मैं के माध्यम से स्किम्ड, मैं कुछ याद किया है?)
Hasen

hasen j: जवाब देने के लिए जोड़ा गया जानकारी, मूल रूप सेgit tag tagname revision_SHA1
dbr

1
रिमोट रेपो में टैग को पुश करने के लिए, गिट पुश (जीथब हेल्प एरिया से जानकारी) का उपयोग करते समय एडटैग जोड़ें।
हेक्टर रामोस

46

GIT के साथ वर्कफ़्लो उदाहरण।

Git बेहद लचीला है और किसी भी वर्कफ़्लो के लिए अच्छा है, लेकिन किसी विशेष वर्कफ़्लो को लागू न करने से यह समझने में नकारात्मक प्रभाव पड़ सकता है कि आप रेखीय "बैकअप" वर्कफ़्लो से परे git के साथ क्या कर सकते हैं, और उदाहरण के लिए उपयोगी ब्रांचिंग कैसे हो सकती है ।

यह ब्लॉग पोस्ट अच्छी तरह से एक बहुत ही सरल लेकिन प्रभावी वर्कफ़्लो बताती है जो वास्तव में git का उपयोग करके सेटअप करना आसान है।

ब्लॉग पोस्ट से उद्धृत: हम मूल / मास्टर को मुख्य शाखा मानते हैं जहां HEAD का स्रोत कोड हमेशा एक उत्पादन-तैयार उत्पाद को दर्शाता है:

वर्कफ़्लो इतना लोकप्रिय हो गया है कि एक प्रोजेक्ट बना है जो इस वर्कफ़्लो को लागू करता है: git-flow

एक साधारण वर्कफ़्लो का अच्छा चित्रण, जहाँ आप अपने सभी बदलावों को विकसित करते हैं, और केवल मास्टर को धक्का देते हैं जब कोड एक उत्पादन स्थिति में होता है:

सरल वर्कफ़्लो

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

इस सारी प्रक्रिया के दौरान, आपको एक भयानक सुरक्षा बग मिल जाता है, जिसे तुरंत ठीक करना होता है। आपके पास हॉटफ़िक्स नामक एक शाखा हो सकती है, जो सामान्य "विकसित" शाखा की तुलना में तेज़ी से उत्पादन में वापस धकेल दी जाती है।

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

Git वर्कफ़्लो उदाहरण


मैं एक नौसिखिया नौसिखिया हूं, और यह आरेख मेरे लिए और अधिक भ्रमित करता है।
finnw

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

पूरा लेख पढ़ें। मैं इस आरेख से भी भ्रमित हो गया, लेकिन ब्लॉग पोस्ट बहुत अच्छी तरह से लिखा गया है nvie.com/posts/a-successful-git-branching-model
फेलिप सबिनो

क्या अब यह बेहतर है? मैं केवल एक मोटे अवलोकन को प्राप्त करना चाहता था, यहाँ पूरे ब्लॉग पोस्ट को फिर से प्रकाशित नहीं किया गया :)
ashwoods

39

यहाँ PJ Hyett की पोस्ट की एक प्रति है, क्योंकि यह अब उपलब्ध नहीं है:

Git मुश्किल नहीं है

23 नवंबर, 2008

जब हम लोगों को बताते हैं कि उन्हें तोड़फोड़ के लिए गिट का उपयोग क्यों करना चाहिए, तो गो-टू लाइन है, "गिट तोड़फोड़ को तोड़फोड़ की तुलना में बेहतर करता है, लेकिन यह इससे कहीं अधिक है।"

"बहुत अधिक" सामान के एक समूह से युक्त होता है जो Git को वास्तव में चमक देता है, लेकिन यह अन्य SCM जैसे तोड़फोड़ से आने वाले लोगों के लिए बहुत भारी हो सकता है।

उस ने कहा, जैसे आप परिवर्तन कर रहे हैं, वैसे ही आपको Git का उपयोग करने से कुछ भी नहीं रोक रहा है।

यह मानते हुए कि आपने आवश्यक सॉफ़्टवेयर स्थापित किया है और कहीं एक दूरस्थ रिपॉजिटरी है, इस तरह से आप कोड को पकड़ लेंगे और अपने परिवर्तनों को वापस तोड़फोड़ के साथ धकेल देंगे:

$ svn checkout svn://foo.googlecode.com/svn/trunk foo
# make your changes
$ svn commit -m "my first commit"

और आप इसे Git में कैसे करेंगे:

$ git clone git@github.com:pjhyett/foo.git
# make your changes
$ git commit -a -m "my first commit"
$ git push

Git में ऐसा करने के लिए एक और कमांड। उस अतिरिक्त कमांड के बड़े निहितार्थ हैं, लेकिन इस पोस्ट के उद्देश्यों के लिए, हम सब एक अतिरिक्त कमांड के बारे में बात कर रहे हैं।

देखें, यह वास्तव में उतना कठिन नहीं है।

अद्यतन: मैं यह भी उल्लेख नहीं करना चाहूंगा कि Git की तुलना में सबवर्सन में आपकी स्थानीय प्रतिलिपि को अपडेट करने के बराबर है svn updateऔर git pullक्रमशः। दोनों मामलों में केवल एक आदेश।


पहले उदाहरण में, मैं देख रहा हूं कि आप किसी सापेक्ष पथ की जाँच कर रहे हैं, ./fooलेकिन पथ के लिए निर्दिष्ट पथ नहीं है, हालाँकि, आप कहाँ जा रहे हैं?
जेडी इसाक्स

33

Git कैसे स्थापित करें

विंडोज पर:

Msysgit स्थापित करें

कई डाउनलोड हैं:

  • Git: इसका उपयोग तब तक करें जब तक आपको विशेष रूप से नीचे दिए गए अन्य विकल्पों में से एक की आवश्यकता न हो।
  • पोर्टेबलगिट: यदि आप उस पीसी पर स्थापित किए बिना पीसी पर गिट चलाना चाहते हैं तो इसका उपयोग करें (जैसे यूएसबी ड्राइव से गिट चलाना)
  • msysGit: यदि आप स्वयं गिट विकसित करना चाहते हैं तो इसका उपयोग करें। यदि आप अपने स्रोत कोड के लिए Git का उपयोग करना चाहते हैं , लेकिन Git के स्रोत कोड को संपादित नहीं करना चाहते हैं , तो आपको इसकी आवश्यकता नहीं है।

यह साइग्विन बैश शेल भी स्थापित करता है, इसलिए आप gitएक अच्छे शेल (cmd.exe से) का उपयोग कर सकते हैं , और इसमें git-gui ( git guiकमांड या Start > All Programs > Gitमेनू के माध्यम से सुलभ) भी शामिल है

मैक ओएस एक्स

गिट-ऑक्स-इंस्टॉलर का उपयोग करें , या आप स्रोत से भी इंस्टॉल कर सकते हैं

पैकेज मैनेजर के माध्यम से

gitअपने मूल पैकेज प्रबंधक का उपयोग करके इंस्टॉल करें । उदाहरण के लिए, डेबियन (या उबंटू) पर:

apt-get install git-core

या मैक ओएस एक्स पर, के माध्यम से MacPorts :

sudo port install git-core+bash_completion+doc

… या फ़िंक:

fink install git

… या होमब्रे :

brew install git

Red Hat आधारित वितरण पर, जैसे फेडोरा:

yum install git

सिगविन में गिट पैकेज "डेवेल" अनुभाग के तहत पाया जा सकता है

स्रोत से (Mac OS X / Linux / BSD / etc।)

मैक ओएस एक्स में, यदि आपके पास डेवलपर टूल इंस्टॉल हैं, तो आप गिट को स्रोत से बहुत आसानी से संकलित कर सकते हैं। Git का नवीनतम संस्करण डाउनलोड एक के रूप में .tar.bzया .tar.gzसे http://git-scm.com/ (खोजक में डबल क्लिक करें), और यह निकालने

लिनक्स / बीएसडी / आदि पर। यह उतना ही होना चाहिए। उदाहरण के लिए, डेबियन (और उबंटू) में, आपको build-essentialपैकेज को स्थापित करना होगा apt

फिर एक टर्मिनल में, cdजहाँ आपने फ़ाइलों को निकाला (रनिंग cd ~/Downloads/git*/को काम करना चाहिए), और फिर चलाएं ।।

./configure && make && sudo make install

यह Git को डिफ़ॉल्ट स्थान पर स्थापित करेगा ( /usr/local- तो इसमें gitहोगा /usr/local/bin/git)

यह आपको अपना पासवर्ड दर्ज करने के लिए संकेत देगा (इसके लिए sudo), यह इतना है कि यह /usr/local/निर्देशिका को लिख सकता है , जिसे केवल "रूट" उपयोगकर्ता द्वारा ही एक्सेस किया जा सकता है, इसलिए sudo की आवश्यकता है!

यदि आप इसे कहीं अलग से स्थापित करना चाहते हैं (तो Git की फाइलें अन्य उपकरणों के साथ मिश्रित नहीं हैं), --prefixकॉन्फ़िगर कमांड के साथ उपयोग करें :

./configure --prefix=/usr/local/gitpath
make
sudo make install

यह gitबाइनरी को स्थापित करेगा /usr/local/bin/gitpath/bin/git- इसलिए आपको यह टाइप करने की ज़रूरत नहीं है कि हर बार, आपको $PATHनिम्नलिखित में अपनी पंक्ति जोड़कर इसे जोड़ना चाहिए ~/.profile:

export PATH="${PATH}:/usr/local/bin/gitpath/bin/"

यदि आपके पास sudo एक्सेस नहीं है, तो आप --prefix=/Users/myusername/binअपने होम डायरेक्टरी में उपयोग और इंस्टॉल कर सकते हैं । में जोड़ने के ~/bin/लिए याद रखें$PATH

स्क्रिप्ट x-git-update-to-latest-version यह बहुत कुछ स्वचालित करता है:

यह स्क्रिप्ट git रेपो (मेरे स्थान पर ~/work/track/git) के मेरे स्थानीय क्लोन को अपडेट करती है , और फिर सिम्लिंक को कॉन्फ़िगर, इंस्टॉल ( /usr/local/git- git describe) करती है और अपडेट करती है /usr/local/git

इस तरह, मैं /usr/local/git/binअपने में हो सकता हूं PATHऔर मैं हमेशा नवीनतम संस्करण का उपयोग कर रहा हूं।

इस स्क्रिप्ट का नवीनतम संस्करण मैन पेज भी इंस्टॉल करता है। निर्देशिका MANPATHको शामिल करने के लिए आपको अपना ट्वीक करना होगा /usr/local/git/share/man


5
पर फेडोरा: yum install git। GUI चलाने के लिए yum install git-gui
बजे क्रिस्टियान सियुपिटु

2
मैक पर,sudo port install git-core+bash_completion+doc
सिंगलटन

मैंने मैक के लिए फ़िंक डाउनलोड किया, लेकिन फ़िंक इंस्टॉल गीट चलाने से मुझे त्रुटि मिलती है: "विफल: विनिर्देश 'git' के लिए कोई पैकेज नहीं मिला!"
क्वानो

@quano यह होना चाहिए, pdb.finkproject.org/pdb/package.php/git - check फ़िंक ठीक से अपडेट है - मुझे लगता है कि दौड़ने में fink self-updateमदद करनी चाहिए
dbr

32

Git Reset

कहते हैं कि आप एक पुल बनाते हैं, इसे अपने कोड में मर्ज करते हैं, और तय करते हैं कि आपको यह पसंद नहीं है। Git-log, या tig का प्रयोग करें, और जहाँ भी आप वापस जाना चाहते हैं, उसका हैश ढूंढें (संभवत: पुल / मर्ज से पहले आपकी अंतिम प्रतिबद्धता) हैश की प्रतिलिपि बनाएँ, और करें:

# Revert to a previous commit by hash:
git-reset --hard <hash>

हैश के बजाय, आप HEAD ^ को पिछली प्रतिबद्धताओं के शॉर्टकट के रूप में उपयोग कर सकते हैं ।

# Revert to previous commit:
git-reset --hard HEAD^

4
यह अधिकांश अन्य केंद्रीकृत संस्करण नियंत्रण प्रणालियों में वापस आने का एनालॉग है।
जेरेमी वॉल

"$ git-reset --hard HEAD ^" सिर के माता-पिता के लिए आशुलिपि होना चाहिए (यानी अंतिम प्रतिबद्ध से पहले की पिछली स्थिति)।
बेन पेज

6
सिर्फ एक सादे पुराने git resetचाहिए unstage आकस्मिकgit add
SLF

31

आप एक साझा टीम भंडार कैसे सेट करते हैं?

सामान्य रिपॉजिटरी की स्थापना कैसे की जाती है, इसका वर्णन यहाँ किया गया है - लेकिन आप एक टीम रिपॉजिटरी कैसे सेट करते हैं, जिसे हर कोई खींच सकता है और इससे धक्का दे सकता है?

एक साझा NFS फ़ाइल सिस्टम का उपयोग करना

उदाहरण के लिए आपकी टीम के पास पहले से ही एक साझा समूह सदस्यता है जिसका उपयोग किया जा सकता है।

mkdir /your/share/folder/project.git
cd /your/share/folder/project.git
newgrp yourteamgroup # if necessary
git init --bare --shared

इस रिपॉजिटरी का उपयोग करने के लिए सबसे आसान काम जो आप पहले से उपयोग कर रहे हैं, स्थानीय रिपॉजिटरी से शुरू करना है:

cd your/local/workspace/project
git remote add origin /your/share/folder/project.git
git push origin master

अन्य अब इसे क्लोन कर सकते हैं और काम करना शुरू कर सकते हैं:

cd your/local/workspace
git clone /your/share/folder/project.git

SSH का उपयोग करना

लक्ष्य सर्वर पर एक उपयोगकर्ता खाता सेट करें। चाहे आप बिना पासवर्ड वाले खाते का उपयोग करें, पासवर्ड वाले खाते का, या उपयोग करें authorized_keysवास्तव में आपकी सुरक्षा के आवश्यक स्तर पर निर्भर करता है। कुछ और जानकारी के लिए SSH पर Git को कॉन्फ़िगर करने पर एक नज़र डालें ।

यदि सभी डेवलपर्स इस साझा भंडार को एक्सेस करने के लिए एक ही खाते का उपयोग करते हैं, तो आपको --sharedऊपर दिए गए विकल्प का उपयोग करने की आवश्यकता नहीं है।

उपरोक्त तरीके से रिपॉजिटरी को एक ही तरीके से जमा करने के बाद, आप इस तरह से शुरुआती धक्का देते हैं:

cd your/local/workspace/project
git remote add origin user@server:/path/to/project.git
git push origin master

उपरोक्त के साथ समानता देखें? केवल एक चीज जो इसके अतिरिक्त हो सकती है वह है एसएसएच एक पासवर्ड के लिए पूछ रहा है कि क्या खाते में पासवर्ड है। यदि आपको यह संकेत पासवर्ड के बिना खाते पर मिलता है, तो SSH सर्वर शायद अक्षम हो गया है PermitEmptyPasswords

क्लोनिंग अब इस तरह दिखता है:

cd your/local/workspace
git clone user@server:/path/to/project.git

NFS के अलावा - आप ssh पर काम करने के लिए git सर्वर कैसे सेट करते हैं? - github.com के एक छोटे पैमाने पर उदाहरण की तरह?
डैफिड रीस

क्या संबंधित निर्देशिकाओं पर समूह चिपचिपा सा सेट होना आवश्यक है, या क्या वह सब ध्यान नहीं रखता है? यदि बाद वाला, कैसे जानता है कि यूनिक्स फ़ाइलों के लिए अनुमतियों पर किस समूह का उपयोग करना है?
नॉर्मन रैमसे

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

क्या Git रेपो-config core.sharedRepository समूह के लिए उपयोगी है?
systempuntoout

28

git statusआपका मित्र है, अक्सर इसका उपयोग करें। जैसे सवालों के जवाब देने के लिए अच्छा है:

  • उस कमांड ने क्या किया?
  • मैं किस शाखा पर हूं?
  • मैं क्या बदलाव करने वाला हूं, और क्या मैं कुछ भी भूल गया हूं?
  • क्या मैं पिछली बार इस परियोजना पर काम कर रहा था (दिन, सप्ताह, या शायद महीनों पहले)?

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

जाहिर है, यह बहुत अधिक उपयोगी है अगर आपका .gitignore पूरी तरह से कॉन्फ़िगर किया गया है।


27

प्रतिबद्ध बदलाव

एक बार जब आप किसी फ़ाइल को संपादित कर लेते हैं, तो आपको अपने बदलावों को लागू करने की आवश्यकता होती है। जब आप इस कमांड को निष्पादित करते हैं तो यह एक प्रतिबद्ध संदेश के लिए पूछेगा - जो कि केवल एक साधारण सा पाठ है जो सभी को बताता है कि आपने क्या बदला है।

$ git commit source/main.c

निर्देशिका में फ़ाइल main.c प्रतिबद्ध करेगा ।/source/

$ git commit -a # the -a flag pulls in all modified files

सभी बदली हुई फाइलें (लेकिन नई फाइलें नहीं, उन लोगों को सूचकांक-जोड़ के साथ जोड़ने की आवश्यकता होगी)। यदि आप केवल कुछ फ़ाइलों को कमिट करना चाहते हैं तो आपको पहले उन्हें git-add के साथ स्टेज करना होगा और फिर -a फ्लैग के बिना कमिट करना होगा।

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

$ git push <remote> <branch> # push new commits to the <branch> on the <remote> repository

सीवीएस या एसवीएन से आने वाले किसी व्यक्ति के लिए यह एक बदलाव है क्योंकि केंद्रीय भंडार के लिए प्रतिबद्ध को अब दो चरणों की आवश्यकता है।


27

आप कैसे शाखा करते हैं?

गिट रिपॉजिटरी में डिफ़ॉल्ट शाखा को कहा जाता है master

एक नई शाखा का उपयोग करने के लिए

git branch <branch-name>

वर्तमान रिपॉजिटरी प्रकार में सभी शाखाओं की सूची देखने के लिए

git branch

यदि आप दूसरी शाखा में जाना चाहते हैं तो आप उपयोग कर सकते हैं

git checkout <branch-name>

एक नई शाखा बनाने और उसे एक चरण में बदलने के लिए

git checkout -b <branch-name>

एक शाखा को हटाने के लिए, का उपयोग करें

git branch -d <branch-name>

वर्तमान शाखा से परिवर्तनों के साथ एक शाखा बनाने के लिए, करें

git stash
git stash branch <branch-name>

11
आपको शॉर्टकट git चेकआउट -b <शाखा-नाम> का उल्लेख करना चाहिए जो एक शाखा बनाता है और इसे एक चरण में स्विच करता है। यह शायद शुरुआत और उन्नत उन्नत उपयोगकर्ता के लिए सबसे आम उपयोग का मामला है।
जेरेमी वॉल

21

नवीनतम कोड प्राप्त करना

$ git pull <remote> <branch> # fetches the code and merges it into 
                             # your working directory
$ git fetch <remote> <branch> # fetches the code but does not merge
                              # it into your working directory

$ git pull --tag <remote> <branch> # same as above but fetch tags as well
$ git fetch --tag <remote> <branch> # you get the idea

रिमोट रिपॉजिटरी से कोड की नवीनतम प्रतिलिपि प्राप्त करने के लिए यह बहुत ज्यादा हर मामले को कवर करता है।



18

Git Magic वह सब है जिसकी आपको कभी आवश्यकता होगी। गारंटीशुदा या आपके पैसे वापस!


14
आह, मुझे अपना पैसा वापस चाहिए। अधूरा ट्यूटोरियल (GitMagic) == काम के साथ बुगी सॉफ्टवेयर (msysGit), जो शायद ही मुफ्त हो
SamGoody

16

आप शाखाओं का विलय कैसे करते हैं?

आप एक शाखा मर्ज करना चाहते हैं (उदाहरण के masterलिए release), सुनिश्चित करें कि आपके वर्तमान शाखा लक्ष्य शाखा आप चाहें में विलय करने के लिए (इस्तेमाल होता है बनाने git branchया git statusअपने वर्तमान शाखा को देखने के लिए)।

फिर उपयोग करें

git merge master

( masterउस शाखा का नाम कहां है जिसे आप वर्तमान शाखा के साथ मिलाना चाहते हैं)।

यदि कोई संघर्ष है, तो आप उपयोग कर सकते हैं

git diff

लंबित संघर्षों को देखने के लिए आपको हल करना होगा।


2
Git mergetool है जो आपके पसंदीदा टूल (gvimdiff, kdiff3 या कुछ और) के साथ तीन-तरफा-अंतर करता है
डेव वोग्ट

16

मैंने Git Internals को भी बहुत उपयोगी पाया है। यह स्कॉट चाकोन (प्रो गिट के लेखक, और गिट कम्युनिटी बुक के अनुचर) द्वारा लिखा गया है। Git Internals के बारे में मुझे क्या पसंद है क्या यह पहले अवधारणाओं पर ध्यान केंद्रित करता है और फिर आज्ञाओं पर , और यह कि यह ~ 100 छोटे पृष्ठ है यह जल्दी पचने योग्य है।



12

सुदूर शाखाओं को कैसे ट्रैक करें

यह मानते हुए कि एक दूरस्थ रिपॉजिटरी है जिसे आपने अपने स्थानीय रिपॉजिटरी से क्लोन किया है और यह भी मान लिया है कि उस रिमोट रिपॉजिटरी पर 'some_branch' नाम की एक शाखा है, यहां बताया गया है कि इसे स्थानीय रूप से कैसे ट्रैक किया जाए:

# list remote branches
git branch -r

# start tracking one remote branch
git branch --track some_branch origin/some_branch

# change to the branch locally
git checkout some_branch

# make changes and commit them locally
....

# push your changes to the remote repository:
git push

ऐसा लगता है कि git में 1.7 दूरस्थ शाखाएँ स्वचालित रूप से ट्रैक हो जाती हैं जब आप उनसे स्थानीय शाखा बनाते हैं। मुझे नहीं पता कि यह व्यवहार किस संस्करण में शुरू हुआ।
डॉपेलगैंगर

वास्तव में, आप सभी दूरस्थ शाखाओं का उपयोग करके सूचीबद्ध कर सकते हैंgit remote show REMOTENAME
फेलिप सबिनो


10

आप एक फ़ाइल के दो संशोधनों, या अपनी वर्तमान फ़ाइल और पिछले संशोधन की तुलना कैसे करते हैं?

तुलना आज्ञा है git diff

किसी फ़ाइल के 2 संशोधनों की तुलना करने के लिए:

$ git diff <commit1> <commit2> <file_name>

यह कमिट 2 के खिलाफ कमेटी 1 में भिन्न है यदि आप ऑर्डर बदलते हैं तो फाइलें दूसरे तरीके के दौर में बदल जाती हैं, जो वह नहीं हो सकता है जिसकी आप उम्मीद करते हैं ...

रिपॉजिटरी के खिलाफ वर्तमान चरणबद्ध फ़ाइल की तुलना करने के लिए:

$ git diff --staged <file_name>

रिपॉजिटरी के खिलाफ वर्तमान अस्थिर फाइल की तुलना करने के लिए:

$ git diff <file_name>

9

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

स्टैकओवरफ़्लो पर, मैं वास्तव में आपकी पसंदीदा चाल देखना पसंद करूंगा!

मेरा, जिसे मैंने हाल ही में खोजा था git stash, यहाँ समझाया गया है , जो आपको अपनी वर्तमान नौकरी बचाने और किसी अन्य शाखा में जाने में सक्षम बनाता है

EDIT: पिछली पोस्ट के रूप में, यदि आप वास्तव में विकी के रूप में पदों के साथ स्टैकओवरलो प्रारूप पसंद करते हैं तो मैं इस उत्तर को हटा दूंगा


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

9

कंसोल UI - टाइग

स्थापना:

apt-get install tig

प्रयोग

एक git रेपो के अंदर, इंटरेक्टिव लॉग देखने के लिए 'tig' टाइप करें, इसके बारे में अधिक जानकारी देखने के लिए किसी भी लॉग पर 'एंटर' हिट करें। मदद के लिए , जो बुनियादी कार्यक्षमता को सूचीबद्ध करता है।

सामान्य ज्ञान

"टाइग" पीछे की तरफ "गिट" है।


क्या यह "कंसोल यूआई" नहीं होना चाहिए, क्योंकि "कंसोल" और "ग्राफिकल" थोड़ा सा है .. विरोधाभासी?
dbr

यह गिट-लॉग की तुलना में बहुत अधिक चित्रमय है ... हालांकि, यह बहुत अधिक अंतर करने योग्य है ...
डीन राथर

8

मैं दूरस्थ रिपॉजिटरी पर एक शाखा कैसे बना सकता हूं?

यह मानते हुए कि आपने अपने रिमोट रिपॉजिटरी को कुछ सिंगल रिमोट रिपॉजिटरी से क्लोन किया है।

# create a new branch locally
git branch name_of_branch
git checkout name_of_branch
# edit/add/remove files    
# ... 
# Commit your changes locally
git add fileName
git commit -m Message
# push changes and new branch to remote repository:
git push origin name_of_branch:name_of_branch

11
क्यों name_of_branch: name_of_branch?
सीन ओसेवा

हाँ क्यों? जहां तक ​​मुझे पता है कि आपको केवल जरूरत है git push origin name_of_branchऔर शाखा पहले से ही आपके रिमोट में बनाई जाएगी
फेलिप सबिनो

पहला name_of_branchस्थानीय नाम है, दूसरा (वांछित) दूरस्थ शाखा का नाम है, इसलिए local_name_of_branch:remote_name_of_branchयदि आप चाहते हैं कि नाम अलग-अलग हों। यदि आप उन्हें वही चाहते हैं, तो आपको अभी भी यह निर्दिष्ट करना होगा कि यह b / c git यह अनुमान नहीं लगाता है कि आप चाहते हैं कि नाम समान हो जब तक आप इसे नहीं बताते (ऐसा करने के अन्य तरीके भी हैं,) हालांकि)
जॉनी

8

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


8

मैं दूरस्थ रिपॉजिटरी पर एक शाखा कैसे हटाऊं?

:शाखा के नाम से पहले अपने रिमोट में एक पुश करें

git push origin :mybranchname

किया जा रहा है originअपने रिमोट का नाम और mybranchnameशाखा का नाम के बारे में हटाए जाने के लिए

http://help.github.com/remotes/


7

पुश और परिवर्तन खींचो

एक सरलीकृत तरीके से, बस करो git pushऔर git pull। परिवर्तन मर्ज किए गए हैं और यदि कोई विरोधाभास है तो आपको बताएंगे और आप इसे मैन्युअल रूप से हल कर सकते हैं।

जब आप पहली बार दूरस्थ रिपॉजिटरी में धकेलते हैं तो आपको एक git push origin master(मास्टर शाखा होने के नाते) करने की आवश्यकता होती है। तब से तुम बस करो git push

साथ टैग पुश git push --tags


7

कोड की जाँच करना

पहले एक खाली डायर पर जाएं, "गिट इनिट" का उपयोग करें इसे एक रिपॉजिटरी बनाने के लिए, फिर रिमोट रेपो को अपने दम पर क्लोन करें।

git clone user@host.com:/dir/to/repo

जहां से आप शुरू में क्लोन करते हैं, वहां "गिट पुल" डिफ़ॉल्ट रूप से खींचेगा।


7
मुझे लगता है कि क्लोन पहले init चलाने की आवश्यकता को हटाकर आपके लिए init कदम रखता है। git init वास्तव में पहली बार रिपॉजिटरी बनाने के लिए या कई रिमूवर के साथ विशेष कॉन्फ़िगरेशन के लिए है जो आप एक मानक क्लोन से अलग सेट करना चाहते हैं।
जेरेमी वॉल

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