Git को और अधिक कुशलता से इस्तेमाल करने के तरीकों को संकलित किया गया है.

  1. रिपॉज़िटरी संरचना
    • Git एक distributed version control system है, इसलिए इसे centralized, GitHub/GitLab शैली, hierarchical आदि कई तरीकों से व्यवस्थित किया जा सकता है
  2. branch संरचना
    • GitHub Flow: Main को आधार बनाकर feature या bug branch बनाई जाती है, feedback लेने के बाद उसे merge किया जाता है
    • Git Flow: बार-बार deployment की बजाय पारंपरिक development के लिए अधिक उपयुक्त
      • Feature branch बनाकर Develop branch में merge किया जाता है
      • पर्याप्त रूप से परिपक्व Develop branch से Release(Stage) branch बनाई जाती है, जिसमें केवल bug fix किए जाते हैं, और बाद में इसे Develop और Master में मिलाया जाता है
      • Release की तैयारी पूरी होने पर इसे Master branch में merge किया जाता है, और उसके बाद केवल hotfix किए जाते हैं
    • GitLab Flow: जटिल Git Flow और बहुत सरल GitHub Flow के बीच का रूप
      • Git Flow में अस्थायी Release branch की जगह लगातार बनाए रखी जाने वाली Stage branch का उपयोग
      • hotfix को Production और Stage में, और bug fix को Stage और Develop में लागू किया जाता है
    • Perforce Stream: कई releases को manage करना हो तो उपयोगी
      • Release में bug fix होने पर वह Main-Develop तक propagate किया जाता है
      • Develop में feature बनने पर conflict हटाकर उसे Main में reflect किया जाता है
    • Trunk आधारित: Main(Master) का अधिक कुशल उपयोग करने का प्रयास, जिसे मुख्यतः big tech कंपनियां इस्तेमाल करती हैं
      • Main को लंबे समय तक बनाए रखा जाता है, और release branch में अलग से bug fix नहीं किए जाते
      • features को flag के साथ Off स्थिति में merge किया जाता है ताकि code हमेशा up-to-date रहे
  3. commit
    • convention: आम तौर पर Angular convention का काफी उपयोग होता है, लेकिन आपसी सहमति से emoji आदि भी इस्तेमाल किए जा सकते हैं
    • इकाई: commit को यथासंभव छोटे unit में करना चाहिए, लेकिन यह भी टीम के भीतर तय होना चाहिए कि न्यूनतम unit क्या होगा
      • Hunk के जरिए changes को बारीकी से बांटकर staging की जा सकती है
      • अगर Delta unit पर changes की तुलना की जा सके तो यह सुविधाजनक होता है
    • speculative commit और linear history: बार-बार commit करके context बनाए रखते हुए भी commit history को linear रखने का तरीका
      • जब भी stash या prototype trial जैसी work save करने की जरूरत हो, उसे save करें
      • जहां-जहां checkout की जरूरत हो वहां checkout करके लगातार commit करें, फिर rebase के जरिए history को linear रखें
      • git-branchless नाम का tool उपयोगी है
      • git sl: anonymous branches को track करके commit history को अच्छी तरह visualize करता है
      • git prev और git next: पिछले/अगले unit पर checkout करना आसान बनाते हैं
      • git sync: Main पर rebase करता है
      • git move: commit को इच्छित स्थान पर ले जा सकता है
      • git restack: rebase या commit --amend आदि से commit history का क्रम बिगड़ जाए तो उसे restore करता है
      • git undo: undo किया जा सकता है
  4. merge
    • Patch Stack: feature[1/3], feature[2/3], feature[3/3] की तरह तोड़कर review करने का तरीका
    • first-class conflict: Git के साथ compatible Jujutsu conflict को commit में record करता है, इसलिए एक बार सुलझाया गया conflict बाद में फिर से होने की संभावना कम होती है
    • 3 Way Diff: Jujutsu में conflict होने पर Base-Ours को diff के रूप में और Theirs को snapshot के रूप में दिखाया जाता है, जिससे यह सहज लगता है. हालांकि IDE/editor syntax highlighting या Base-Their diff देखने की जरूरत भी हो सकती है
    • binary conflict: Git में binary file conflict होने पर वह उसे उपयोगकर्ता पर छोड़ देता है, लेकिन लेखक ने व्यक्तिगत रूप से एक सरल tool बनाया जो Base और Their files बना देता है
    • patch और mail: अधिक पारंपरिक(?) merge तरीके का परिचय
      • git request-pull pull request बनाने का command है
      • git send-mail से patch को mail द्वारा भेजा जा सकता है, और git am से patch apply किया जा सकता है
  5. अन्य management तरीके
    • Worktree: Git history साझा रहते हुए, SVN branch की तरह केवल working files को कई जगह checkout करके कई काम एक साथ किए जा सकते हैं
    • Git LFS: large files को manage करने का तरीका
    • partial clone और partial checkout: आंशिक रूप से clone करके download time घटाया जा सकता है, और आंशिक checkout से केवल इच्छित directory पर काम किया जा सकता है
    • Scalar: Microsoft के प्रयास से बना tool, जो बहुत बड़े repositories को आसानी से manage करने में मदद करता है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.