የተከፋፈለው የምንጭ ቁጥጥር ስርዓት Git 2.22

የቀረበው በ የተከፋፈለ ምንጭ ቁጥጥር ስርዓት መልቀቅ Git 2.22.0. Git በቅርንጫፍ እና በማዋሃድ ላይ ተመስርተው ተለዋዋጭ ያልሆኑ ቀጥተኛ ያልሆኑ የልማት መሳሪያዎችን በማቅረብ በጣም ታዋቂ, አስተማማኝ እና ከፍተኛ አፈፃፀም የስሪት ቁጥጥር ስርዓቶች አንዱ ነው. የታሪክን ታማኝነት ለማረጋገጥ እና ወደ ኋላ የሚመለሱ ለውጦችን ለመቋቋም በእያንዳንዱ ቃል ኪዳን ውስጥ ያለፈውን ታሪክ በሙሉ በድብቅ ሀሽግ ስራ ላይ ይውላል፣ እና የግለሰብ መለያዎችን ማረጋገጥ እና በገንቢዎች ዲጂታል ፊርማ ማድረግም ይቻላል።

ከቀዳሚው እትም ጋር ሲነፃፀር አዲሱ እትም በ 745 ገንቢዎች ተሳትፎ የተዘጋጀ 74 ለውጦችን ያካተተ ሲሆን ከእነዚህ ውስጥ 18ቱ ለመጀመሪያ ጊዜ በልማት ውስጥ ተሳትፈዋል። ዋና ፈጠራዎች:

  • 1.18 ከተለቀቀበት ጊዜ ጀምሮ የሚገኝ፣ አዲሱ መፈጸም rebase ሁነታ "git rebase --rebase-merges" የድሮውን "--preserve-merges" አማራጭን ይተካዋል፣ ይህም አሁን ተቋርጧል። የ"git rebase" ክዋኔው ተከታታይ ቁርጠኝነትን በአዲስ መሰረት ለመተካት ይጠቅማል፡ ለምሳሌ፡ የተለየ አዲስ ባህሪን እያዳበረ ወደ ዋናው ቅርንጫፍ ሁኔታ ለማዛወር ከቅርንጫፉ በኋላ የተጨመሩትን ጥገናዎች ያካትታል። :

    o - o - o (የእኔ ባህሪ)

    /

    o - o - o - o - o (መምህር)

    o - o - o (የእኔ ባህሪ)

    /

    o - o - o - o - o (መምህር)

    የቅርንጫፉን መዋቅር በተሰደደ ቅርንጫፍ ውስጥ ለማቆየት፣ “-- preserve-merges” የሚለው አማራጭ ከዚህ ቀደም ጥቅም ላይ ሊውል ይችላል፣ ይህም በይነተገናኝ ሁነታ (git rebase -i --preserve-merges) ሲሄድ የኮሚሽኑን ታሪክ ማረም ይፈቅዳል፣ነገር ግን የማጠራቀሚያውን መዋቅር ሙሉ በሙሉ ለመጠበቅ ዋስትና አልሰጠም. አዲሱ የ"--rebase-merges" ሁነታ በቅርንጫፉ ላይ እየተሰደደ ያለውን ለውጥ አወቃቀሩን እንዲጠብቁ ይፈቅድልዎታል፣ ይህም ሙሉ በሙሉ መስተጋብራዊ ክንዋኔዎችን ሲያቀርብ፣ መሰረዝን፣ ማሰባሰብ እና እንደገና መሰየምን ያካትታል።

    ለምሳሌ፣ "--rebase-merges" ይህ ይፈቅዳል እንደገና መስቀል ከተለየ ቅርንጫፍ ወደ አዲስ ዋና ቅርንጫፍ ይሠራል ፣ የቅርንጫፍ መዋቅርን በተሰደደው ቅርንጫፍ ውስጥ እየጠበቀ እና በበረራ ላይ በተደረጉ ማስታወሻዎች ላይ አንዳንድ ለውጦችን ያድርጉ።

  • የሁለት ቅርንጫፎች የውህደት መሰረትን በመወሰን (መዋሃድ መሰረት፣ ከአንድ የጋራ ቅድመ አያት ጋር የሚያያዝ) “git branch new A...B” እና “git checkout -b new” ግንባታዎችን በመጠቀም አዲስ ቅርንጫፍ ለመፍጠር ተጨማሪ ድጋፍ። A...B”፣ በዚህ ውስጥ “A ...B” በሁለት የተገለጹ ወንጀሎች መካከል ያለውን የውህደት መሰረትን የሚያካትት፣ ልክ እንደ “git checkout A...B” HEADን ወደ መሰረታዊ ቁርጠኝነት እና “diff A” እንደሚለውጥ። ..ቢ" በ"B" እና በ"A" "ቅድመ አያት" መካከል ያለውን ለውጥ ያሳያል።

    ለምሳሌ, በተለየ የእኔ-ገጽታ ቅርንጫፍ ላይ በሚሰሩበት ጊዜ, ይህ ባህሪ ከተለየ ቅርንጫፍ ለመጀመር በሚፈልጉበት ጊዜ ጥቅም ላይ ሊውል ይችላል, ለምሳሌ, ከዋናው ቅርንጫፍ ውስጥ ከተመሳሳይ ቦታ የኔ-ገጽታ ቅርንጫፍ ከተፈተሸበት. ከዚህ ቀደም ይህ የለውጥ ምዝግብ ማስታወሻን በእጅ መመርመርን ይጠይቃል ፣ ትልቅ የለውጦች ታሪክ ካለዎት የማይመች ነበር ፣ ከዚያ በጌታ እና በኔ ባህሪ ቅርንጫፎች መካከል ያለውን የውህደት መሠረት ሃሽ ለማስላት “git merge-base master my-feature” ን ያስኬዳል። እና ከጋራ ቅድመ አያት ጋር በተያያዘ አዲስ ቅርንጫፍ መፍጠር “git branch my-ሌላ-ባህሪ ሃሽ”። በ Git 2.22 ውስጥ፣ ከሌሎች ሁለት ቅርንጫፎች ውህደት መሠረት ጋር በተያያዘ ቅርንጫፍ ለመፍጠር “git branch my-other-feature A...B” የሚለውን አገባብ መጠቀም ትችላለህ።

  • በቼክ ኦፕሬሽን ወቅት የተገኘውን የቅርንጫፉን ስም ለማሳየት "git branch --show-current" አማራጭ ታክሏል;
  • የ "git checkout — no-overlay — dir" አማራጭ ታክሏል፣ ይህም የፍተሻ ክዋኔን በሚያከናውንበት ጊዜ፣ የዲሪ ዳይሬክተሩን ይዘቶች ከዋናው ቅርንጫፍ ሁኔታ ጋር ሙሉ በሙሉ ወደ ሚዛመድ ቅጽ ለማምጣት ያስችላል። ለምሳሌ በዋናው ቅርንጫፍ ውስጥ የሌለ የዲር ዳይሬክተሩ የአካባቢያዊ ቅጂ ፋይል ካለ በነባሪነት "git checkout master - dir" በሚሰራበት ጊዜ ይቀራል እና "--no-ተደራቢ" ከሆነ. ” አማራጭ ተገልጿል፣ ይሰረዛል፣
  • የ"git diff" ትዕዛዝ አማራጮችን ለመተንተን ሁለንተናዊ ኤፒአይን ይጠቀማል፣ ይህም የአማራጭ አያያዝን ከሌሎች የጂት መገልገያዎች ጋር አንድ ለማድረግ ያስችላል። ለምሳሌ, በ "git diff" ውስጥ, ሁሉም አማራጮች አሁን ተቃዋሚዎቻቸው አላቸው ("--function-context" እና "--no-function-context");
  • በ"git log" ውፅዓት ("ተጎታች" - ተጨማሪ የመረጃ ባንዲራዎች፣ እንደ በመለያ የገባ እና በጋራ የተጻፈ) ከፈጸሙት ጋር የተያያዙ የተራዘሙ መለያዎችን የማጣራት ችሎታ ታክሏል። መለያዎችን በሁለቱም ቁልፍ እና ዋጋ ማጣራት ይቻላል ለምሳሌ፡-
    "git log --pretty="%(trailers:key=የተገመገመ-በ,valueonly)";

  • የበለጠ ተለዋዋጭ እና የተዋቀረ የውጤት ፎርማትን የሚያቀርብ አዲስ የመከታተያ ሞተር፣ Trace2 ተጨምሯል። Trace2 ለበለጠ ዝርዝር ትንተና እና ማረም ስለተፈፀሙ ስራዎች እና የአፈፃፀም መረጃዎች ቴሌሜትሪ እንዲሰበስቡ ይፈቅድልዎታል (አስተዳዳሪው በተጠቃሚው ተመድቧል ፣ ምንም ውሂብ ወደ ውጭ አይላክም);
  • የ "git bisect" ዘገባ የበለጠ ተነባቢ ሆኗል, በዚህ ውስጥ ችግር ያለባቸው ድርጊቶች አሁን ይበልጥ ግልጽ በሆነ መልኩ ጎልተው ይታያሉ እና ለእያንዳንዱ ፋይል ለውጦች ማጠቃለያ ስታቲስቲክስ ይታያል (በመስመሮች ብዛት ደረጃ ላይ);
  • የማውጫ ስያሜዎችን ለመወሰን ሂዩሪስቲክስ እንደገና ተሰይሟል ዳግም መሰየምን የውሸት መጫንን ለማጥፋት። ጥርጣሬ በሚፈጠርበት ጊዜ, እንደዚህ ያሉ ማውጫዎች አሁን እንደ ግጭት ምልክት ተደርጎባቸዋል;
  • በሌላ መለያ ላይ መለያ ለመጫን ሲሞክሩ ማስጠንቀቂያ ይታያል፣ ይህም ብዙውን ጊዜ በስህተት የሚሰራ እና መለያውን በተሳሳተ ተግባር ላይ ወደማስቀመጥ ሊያመራ ይችላል (ለምሳሌ እንደ “git tag -f -m “የተሻሻለ መልእክት” ያለ ግንባታ። my-tag1 my- tag2″ በአሮጌው መለያ ላይ መለያ እንዲፈጠር ያደርጋል፣ ገንቢው ግን አዲሱ መለያ በአሮጌው መለያ በተጠቆመው ቃል ላይ ይጫናል ብሎ ሲጠብቅ)።
  • ማመንጨት ለቢትማፕ ማከማቻዎች (በዲስክ ላይ የተመረኮዘ "ተደራሽነት ቢትማፕስ" መዋቅር) ነቅቷል፣ ይህም ለእያንዳንዱ ቃል ስለሚገኙ የነገሮች ስብስቦች መረጃን የሚያከማች እና የመሠረት ነገር መኖሩን በፍጥነት እንዲወስኑ ያስችልዎታል። ይህ መዋቅር የውሂብ ማግኛ ስራዎችን (git fetch) የማስፈጸሚያ ጊዜን በእጅጉ ይቀንሳል።

ምንጭ: opennet.ru

አስተያየት ያክሉ