Answers:
Git හි චෙරි තෝරා ගැනීම යන්නෙන් අදහස් කරන්නේ එක් ශාඛාවකින් බැඳීමක් තෝරාගෙන එය තවත් ශාඛාවකට යෙදීමයි.
මෙම වැනි වෙනත් ක්රම වෙනස්ව ඇත merge
හා rebase
සාමාන්යයෙන් තවත් ශාඛා මතට බොහෝ අනාචාරයේ අදාළ වන.
ඔබ බැඳී සිටින අයදුම් කිරීමට අවශ්ය ශාඛාවේ ඔබ සිටින බවට වග බලා ගන්න.
git checkout master
පහත සඳහන් දෑ ක්රියාත්මක කරන්න:
git cherry-pick <commit-hash>
සැ.යු:
ඔබ පොදු ශාඛාවකින් චෙරි තෝරා ගන්නේ නම්, ඔබ භාවිතා කිරීම ගැන සලකා බැලිය යුතුය
git cherry-pick -x <commit-hash>
මෙය ප්රමිතිගත බැඳීම් පණිවිඩයක් ජනනය කරනු ඇත. මේ ආකාරයෙන්, ඔබට (සහ ඔබේ සම සේවකයින්ට) තවමත් බැඳීමේ මූලාරම්භය පිළිබඳව සොයා බැලිය හැකි අතර අනාගතයේදී ඒකාබද්ධ කිරීමේ ගැටුම් වළක්වා ගත හැකිය.
ඔබ බැඳී ඇති සටහන් තිබේ නම් ඔවුන් චෙරි පික් අනුගමනය නොකරයි. ඒවා ද ගෙන ඒමට, ඔබ භාවිතා කළ යුත්තේ:
git notes copy <from> <to>
අමතර සබැඳි:
git cherry-pick -x <commit-hash>
. මෙය ප්රමිතිගත බැඳීම් පණිවිඩයක් ජනනය කරනු ඇත. මේ ආකාරයෙන්, ඔබට (සහ ඔබේ සම සේවකයින්ට) තවමත් බැඳීමේ මූලාරම්භය පිළිබඳව සොයා බැලිය හැකි අතර අනාගතයේදී ඒකාබද්ධ කිරීමේ ගැටුම් වළක්වා ගත හැකිය.
git notes copy <from> <to>
ඒවා ද ගෙන ඒමට ඔබ භාවිතා කළ යුතුය.
"cherry-pick commit applies the changes introduced by the named commit on the current branch"
බොහෝමයක් ppl කැපවීම වෙනස්කම් ලෙස සිතීමට නැඹුරු වේ (svn iirc මෙන්), නමුත් එසේ නොවේ, සෑම බැඳීමක්ම සම්පූර්ණ වැඩ කරන ගසට යොමු වේ. මෙම නඩුවේ මෙය වෙනසක් සිදු නොකළද, එය git ක්රියා කරන්නේ ඇයිද යන්න තේරුම් ගැනීමට එය උපකාරී වේ.
මෙම උපුටා ගැනීම ලබාගෙන ඇත්තේ; Git සමඟ අනුවාද පාලනය (ඇත්තෙන්ම විශිෂ්ට පොත, ඔබ git ගැන උනන්දුවක් දක්වන්නේ නම් එය මිලදී ගැනීමට මම ඔබව දිරිමත් කරමි)
සංස්කරණය කරන්න: මෙම පිළිතුර තවමත් හැඟීමක් ඇති බැවින්, ඒ පිළිබඳ ක්රියාදාම වීඩියෝ නිබන්ධනයේ ඉතා හොඳ එකතු කිරීමට මම කැමතියි:
යූටියුබ්: Git චෙරි-පික් හැඳින්වීම
Git cherry-pick භාවිතා කිරීම git cherry-pick commit විධානය වර්තමාන ශාඛාවේ නම් කරන ලද බැඳීම විසින් හඳුන්වා දුන් වෙනස්කම් වලට අදාළ වේ. එය නව, සුවිශේෂී කැපවීමක් හඳුන්වා දෙනු ඇත. නිශ්චිතවම කිවහොත්, git cherry-pick භාවිතා කිරීම ගබඩාවක් තුළ පවතින ඉතිහාසය වෙනස් නොකරයි; ඒ වෙනුවට එය ඉතිහාසයට එක් කරයි. වෙනසක් යෙදීමේ ක්රියාවලිය හරහා වෙනස්කම් හඳුන්වා දෙන වෙනත් Git මෙහෙයුම් වලදී මෙන්ම, ලබා දී ඇති බැඳීමෙන් සිදුවන වෙනස්කම් සම්පූර්ණයෙන් ක්රියාත්මක කිරීම සඳහා ගැටුම් නිරාකරණය කිරීමට ඔබට අවශ්ය විය හැකිය . සාමාන්යයෙන් git cherry-pick විධානය භාවිතා කරනුයේ එක් ශාඛාවකින් නිධියක් තුළ ඇති විශේෂිත කොමිස් වෙනත් ශාඛාවකට හඳුන්වා දීම සඳහා ය. පොදු භාවිතයක් වන්නේ නඩත්තු ශාඛාවක සිට සංවර්ධන ශාඛාවකට ඉදිරියට හෝ පසු වරාය කිරීම ය.
$ git checkout rel_2.3
$ git cherry-pick dev~2 # commit F, above
කලින්:
අනතුරුව:
Git හි චෙරි තෝරාගැනීම සැලසුම් කර ඇත්තේ එක් ශාඛාවක සිට තවත් ශාඛාවකට යම් කැපවීමක් යෙදීම සඳහා ය. ඔබ උදා නම් එය කළ හැකිය. වැරැද්දක් කර වැරදි ශාඛාවක් බවට වෙනසක් සිදු කළ නමුත් මුළු ශාඛාවම ඒකාබද්ධ කිරීමට අවශ්ය නැත. ඔබට උදා. බැඳීම ආපසු හරවා වෙනත් ශාඛාවකට චෙරි ගන්න.
එය භාවිතා කිරීමට, ඔබට අවශ්ය වන්නේ git cherry-pick hash
කොතැනද යන්නයිhash
වන්නේ, වෙනත් ශාඛාවකින් බැඳුම්කර හෑෂ් යන්නයි.
සම්පූර්ණ ක්රියා පටිපාටිය සඳහා බලන්න: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html
ඔබට චෙරි පික් අවශ්ය වූ විට තත්වය පිළිබඳ කෙටි උදාහරණයක්
පහත දැක්වෙන තත්වය සලකා බලන්න. ඔබට අතු දෙකක් තිබේ.
a) release1 - මෙම ශාඛාව ඔබේ ගනුදෙනුකරු වෙත යමින් පවතී, නමුත් තවමත් දෝෂ කිහිපයක් නිවැරදි කර ඇත.
b) මාස්ටර් - ක්ලැසික් මාස්ටර් ශාඛාව, ඔබට නිදසුනක් ලෙස මුදාහැරීම 2 සඳහා ක්රියාකාරීත්වය එක් කළ හැකිය.
දැන් : ඔබ නිකුතුව 1 හි යමක් නිවැරදි කරයි. ඇත්ත වශයෙන්ම ඔබට මෙම විසඳුම මාස්ටර් තුළද අවශ්ය වේ. එය චෙරි අච්චාරු දැමීම සඳහා සාමාන්ය භාවිත අවස්ථාවකි. එබැවින් මෙම තත්වය තුළ චෙරි පික් යනු ඔබ මුදාහැරීමේ 1 ශාඛාවෙන් බැඳීමක් ලබාගෙන එය ප්රධාන ශාඛාවට ඇතුළත් කිරීමයි .
චෙරි-පික් යනු Git ලක්ෂණයකි. යමෙකුට එක් ශාඛාවක ඉලක්කගත ශාඛාවකට නිශ්චිත කැපවීම් කිරීමට අවශ්ය නම්, චෙරි-පික් භාවිතා වේ.
git cherry-pick පියවර පහත පරිදි වේ.
git cherry-pick <commit id>
මෙහිදී කැපවීමේ හැඳුනුම්පත යනු වෙනත් ශාඛාවක ක්රියාකාරකම් හැඳුනුම්පතකි.
git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
Https://git-scm.com/docs/git-cherry-pick වෙත පිවිසෙන්න
මම චෙරි-පික් කරන දේ පියවරෙන් පියවර නිදර්ශන පිළියෙළ කළෙමි - සහ මෙම නිදර්ශනවල සජීවිකරණය (අවසානයට ආසන්නව).
සටහන:
මෙම කැපවෙන්නේ L'
වේ මතය පරිශීලක ස්ථානය (සිදු = සැණරුව) සිට එම සිදු පිළිබඳ නිශ්චිත පිටපතක්L
.
තාක්ෂණික (අභ්යන්තර), එය ය , නව වෙනස් සිදු (උදා: නිසා L
වෙත අවධානය යොමුකළ අඩංගු K
(එහි මව් ලෙස), අතර L'
සඳහා අවධානය යොමුකළ අඩංගු E
).
චෙරි පිංතූරයක් නැවත ලබා ගැනීමකට සමානදැයි ඔබට සිතිය හැකිය, නැතහොත් එය කළමනාකරණය කිරීමක් ලෙස කළමනාකරණය වේ. මෙයින්, මම අදහස් කරන්නේ එය දැනට පවතින කැපවීමක් ගෙන එය නැවත ලබා ගැනීම, ආරම්භක ස්ථානය ලෙස, ඔබ දැනට සිටින ශාඛාවේ ප්රධානියා ලෙස ය.
A rebase
යනු මවුපියන් X ඇති බැඳීමක් ගෙන එම බැඳීම සැබවින්ම මවුපිය Y කෙනෙකු මෙන් පුනර්ජනනය කරයි, මෙය හරියටම acherry-pick
කරන්නේ එයයි.
චෙරි පික් යනු ඔබ කොමිස් තෝරා ගන්නා ආකාරය පිළිබඳ වැඩි යමක් වේ. pull
(ප්රතිනිර්මාණය කිරීම) සමඟ , ඔබේ ශාඛාවට ඇදගෙන ඇති දේට ඉහළින් git මඟින් ඔබේ දේශීය බැඳීම් ප්රතිනිර්මාණය කරයි.cherry-pick
ඔබ පැහැදිලිවම යම් යම් කැපවීම් (ය) තෝරාගෙන එය වත්මන් ශාඛාවට ඉහළින් (ඒවා) ප්රතිනිර්මාණය කරන්න.
එබැවින් ඔබ එය කරන ආකාරය වෙනස් වේ, නමුත් කබාය යටතේ ඒවා බොහෝ සමාන මෙහෙයුම් වේ - කොමිට්වල පුනර්ජනනය.
cherry-pick
ඉලක්ක ශාඛාව පසුව ප්රභව ශාඛාවට නැවත ඒකාබද්ධ කළ විට එය හැසිරෙන්නේ මන්ද යන්න එයින් ගම්ය වේ. ස්තූතියි සර්.
එය පිටපත් කිරීම (කොහේ සිට) සහ අලවන්න (කොහේ හෝ තැනකට) වැනි ය, නමුත් නිශ්චිත කොමිස් සඳහා.
ඔබට උණුසුම් විසඳුමක් කිරීමට අවශ්ය නම්, උදාහරණයක් ලෙස, ඔබට cherry-pick
විශේෂාංගය භාවිතා කළ හැකිය .
ඔබ cherry-pick
සංවර්ධන ශාඛාවක කරන්න, merge
එය නිදහස් කිරීමේ ශාඛාවකට බැඳී සිටින්න . ඒ හා සමානව, cherry-pick
නිදහස් කිරීමේ ශාඛාවක සිට මාස්ටර් දක්වා කරන්න. වොයිලා
ඔබ ව්යාපෘතියක් සඳහා සංවර්ධකයින් කණ්ඩායමක් සමඟ වැඩ කරන විට, git ශාඛා ගණනාවක් අතර වෙනස්කම් කළමනාකරණය කිරීම සංකීර්ණ කාර්යයක් බවට පත්විය හැකිය. සමහර විට ඔබට සම්පූර්ණ ශාඛාවක්ම වෙනත් ශාඛාවකට ඒකාබද්ධ කිරීමට අවශ්ය නොවන අතර විශේෂිත කොමිස් එකක් හෝ දෙකක් පමණක් තෝරා ගත යුතුය. මෙම ක්රියාවලිය 'චෙරි අච්චාරු' ලෙස හැඳින්වේ.
චෙරි අච්චාරු කිරීම පිළිබඳ විශිෂ්ට ලිපියක් හමු විය, ගැඹුරු විස්තර සඳහා එය පරීක්ෂා කරන්න: https://www.previousnext.com.au/blog/intro-cherry-picking-git
එය ඔබගේ වර්තමාන ශාඛාවට විශේෂ කැපවීමක් අදාළ වේ.
මෙයින් අදහස් වන්නේ :
උදා: කැපවීම සලකා බලන්න
added newFileA
modified main:
+ import './newFileA'
කැපවීම බී
added newFileB
modified main:
+ import './newFileB'
ඔබ වෙනත් ශාඛාවකට චෙරි-පික් කැප කරන්නේ නම් , ඔබ අවසන් වන්නේ:
/newFileB
/main :
import './newFileA'
import './newFileB'
සිට බී සිදු අඩංගු newFileB හා ප්රධාන , නමුත් කිසිදු newFileA දෝෂය නිසා,,, ඒ ගැනත් සමඟ භාවිතා.
ඔබට කැපවීමකින් තොරව ඒකාබද්ධ වීමට අවශ්ය නම් ඔබට මෙම විධානය භාවිතා කළ හැකිය
git cherry-pick master~2 master~0
ඉහත විධානය මඟින් 1 සිට 3 දක්වා මාස්ටර්ගේ අවසාන කොමිස් තුන ඒකාබද්ධ කෙරේ
ඔබට තනි කැපවීමක් සඳහා මෙය කිරීමට අවශ්ය නම් අවසාන විකල්පය ඉවත් කරන්න
git cherry-pick master~2
මේ ආකාරයෙන් ඔබ ස්වාමියාගේ අවසානයේ සිට 3 වන බැඳීම ඒකාබද්ධ කරනු ඇත.
නිල ලියකියවිලි වලින් උපුටා ගැනීම:
පවත්නා කොමිස් එකක් හෝ වැඩි ගණනක් ලබා දී, එක් එක් හඳුන්වා දෙන වෙනස යොදන්න, එක් එක් සඳහා නව බැඳීමක් සටහන් කරන්න. මේ සඳහා ඔබේ වැඩ කරන ගස පිරිසිදු විය යුතුය (HEAD කැපවීමෙන් කිසිදු වෙනස් කිරීමක් සිදු නොවේ).
වෙනසක් යෙදිය යුතු ආකාරය පැහැදිලි නැති විට, පහත සඳහන් දේ සිදු වේ:
වර්තමාන ශාඛාව සහ HEAD දර්ශකය සාර්ථකව සිදු කරන ලද අවසාන කැපවීමේ රැඳී සිටීම.
CHERRY_PICK_HEAD ref එක වෙනස් කිරීමට හඳුන්වා දුන් බැඳීම වෙත යොමු කිරීමට සකසා ඇත.
වෙනස පිරිසිදුව යොදන මාර්ග දර්ශක ගොනුවේ සහ ඔබේ වැඩ කරන ගසෙහි යාවත්කාලීන වේ.
ගැටුම් සහිත මාර්ග සඳහා, දර්ශක ගොනුව අනුවාද තුනක් දක්වා වාර්තා කරයි, git-merge හි "TRUE MERGE" කොටසේ විස්තර කර ඇත. වැඩ කරන ගස් ලිපිගොනු වල සුපුරුදු ගැටුම් සලකුණු කරුවන් විසින් වරහන් කරන ලද ගැටුම පිළිබඳ විස්තරයක් ඇතුළත් වේ <<<<<<< සහ >>>>>>>.
වෙනත් වෙනස් කිරීම් සිදු නොකෙරේ.