මම Git සමඟ සෙල්ලම් කිරීමට පටන් ගෙන ඇති අතර "ඉහළට" සහ "පහළට" යන යෙදුම් හමු වී ඇත. මම මේවා මීට පෙර දැක ඇති නමුත් ඒවා සම්පූර්ණයෙන් තේරුම් ගෙන නැත. SCMs ( මෘදුකාංග වින්යාස කළමනාකරණ මෙවලම්) සහ ප්රභව කේත සන්දර්භය තුළ මෙම නියමයන් අදහස් කරන්නේ කුමක්ද?
මම Git සමඟ සෙල්ලම් කිරීමට පටන් ගෙන ඇති අතර "ඉහළට" සහ "පහළට" යන යෙදුම් හමු වී ඇත. මම මේවා මීට පෙර දැක ඇති නමුත් ඒවා සම්පූර්ණයෙන් තේරුම් ගෙන නැත. SCMs ( මෘදුකාංග වින්යාස කළමනාකරණ මෙවලම්) සහ ප්රභව කේත සන්දර්භය තුළ මෙම නියමයන් අදහස් කරන්නේ කුමක්ද?
Answers:
ප්රභව පාලනය සම්බන්ධයෙන් ගත් කල, ඔබ ගබඩාවකින් පිටපත් කරන විට (ක්ලෝන, පිටවීම් යනාදිය) ඔබ “ පහළට ” පැමිණේ. තොරතුරු ඔබට "පහළට" ගලා ආවේය.
ඔබ වෙනස්කම් සිදු කරන විට, ඔබට සාමාන්යයෙන් ඒවා " උඩුමහලට " ආපසු යැවීමට අවශ්ය වන අතර එමඟින් ඔවුන් එම ගබඩාවට ඇතුල් කරයි, එවිට එකම ප්රභවයකින් ඇද ගන්නා සෑම කෙනෙකුම එකම වෙනස්කම් සමඟ ක්රියා කරයි. මෙය බොහෝ දුරට මූලාශ්ර පාලනයේ තාක්ෂණික අවශ්යතාවයකට වඩා සෑම කෙනෙකුටම තම කාර්යයන් සම්බන්ධීකරණය කළ හැකි ආකාරය පිළිබඳ සමාජ ප්රශ්නයක් වේ. ඔබේ වෙනස්වීම් ප්රධාන ව්යාපෘතියට ඇතුළත් කර ගැනීමට ඔබට අවශ්යය, එවිට ඔබ විවිධාකාරයේ සංවර්ධන මාර්ග සොයා නොගනී.
සමහර විට ඔබ පැකේජය ගැන කියවනු ඇත හෝ කළමනාකරුවන් (ජනතාව, මෙවලම නොවේ) "උඩුමහලට" වෙනස්කම් ඉදිරිපත් කිරීම ගැන කතා කරයි. සාමාන්යයෙන් එයින් අදහස් කරන්නේ ඔවුන්ගේ පද්ධතියට පැකේජයක් නිර්මාණය කිරීමට හැකි වන පරිදි මුල් ප්රභවයන් සකස් කළ යුතු බවයි. එම වෙනස්කම් නොකඩවා කරගෙන යාමට ඔවුන්ට අවශ්ය නැත, එබැවින් ඔවුන් ඒවා මුල් ප්රභවයට “ඉහළට” යවන්නේ නම්, ඊළඟ නිකුතුවේදී එකම ප්රශ්නය සමඟ කටයුතු කිරීමට ඔවුන්ට අවශ්ය නොවිය යුතුය.
-u
වගේ git push --set-upstream origin master
එය නොවේ නම් තාක්ෂණික අවශ්යතාවය ? අපට හැකි push -u origin
හෝ නැතිව push origin
එය තාක්ෂණික අවශ්යතාවයකි. නමුත් වෙනස කුමක්ද?
ඔබ git tag
මෑන් පිටුවේ කියවන විට :
Git හි එක් වැදගත් අංගයක් වන්නේ එය බෙදා හැරීම වන අතර බොහෝ දුරට බෙදා හැරීම යන්නෙන් අදහස් වන්නේ පද්ධතිය තුළ ආවේනික “උඩු යටිකුරු” හෝ “පහළට” නොමැති බවයි.
, එයින් සරලවම අදහස් කරන්නේ නිරපේක්ෂ උඩු යටිකුරු රෙපෝ හෝ පහළට රිපෝ නොමැති බවයි.
එම අදහස් සෑම විටම ගබඩාවන් දෙකක් අතර සාපේක්ෂ වන අතර දත්ත ගලා යන ආකාරය මත රඳා පවතී:
"YourRepo" දුරස්ථ එකක් ලෙස "වෙනත් රෙපෝ" ප්රකාශයට පත් කර ඇත්නම් :
"සිට" සහ "සඳහා" සටහන් කරන්න: ඔබ "පහළට" පමණක් නොවේ, ඔබ "පහළට / සඳහා ", එබැවින් සාපේක්ෂ අංගය.
DVCS (බෙදාහැරුණු අනුවාද පාලන පද්ධතිය) විකෘතිය නම්: ඔබ ප්රකාශ කර ඇති දුරස්ථ ගබඩාවලට සාපේක්ෂව ඔබේම ගබඩාව හැරුණු විට ඇත්ත වශයෙන්ම පහළට යනු කුමක්දැයි ඔබට අදහසක් නැත.
මූලික වශයෙන්:
" දත්ත ප්රවාහය " අනුව, ඔබේ ගබඩාව උඩුමහලේ ගබඩාවලින් ("සිට අදින්න") එන ප්රවාහයක පතුලේ ("පහළට") ඇති අතර නැවත (එකම හෝ වෙනත්) උඩුමහල් ගබඩාවලට ("තල්ලු කරන්න") ).
" git-rebase
පිටුව නැවත ලබා ගැනීම" යන ඡේදය සමඟ ඔබට මෑන් පිටුවේ නිදර්ශනයක් දැකිය හැකිය :
එහි අර්ථය වන්නේ ඔබ ප්රතිප්රහාරයක් සිදු වූ "උඩුමහලේ" ගබඩාවකින් ඇද ගන්නා අතර , ඔබ ("පහළට" රෙපෝ) ප්රතිවිපාක සමඟ සිරවී සිටින බවයි (අනුපිටපත් ගොඩක්, මන්ද යත්, ශාඛාව නැවත ප්රතිස්ථාපනය කළ නිසා ඔබ එම ශාඛාවේම ප්රතිනිර්මාණය කරන ලදි. දේශීයව ඇත).
එය නරක ය, මන්ද යත් එක් "උඩුමහලේ" ගබඩාවක් සඳහා, බොහෝ පහළ ධාරා ගබඩාවන් තිබිය හැකිය (එනම්, නැවත උත්පාදනය කරන ලද ශාඛාව සමඟ උඩුමහලේ සිට අදින රෙපෝස්), ඒ සියල්ලටම අනුපිටපත් කොමිස් සමඟ කටයුතු කිරීමට හැකියාවක් ඇත.
නැවතත්, “දත්ත ප්රවාහය” ප්රතිසමයක් සමඟ, ඩී.වී.සී.එස් තුළ, එක් නරක විධානයක් “උඩුමහලට ” පහළට “ රැළි ආචරණයක් ” ඇති කළ හැකිය.
සටහන: මෙය දත්ත වලට පමණක් සීමා නොවේ. Git විධානයන් ("පෝසිලේන්" වැනි) බොහෝ විට අභ්යන්තරව වෙනත් git විධානයන් ("ජලනල කාර්මික") ලෙස හඳුන්වන බැවින්
එය පරාමිතීන් සඳහා ද අදාළ වේ . බලන්න rev-parse
man පිටුව :
බොහෝ git porcelainish විධානයන් කොඩි (එනම් ඉරකින් ආරම්භ වන පරාමිතීන්
-
) සහgit rev-list
අභ්යන්තරව භාවිතා කරන යටින් පවතින විධානය සඳහා වන පරාමිතීන් සහ ඔවුන් පහළින් භාවිතා කරන අනෙක් විධානයන් සඳහා ධජ සහ පරාමිතීන්git rev-list
මිශ්ර කරයි . ඔවුන් අතර වෙනස හඳුනා ගැනීමට මෙම විධානය භාවිතා කරයි.
උඩු යටිකුරු යන යෙදුමට GIT මෙවලම් කට්ටලයට අදාළ වන පරිදි නිසැක අර්ථයක් ඇත, විශේෂයෙන් ලුහුබැඳීමට සාපේක්ෂව
උදාහරණයක් වශයෙන් :
$git rev-list --count --left-right "@{upstream}"...HEAD >4 12
මෙම ප්රාදේශීය ශාඛාව සඳහා දැනට දුරස්ථ ශාඛාව ලුහුබඳින ( ඇත්නම් ) සාපේක්ෂව ඔබේ වර්තමාන වැඩ කරන ශාඛාවේ පිටුපස (වමේ) සහ ඉදිරියෙන් (දකුණේ) කළ යුතු ගණන මුද්රණය කරනු ඇත . එය වෙනත් ආකාරයකින් වැරදි පණිවිඩයක් මුද්රණය කරයි:
>error: No upstream branch found for ''
origin
(ඔබේ දෙබලක ඇති repo on github) සහ upstream
(ඔබ විසින් ගිතබ්හි ඇති repo). ඒවා එකිනෙකට හුවමාරු කළ හැකි නම් පමණි, ඒවා හඳුනා ගන්නේ 'git @ ...' url පමණි.ඔබේ
.git/config
කියවීම්:[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = git@github.com:myusername/reponame.git [remote "upstream"] fetch = +refs/heads/*:refs/remotes/upstream/* url = git@github.com:authorname/reponame.git
එය 'ශාඛාව (අවශ්ය නම් පමණක්) මත ' දුරස්ථ කොට, '' හඹායෑම් වන, '' දැනට පවතින ශාඛාව ' ඔබගේ ' දේශීය ගබඩාව ' .
එය ඔබ තැනිතලාවක් නිකුත් කරන සෑම අවස්ථාවකම
git fetch
/git pull
තර්කයකින් තොරව ලබා ගන්නා / ඇද ගන්නා ශාඛාවයි .
දුරස්ථ ශාඛා සම්භවය / මාස්ටර් ඔබ පරීක්ෂා කළ දේශීය ප්රධාන ශාඛාවේ ලුහුබැඳීමේ ශාඛාව ලෙස සැකසීමට අවශ්ය යැයි කියමු. නිකුතුව:
$ git branch --set-upstream master origin/master > Branch master set up to track remote branch master from origin.
මෙය පරාමිති 2 ක් එකතු කරයි
.git/config
:[branch "master"] remote = origin merge = refs/heads/master
දැන් උත්සාහ කරන්න ('උඩුමහලේ' දුරස්ථයට 'dev' ශාඛාවක් තිබේ නම්)
$ git branch --set-upstream master upstream/dev > Branch master set up to track remote branch dev from upstream.
.git/config
දැන් කියවන්නේ:[branch "master"] remote = upstream merge = refs/heads/dev
-u --set-upstream
යාවත්කාලීන හෝ සාර්ථකව තල්ලු කර ඇති සෑම ශාඛාවක් සඳහාම , තර්ක-අඩු git-pull (1) සහ වෙනත් විධානයන් භාවිතා කරන උඩුමහලේ (ලුහුබැඳීමේ) යොමුව එක් කරන්න . වැඩි විස්තර සඳහා,
branch.<name>.merge
git-config (1) බලන්න.branch.<name>.merge
branch.<name>.remote
දී ඇති ශාඛාව සඳහා උඩු මහලේ ශාඛාව සමඟ අර්ථ දක්වයි . එය git fetch / git pull / git rebase කියන්නේ කුමන ශාඛාව ඒකාබද්ධ කළ යුතුද යන්න සහ git push වලටද බලපෑම් කළ හැකිය (push.default බලන්න). \ (...)branch.<name>.remote
ශාඛාවේ <නම> ඇති විට, එය git fetch සහ git push වලට කියන්නේ කුමන දුරස්ථය ලබා ගත යුතුද / තල්ලු කළ යුතුද යන්නයි. දුරස්ථයක් වින්යාස කර නොමැති නම් එය ආරම්භයට පෙරනිමිය. ඔබ කිසිදු ශාඛාවක නොමැති නම් සම්භවය ද භාවිතා වේ.
දිහා git-config(1)
අත්පොත පිටුව
git config --global push.default upstream git config --global push.default tracking (deprecated)
මෙය ඔබ තවමත් තල්ලු කිරීමට සූදානම් නැති අතු වලට අහම්බෙන් තල්ලු වීම වැළැක්වීමයි.
git branch --help
2018 වන විට උපුටා ගැනීම :As this option had confusing syntax, it is no longer supported. Please use --track or --set-upstream-to instead.
එය අවිධිමත් පාරිභාෂිතයකි.
Git සම්බන්ධයෙන් ගත් කල, අනෙක් සෑම ගබඩාවක්ම දුරස්ථ වේ.
පොදුවේ ගත් කල, උඩුගං බලා යනු ඔබ ක්ලෝන කළ ස්ථානයයි (ආරම්භය). ඩවුන්ස්ට්රීම් යනු ඔබේ වැඩ වෙනත් කෘති සමඟ ඒකාබද්ධ කරන ඕනෑම ව්යාපෘතියකි.
නියමයන් Git ගබඩාවලට පමණක් සීමා නොවේ.
උදාහරණයක් ලෙස, උබුන්ටු යනු ඩේබියන් ව්යුත්පන්නයකි, එබැවින් ඩෙබියන් උබුන්ටු සඳහා ඉහළට.
අහෝ, මෙහි ඇති අනෙක් පිළිතුරු නොලැබෙන "උඩුමහලේ" තවත් භාවිතයක් ඇත, එනම්, රෙපෝවක් තුළ සිදුකරන දෙමාපිය-ළමා සම්බන්ධතාවය වෙත යොමු කිරීම. Pro Git පොතේ ස්කොට් චකොන් විශේෂයෙන් මේ සඳහා නැඹුරු වන අතර ප්රති results ල අවාසනාවන්ත ය. මේ කතා කිරීමේ ක්රමය අනුකරණය නොකරන්න.
නිදසුනක් වශයෙන්, ඒකාබද්ධ කිරීමක් ගැන ඔහු පවසන්නේ වේගයෙන් ඉදිරියට යාම නිසා මෙය සිදු වන බවයි
ඔබ ඒකාබද්ධ කළ ශාඛාව විසින් පෙන්වා දී ඇති කැපවීම ඔබ කරන කැපවීමට කෙලින්ම ඉහළට
ඔහුට පැවසීමට අවශ්ය වන්නේ කැපවීම A හි එකම දරුවාගේ එකම දරුවාගේ එකම දරුවා බවයි ... එබැවින් B A සමඟ ඒකාබද්ධ කිරීම සඳහා B කැපවීමට යොමු කිරීම සඳහා A යොමු කිරීම ප්රමාණවත් වේ. ඇයි මෙම දිශාව "පහළට" යන්නට වඩා "උඩු යටිකුරු කිරීම" ලෙස හැඳින්විය යුතුය, නැතහොත් එවැනි පිරිසිදු සරල රේඛීය ප්රස්ථාරයක ජ්යාමිතිය "කෙලින්ම ඉහළට" විස්තර කළ යුත්තේ ඇයි, සම්පූර්ණයෙන්ම අපැහැදිලි සහ බොහෝ විට අත්තනෝමතික ය. (සඳහා මිනිසා පිටුවgit-merge
"වර්තමාන ශාඛා ප්රධානියා නම් කරන ලද කැපවීමේ මුතුන් මිත්තෙකු" යැයි පවසන විට මෙම සම්බන්ධතාවය පැහැදිලි වඩා හොඳ කාර්යයක් ඉටු කරයි. චකොන් පැවසිය යුතුව තිබුණේ එයයි.)
ඇත්ත වශයෙන්ම, මකාදැමූ කැපවීමක සියලු ළමා ක්රියාකාරකම් නැවත ලිවීම ගැන කතා කරන විට, එකම දෙයම අර්ථ දැක්වීම සඳහා චකොන් පසුව “පහළට” යන බව පෙනේ.
ඔබගේ ගොට් ඉතිහාසයෙන් මෙම ගොනුව සම්පූර්ණයෙන් ඉවත් කිරීම සඳහා 6df76 සිට පහළට ඔබ සියලු කොමිස් නැවත ලිවිය යුතුය
මූලික වශයෙන් කාලයත් සමඟ සිදුකරන කොමිෂන් ඉතිහාසය ගැන සඳහන් කිරීමේදී "උඩු යටිකුරු කිරීම" සහ "පහළට" යන්නෙන් ඔහු අදහස් කරන්නේ කුමක්ද යන්න පිළිබඳ පැහැදිලි අදහසක් ඔහුට නොමැති බව පෙනේ. මෙම භාවිතය අවිධිමත් ය, එසේ නම්, එය ව්යාකූල වන බැවින් ධෛර්යමත් නොකෙරේ.
සෑම කැපවීමකටම (එක් අයෙකු හැර) අවම වශයෙන් එක් දෙමාපියෙකු සිටින බවත්, දෙමව්පියන්ගේ දෙමව්පියන් මේ අනුව මුතුන් මිත්තන් බවත් පැහැදිලිය. අනෙක් පැත්තෙන්, කොමිට් වලට දරුවන් සහ පැවත එන්නන් සිටී. එය පිළිගත් පාරිභාෂිතය වන අතර ප්රස්ථාරයේ දිශානතිය නිසැකව විස්තර කරයි, එබැවින් රෙපෝවක ප්රස්ථාර ජ්යාමිතිය තුළ කොමිස් එකිනෙක හා සම්බන්ධ වන්නේ කෙසේද යන්න විස්තර කිරීමට ඔබට අවශ්ය විට එය කතා කිරීමේ ක්රමයයි. මෙම තත්වය තුළ "උඩුමහල" හෝ "පහළට" ලිහිල්ව භාවිතා නොකරන්න.
[අමතර සටහන: මා ඉහත සඳහන් කළ පළමු චකොන් වාක්යය සහ git-merge
මෑන් පිටුව අතර ඇති සම්බන්ධය ගැන මම කල්පනා කර ඇති අතර , කලින් සඳහන් කර ඇත්තේ දෙවැන්න පිළිබඳ වැරදි වැටහීමක් මත විය හැකිය. "උඩුමහලේ" භාවිතය නීත්යානුකූල වන තත්වයක් විස්තර කිරීමට මෑන් පිටුව ඉදිරියට යයි: වේගයෙන් ඉදිරියට යැවීම බොහෝ විට සිදු වන්නේ "ඔබ උඩු මහලේ ගබඩාවක් ලුහුබඳින විට, ඔබ දේශීය වෙනස්කම් කිසිවක් කර නොමැති අතර දැන් ඔබට නවකයෙකුට යාවත්කාලීන කිරීමට අවශ්යය ඉහළට සංශෝධනය. ” සමහර විට චකෝන් "උඩුමහල" භාවිතා කළේ ඔහු එය මෙහි පිටුවේ පිටුවේ දුටු බැවිනි. නමුත් මෑන් පිටුවේ දුරස්ථ ගබඩාවක් තිබේ; දේශීයව සාදන ලද ශාඛා කිහිපයක් පමණක් වේගයෙන් ඉදිරියට යැවීම පිළිබඳ චැකෝන්ගේ උදාහරණයේ දුරස්ථ ගබඩාවක් නොමැත.]
<branch>
.
git-rebase
බැඳීම් යොමු කිරීමක් එහි "උඩුමහල" ලෙස හඳුන්වන්නේ ඇයිද යන්න මුළුමනින්ම ව්යාකූල වූ නිසාය (ඇත්ත වශයෙන්ම, මෙම පාරිභාෂිතය මීට පෙර මා දැක නැති නිසා මා ගැන සැක පහළ විය). දේවල් නිරවුල් කිරීම ගැන @outis & att මැට්ට ස්තූතියි!