Git ප්රලේඛනය වැනි දේ පවසන බව ඔබට පෙනේ
ශාඛාව සම්පූර්ණයෙන්ම HEAD සමඟ ඒකාබද්ධ කළ යුතුය.
නමුත් Git යනු HEAD
කුමක්ද?
Git ප්රලේඛනය වැනි දේ පවසන බව ඔබට පෙනේ
ශාඛාව සම්පූර්ණයෙන්ම HEAD සමඟ ඒකාබද්ධ කළ යුතුය.
නමුත් Git යනු HEAD
කුමක්ද?
Answers:
ඔබට HEAD "වත්මන් ශාඛාව" ලෙස සිතිය හැකිය. ඔබ ශාඛා සමඟ මාරු git checkout
වන විට, නව ශාඛාවේ කෙළවරට යොමු කිරීම සඳහා HEAD සංශෝධනය වෙනස් වේ.
කිරීමෙන් HEAD පෙන්වා දෙන දේ ඔබට දැක ගත හැකිය:
cat .git/HEAD
මගේ නඩුවේදී, ප්රතිදානය:
$ cat .git/HEAD
ref: refs/heads/master
ශාඛා නාමයක් හා සම්බන්ධ නොවන විශේෂිත සංශෝධනයක් වෙත HEAD වෙත යොමු විය හැකිය. මෙම තත්වය වෙන්වූ හෙඩ් ලෙස හැඳින්වේ .
වෙනත් පුද්ගලයින් උපුටා දැක්වීමට :
හිසක් යනු හුදෙක් කැපවූ වස්තුවකට යොමු දැක්වීමකි. සෑම හිසකටම නමක් ඇත (ශාඛා නම හෝ ටැග් නම ආදිය). පෙරනිමියෙන්, මාස්ටර් නමින් හැඳින්වෙන සෑම ගබඩාවකම හිසක් ඇත. නිධියකට ඕනෑම හිස් ගණනක් අඩංගු විය හැකිය. ඕනෑම වේලාවක එක් හිසක් “වත්මන් හිස” ලෙස තෝරා ගනු ලැබේ. මෙම හිස HEAD වෙත අන්වර්ථ කර ඇත, සෑම විටම අගනගරවල ".
මෙම වෙනස සැලකිල්ලට ගන්න: “හිස” (සිම්පල්) යනු ගබඩාවේ නම් කර ඇති ඕනෑම ශීර්ෂයක් ගැන ය; “හෙඩ්” (ලොකු අකුර) යන්නෙන් අදහස් කරන්නේ දැනට ක්රියාකාරී හිසට පමණි. මෙම වෙනස Git ප්රලේඛනයේ නිතර භාවිතා වේ.
Git හි අභ්යන්තර ක්රියාකාරිත්වය ඉක්මනින් ආවරණය කරන තවත් හොඳ ප්රභවයක් (සහ ඒ අනුව හිස් / HEAD පිළිබඳ වඩා හොඳ අවබෝධයක්) මෙහි සොයාගත හැකිය . යොමු කිරීම් (ref :) හෝ හිස් හෝ අතු පශ්චාත්-සටහන් සටහන් ලෙස සැලකිය හැකිය. සාමාන්යයෙන් ඔවුන් අනාචාරයේ මාලාවක් අග යොමු, නමුත් ඔවුන් සමග පමණ මාරු කල හැකි git checkout
හෝ git reset
ආදිය
git checkout HEAD~2
), එය දන්නා හිසකගේ බැඳීම් හැඳුනුම්පත නොවේ. වඩාත් සවිස්තරාත්මක පැහැදිලි කිරීමක් සඳහා eagain.net/articles/git-for-computer-scientists හි ලිපිය බලන්න .
git revert
අත්තක් කෙළවරට නොපැමිණීම සඳහා හොඳ උදාහරණයක් නොවේ, මන්ද යත් git revert
නව කොමිස් කිහිපයක් නිර්මාණය කර වත්මන් ශාඛාව (නව) කෙළවරේ තබන බැවිනි.
commit
s, reset
ආදිය, ගේ
හෙඩ් යනු ඔබ දැනට සිටින දේශීය ශාඛාවට යොමු කරන විශේෂ දර්ශකයක් පමණි.
සිට Pro Git පොත, පරිච්ඡේදය 3.1 Git අතු - ඉතා කෙටියෙන් කියනවා නම් ශාඛා , කොටසේ නව ශාඛාව නිර්මාණය :
ඔබ නව ශාඛාවක් නිර්මාණය කළහොත් කුමක් සිදුවේද? හොඳයි, එසේ කිරීමෙන් ඔබට එහා මෙහා යාමට නව දර්ශකයක් නිර්මාණය වේ. ඔබ නව පරීක්ෂණයක් නමින් නව ශාඛාවක් නිර්මාණය කරන බව කියමු. ඔබ මෙය කරන්නේ git branch විධානයෙනි:
$ git branch testing
මෙය ඔබ දැනට සිටින කැපවීමෙන්ම නව දර්ශකයක් නිර්මාණය කරයි
ඔබ දැනට සිටින්නේ කුමන ශාඛාවදැයි Git දන්නේ කෙසේද? එය HEAD නමින් විශේෂ දර්ශකයක් තබා ගනී. උපසිරැසි හෝ සීවීඑස් වැනි ඔබ භාවිතා කළ හැකි වෙනත් VCS වල HEAD සංකල්පයට වඩා මෙය බොහෝ වෙනස් බව සලකන්න. Git හි, මෙය ඔබ දැනට සිටින දේශීය ශාඛාවට යොමු කිරීමකි. මෙම අවස්ථාවේ දී, ඔබ තවමත් ස්වාමියා ය. Git ශාඛා විධානය මඟින් නව ශාඛාවක් පමණක් නිර්මාණය කරන ලදි - එය එම ශාඛාවට මාරු නොවීය.
34ac2
ඉහත උදාහරණයෙන් ඔබ පිටව ගියහොත් , දැන් හෙඩ් එම කැපවීමට යොමු වන අතර එය වෙන්වූ හෙඩ් ලෙස හැඳින්වේ. මෙම තත්වය තුළ, ඔබට වෙනස්කම්, අත්හදා බැලීම් සහ වෙනස්කම් සිදු කළ හැකිය, නමුත් ඔබ වෙනත් ශාඛාවක් පරික්ෂා කිරීමෙන් පසු, ඔබ නව ශාඛාවක් නිර්මාණය නොකරන්නේ නම්, ඔබගේ සියලු වෙනස්කම් ඔබට අහිමි වනු ඇත.
git log
දෙයක් ලබා ගත්තා commit ad0265... HEAD -> foo ...
නම් එයින් අදහස් වන්නේ foo
ශාඛාව හැඳුනුම්පත කිරීම සඳහා යොමු කිරීමක් බවයි ad0265
. පෙළ යොමු foo
කිරීම පරීක්ෂා කිරීම වෙන් කළ හිසක් නොවේ. බැඳීම් හැඳුනුම්පත ad0265
පිරික්සීමෙන් හිස වෙන් වී යනු ඇත. සමහර විට ඔබ සන්නිවේදනය කරන දේවල යම් සියුම් බවක් මට මග හැරී ඇත. මෙම පා wall යේ බිත්තිය මට අහිමි වූ ස්ථානය සොයා ගැනීමට උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි.
මම මෙම අර්ථ දැක්වීම ගිතුබ් සංවර්ධක ස්කොට් චකොන්ගෙන් නිර්දේශ කරමි [ වීඩියෝ යොමු කිරීම ]:
හිස යනු ඔබේ වර්තමාන ශාඛාවයි. එය සංකේතාත්මක යොමු කිරීමකි. එය ශාඛාවකට යොමු කිරීමකි. ඔබට සැමවිටම HEAD ඇත, නමුත් HEAD මෙම අනෙක් දර්ශකයන්ගෙන් එකක් වෙත යොමු වනු ඇත, ඔබ සිටින ශාඛා වලින් එකකට. එය ඔබගේ ඊළඟ කැපවීමේ මවුපියයි. එය ඔබගේ වැඩ කරන නාමාවලිය වෙත අවසන් වරට පරීක්ෂා කළ දේ විය යුතුය ... මෙය ඔබගේ වැඩ කරන නාමාවලිය කුමක් දැයි අවසන් වරට දන්නා තත්වයයි.
මුළු වීඩියෝ පටයම සමස්ත git පද්ධතියට සාධාරණ හැඳින්වීමක් ලබා දෙනු ඇත, එබැවින් කාලය තිබේ නම් ඒ සියල්ල නැරඹීමට මම ඔබට නිර්දේශ කරමි.
එය "වෙන්වූ හෙඩ්" යනුවෙන් හැඳින්වෙන විශේෂ අවස්ථාවක් නොවන බව උපකල්පනය කිරීම, එසේ නම්, ඕ'රෙයිලි ගිට් පොතේ සඳහන් පරිදි, 2 වන සංස්කරණය, පි .69, HEAD
මෙයින් අදහස් කරන්නේ:
HEAD
සෑම විටම වර්තමාන ශාඛාව පිළිබඳ නවතම කැපවීම ගැන සඳහන් කරයි. ඔබ ශාඛා වෙනස් කරන විටHEAD
, නව ශාඛාවේ නවතම බැඳීම වෙත යාවත්කාලීන වේ.
නිසා
HEAD
වන වත්මන් ශාඛාව "තොරතුරක්" .
අපි භාවිත කළ හැකි සටහන HEAD
වඩාත් ම මෑත සිදු, සහ භාවිතා වෙත යොමු කිරීමට HEAD~
ද ඔත්තුව පෙර සිදු, සහ HEAD~~
හෝ HEAD~2
එසේ පිටතට පවා මීට පෙර සිදු ලෙස, හා.
මෙම පිළිතුරු ගණනක, සමහර විට සියුම්, නමුත් වැදගත් වැරදි වැටහීමක් ඇත. මම හිතුවා ඒක ඉවත් කරන්න මගේ පිළිතුර එකතු කරන්න.
කුමක්ද
HEAD
?
HEAD
ඔබගේ කැපවීමේ ඉතිහාසයේ ඔබ කොතැනක සිටියත් යොමු කරන සංකේතාත්මක යොමු කිරීමකි. ඔබ යන ඕනෑම තැනක, ඔබ කරන ඕනෑම දෙයක්, සෙවණැල්ලක් මෙන් එය ඔබව අනුගමනය කරයි. ඔබ කැපවීමක් HEAD
කළහොත්, ඉදිරියට යනු ඇත. ඔබ යමක් පරීක්ෂා කර බැලුවහොත්, HEAD
චලනය වනු ඇත. ඔබ කුමක් කළත්, ඔබ ඔබගේ කැපවීමේ ඉතිහාසයේ අළුත් තැනකට මාරු වී ඇත්නම්, ඔබ සමඟ ඉදිරියට HEAD
ගොස් ඇත. එක් පොදු වැරදි වැටහීමකට විසඳුම් සෙවීම සඳහා: ඔබට ඔබව වෙන් කළ නොහැක HEAD
. වෙන්වූ හෙඩ් තත්වය එය නොවේ. ඔබ කවදා හෝ සිතන්නේ නම්: "අනේ නෑ, මම ඉන්නේ හෙඩ් තත්වයේ! මට මගේ හිස නැති වෙලා!" මතක තබා ගන්න, එය ඔබේ හිස. හෙඩ් ඔබ ය. ඔබ හෙඩ් වෙතින් වෙන් වී නැත, ඔබ සහ ඔබේ හෙඩ් වෙනත් දෙයකින් වෙන් වී ඇත.
HEAD
බැඳීමක් පෙන්වා දිය හැකිය, ඔව්, නමුත් සාමාන්යයෙන් එය එසේ නොවේ. මට එය නැවත කියන්නට ඉඩ දෙන්න. සාමාන්යයෙන් කැපවීමකට HEAD
යොමු නොවේ. එය ශාඛා යොමු කිරීමකට යොමු කරයි. එය එම ශාඛාවට අනුයුක්ත කර ඇති අතර, ඔබ යම් යම් දේ කරන විට (උදා: commit
හෝ reset
), අමුණා ඇති ශාඛාව ඉදිරියට ගමන් කරයි HEAD
. කබාය යටින් බැලීමෙන් ඔබට එය යොමු වන්නේ කුමක් දැයි ඔබට දැක ගත හැකිය.
cat .git/HEAD
සාමාන්යයෙන් ඔබට මේ වගේ දෙයක් ලැබෙනු ඇත:
ref: refs/heads/master
සමහර විට ඔබට මේ වගේ දෙයක් ලැබෙනු ඇත:
a3c485d9688e3c6bc14b06ca1529f0e78edd3f86
HEAD
කැපවීමකට කෙලින්ම යොමු වූ විට සිදු වන්නේ එයයි . HEAD
ශාඛා යොමු කිරීමක් හැර වෙනත් දෙයකට යොමු වන බැවින් මෙය වෙන් කළ හෙඩ් ලෙස හැඳින්වේ . ඔබ මෙම තත්වය තුළ කැපවීමක් කරන්නේ නම් master
, තවදුරටත් එයට සම්බන්ධ නොවන්නේ නම් HEAD
, ඔබ සමඟ තවදුරටත් ගමන් නොකරනු ඇත. එම කැපවීම කොතැනද යන්න ගැටළුවක් නොවේ. ඔබ ඔබේ ප්රධාන ශාඛාව හා සමාන කැපවීමක සිටිය හැකිය, නමුත් HEAD
ශාඛාවට වඩා බැඳීමට යොමු වන්නේ නම් , එය වෙන්වී ඇති අතර නව බැඳීමක් ශාඛා යොමු කිරීමක් සමඟ සම්බන්ධ නොවේ.
ඔබ පහත දැක්වෙන අභ්යාසය උත්සාහ කරන්නේ නම් ඔබට මෙය ප්රස්තාරිකව බැලීමට හැකිය. Git ගබඩාවක සිට මෙය ක්රියාත්මක කරන්න. ඔබට තරමක් වෙනස් දෙයක් ලැබෙනු ඇත, නමුත් ඒවායේ යතුරු බිටු ඇත. බැඳීම කෙලින්ම පරීක්ෂා කර බැලීමට කාලය පැමිණි විට, පළමු නිමැවුමෙන් ඔබට ලැබෙන ඕනෑම කෙටි හැෂ් එකක් භාවිතා කරන්න (මෙන්න එයයි a3c485d
).
git checkout master
git log --pretty=format:"%h: %d" -1
# a3c485d: (HEAD -> master)
git checkout a3c485d -q # (-q is for dramatic effect)
git log --pretty=format:"%h: %d" -1
# a3c485d: (HEAD, master)
හරි, එබැවින් මෙහි ප්රතිදානයේ කුඩා වෙනසක් ඇත. බැඳීම කෙලින්ම පරීක්ෂා කිරීමෙන් (ශාඛාව වෙනුවට) අපට ඊතලයක් වෙනුවට කොමාවක් ලබා දේ. ඔබ සිතන්නේ කුමක්ද, අප සිටින්නේ වෙන්වූ හෙඩ් තත්වයකද? HEAD තවමත් යොමු දක්වන්නේ ශාඛා නාමයක් හා සම්බන්ධ විශේෂිත සංශෝධනයකට ය. අප තවමත් ඉන්නේ මත ස්වාමියා ශාඛා, අපි නොවේ ද?
දැන් උත්සාහ කරන්න:
git status
# HEAD detached at a3c485d
නෑ. අපි ඉන්නේ 'වෙන්වූ හෙඩ්' තත්වයේ.
ඔබ එම නියෝජන බලන්න පුළුවන් (HEAD -> branch)
එදිරිව (HEAD, branch)
සමග git log -1
.
HEAD
ඔයාද. එය ඔබ කොතැනක සිටියත් ඔබ පරීක්ෂා කළ ඕනෑම දෙයකට යොමු කරයි. සාමාන්යයෙන් එය බැඳීමක් නොවේ, එය ශාඛාවකි. නම් HEAD
කරන්නේ ශාඛාවක් ද පෙන්නුම් එය සිදු (හෝ ටැග් එකක්) ද එය එසේ ම ය පවා නම්, සිදු (හෝ ටැග් එකක්) සඳහා ලකුණු, ඔබ (සහ HEAD
) ශාඛා ඉහලට ඔසවා ඇත. ඔබට ශාඛාවක් අමුණා නැති නිසා, ඔබ නව කොමිස් කරන විට ශාඛාව ඔබ සමඟ නොයනු ඇත. HEAD
කෙසේ වෙතත්, එසේ වනු ඇත.
.git/HEAD
මෘදුකාංගය හෙඩ් ලෙස සලකයි.
HEAD
ඔබගේ වැඩ කරන පිටපත පෙන්වා දෙන වර්තමාන බැඳීම, එනම් ඔබ දැනට පරීක්ෂා කර ඇති බැඳීම යන්නෙන් අදහස් කෙරේ. සිට Git සංශෝධන නියම නිල ලිනක්ස් න්යෂ්ඨි ප්රලේඛනය :
HEAD
වැඩ කරන ගසෙහි වෙනස්කම් ඔබ පදනම් කරගත් කැපවීම නම් කරයි.
කෙසේ වෙතත්, Git හි ඉදිරියට එන 1.8.4 අනුවාදයේ , Git දායකයා වන ජූනියෝ සී හමානෝ විසින් ඔහුගේ Git Blame බ්ලොග් අඩවියේ සඳහන් කර ඇති පරිදි , @
එය කෙටිමං ලෙසද භාවිතා කළ හැකි බව සලකන්න .HEAD
"HEAD" ටයිප් කරනවා වෙනුවට ඔබට "@" යැයි පැවසිය හැකිය, උදා: "git log @".
ස්ටොක් පිටාර ගැලීමේ පරිශීලක VonC තවත් ප්රශ්නයකට පිළිතුරු වශයෙන් කෙටිමං ලෙස තෝරාගත්තේ ඇයිද යන්න පිළිබඳ රසවත් තොරතුරු@
කිහිපයක් සොයා ගත්තේය .
උනන්දුව ද, සමහර පරිසරයන්හි HEAD
, විශේෂයෙන් සිද්ධි-සංවේදී නොවන ගොනු පද්ධති භාවිතා කරන මෙහෙයුම් පද්ධතිවල, විශේෂයෙන් වින්ඩෝස් සහ ඕඑස් එක්ස් භාවිතා කිරීම අවශ්ය නොවේ .
අතු සෑදීම සහ සෙල්ලම් කිරීම දෙස බලන්න
HEAD යනු ඇත්ත වශයෙන්ම HEAD විචල්යය සඳහන් වන ස්ථානය තීරණය කරන ගොනුවකි:
$ cat .git/HEAD
ref: refs/heads/master
$ cat .git/refs/heads/master
35ede5c916f88d8ba5a9dd6afd69fcaf773f70ed
මෙම ගබඩාවේ, HEAD ගොනුවේ අන්තර්ගතය refs / head / master නම් දෙවන ගොනුවට යොමු වේ . ගොනුවේ refs / head / master හි ප්රධාන ශාඛාවේ නවතම කැපවීමේ හැෂ් අඩංගු වේ.
මෙහි ප්රති result ලය වන්නේ .git / refs / head / master ගොනුවෙන් ලැබෙන ප්රධාන ශාඛාවට HEAD ලකුණු කිරීමයි .
ග්රෙග් හෙව්ගිල්ගේ පිළිගත් පිළිතුරෙහි කරුණු කිහිපයක් විස්තර කිරීමට මම කැමතියි. අනුව Git පොකට් මාර්ගෝපදේශය
ශාඛාව:
ශාඛාවම අර්ථ දැක්වෙන්නේ නම් කරන ලද බැඳීමෙන් (ශාඛාවේ “ඉඟිය”) බැඳීම් ප්රස්ථාරයට ළඟා විය හැකි සියලුම කරුණු ලෙස ය.
හිස: විශේෂ වර්ගයේ Ref
විශේෂ ref HEAD මඟින් ඔබ සිටින්නේ කුමන ශාඛාවේද යන්න තීරණය කරයි ...
Refs
Git විසින් යොමු කිරීම් දෙකක් අර්ථ දක්වයි, නැතහොත් නම් කරන ලද දර්ශක, එය “refs” ලෙස හැඳින්වේ:
- සරල ref එකක්, එය සෘජුවම වස්තු හැඳුනුම්පතකට යොමු කරයි (සාමාන්යයෙන් බැඳීමක් හෝ ටැගයක්)
- සංකේතාත්මක ref (හෝ සමමිතිය), එය වෙනත් ref වෙත යොමු කරයි (සරල හෝ සංකේතාත්මක)
ග්රෙග් සඳහන් කළ පරිදි, HEAD “වෙන්වූ තත්වයක” පැවතිය හැකිය. එබැවින් HEAD සරල ref (වෙන් කළ HEAD සඳහා) හෝ සමමිතියක් විය හැකිය.
HEAD යනු පවත්නා ශාඛාවක් සඳහා සංකේතාත්මක යොමු කිරීමක් නම්, ඔබ එම ශාඛාව “මත” ඇත. අනෙක් අතට, හෙඩ් යනු එහි SHA-1 හැඳුනුම්පත මගින් සෘජුවම බැඳීමක් නම් කිරීම සරල යොමු කිරීමක් නම්, ඔබ සිටින්නේ කිසිදු ශාඛාවක් මත නොව “වෙන්වූ හෙඩ්” ප්රකාරයේදී ය. පරීක්ෂා කිරීමට කැප වන්න.
මම හිතන්නේ 'හෙඩ්' යනු වර්තමාන පරීක්ෂා කිරීමේ කැපවීමයි. වෙනත් වචන වලින් කිවහොත්, 'HEAD' මඟින් දැනට පරීක්ෂා කර ඇති බැඳීම පෙන්වා දෙයි.
ඔබ දැන් ක්ලෝන කර පරීක්ෂා කර නොමැති නම්, එයින් ඇඟවෙන්නේ කුමක්දැයි මම නොදනිමි, බොහෝ විට වලංගු නොවන ස්ථානයක්.
HEAD
නම් ඔබ දැනට පරීක්ෂා කර ඇති ඕනෑම කැපවීමකි. විස්තර සඳහා අත්පොත බලන්න (අදාළ ඡේදය වහාම රූපය 3.4 අනුගමනය කරයි).
master
ශාඛාව පරීක්ෂා කරනු ඇත - එබැවින් HEAD ප්රධාන දෙසට යොමු වේ.
master
, නමුත් එය සැමවිටම නොවේ. බලන්නremote set-head
remote set-head
දේශීය පෙරනිමි ශාඛාවට පමණක් බලපාන, සහ සේවාදායකයේ පෙරනිමිය වෙනස් නොකරන, යොමු කිරීම හැර මගේ පෙර අදහස නිවැරදි විය .
පෙර පිළිතුරු සියල්ලම කියවීමෙන් පසුව, මට තව පැහැදිලි කිරීමක් අවශ්ය විය. නිල git වෙබ් අඩවිය වන http://git-scm.com/blog හි මෙම බ්ලොගය මා සොයන දේ මට ලබා දුන්නේය:
Git හි ඇති HEAD යනු වර්තමාන ශාඛා යොමු කිරීම සඳහා වන දර්ශකය වන අතර, එය ඔබ විසින් කරන ලද අවසන් කැපවීම හෝ ඔබේ වැඩ කරන නාමාවලිය තුළට පරීක්ෂා කරන ලද අවසාන කැපවීම පිළිබඳ දර්ශකයකි . එයින් අදහස් වන්නේ එය ඔබ කරන ඊළඟ කැපවීමේ මවුපියන් වනු ඇති බවයි. HEAD යනු ඔබේ අන්තිම කැපවීමේ ඡායාරූපය බැවින් එය සිතීම සාමාන්යයෙන් සරල ය.
HEAD
බැඳීමක් නොවේ; එය පෙන්නුම් එකක්.
checkout HEAD^
, දැන් හෙඩ් කිසිදු ශාඛාවක අවසන් කැපීමේ ඡායාරූපය වෙත යොමු නොකරයි.
commit
, merge
, rebase
, log
, ආදී එහෙත් සංකල්පමය සමහරවිට "(හේතුවම) වර්තමාන තත්ත්වය" හොඳ සාරාංශයකි.
දැනට පරීක්ෂා කර ඇති ශාඛාවේ කෙළවරට හිස යොමු කරන්න.
ඔබේ ගබඩාවේ .git ෆෝල්ඩරයක් ඇත. මෙම ස්ථානයේ ගොනුව විවෘත කරන්න: .git \ refs \ හිස්. එම ගොනුවේ (sha-1 hash) කේතය (බොහෝ අවස්ථාවන්හි ප්රධානියා) නවතම කැපවීම වනු ඇත, එනම් විධානයේ ප්රතිදානයේ දක්නට ලැබෙන කේතය git log
. .Git ෆෝල්ඩරය පිළිබඳ වැඩි විස්තර: http://gitready.com/advanced/2009/03/23/whats-inside-your-git-directory.html
git reset HEAD^
, පසුව නවතම කැපවීම (කලින් ඉඟිය) තවදුරටත් ශාඛාවේ අගයෙන් පෙන්වා නැත.
එය HEAD
ඔබ පරික්ෂා කළ අවසන් කැපවීම සඳහා වූ ටැගයක් පමණක් යැයි හැඟේ .
මෙය විශේෂිත ශාඛාවක ඔත්තුව විය හැකිය ("ස්වාමියා" වැනි) හෝ ශාඛාවක බැඳීම් අතර ("වෙන්වූ හිස")
සියලු අර්ථ දැක්වීම් වලට අමතරව, මගේ මනසෙහි රැඳී ඇති දෙය නම්, ඔබ කැපවීමක් කරන විට, GIT ගබඩාව තුළ බැඳීම් වස්තුවක් නිර්මාණය කරයි. බැඳීම් වස්තූන් සඳහා දෙමව්පියන් සිටිය යුතුය (හෝ එය ඒකාබද්ධ කිරීමේ බැඳීමක් නම් බහු දෙමව්පියන්). දැන්, වර්තමාන කැපවීමේ මවුපියන් git දන්නේ කෙසේද? එබැවින් HEAD යනු වර්තමාන බැඳීමේ මවුපියන් බවට පත්වන අවසාන කැපවීම (යොමු කිරීම) වෙත යොමු කිරීමකි.
මේ දෙදෙනා ඔබව ව්යාකූල කළ හැකිය:
හිස
මෑතකදී ඉදිරිපත් කරන ලද ශාඛාවක් නම් කරන ලද යොමු කිරීම් වෙත යොමු කිරීම. ඔබ ඇසුරුම් යොමුව භාවිතා නොකරන්නේ නම්, හිස් සාමාන්යයෙන් ගබඩා කර ඇත්තේ $ GIT_DIR / refs / head /.
හිස
වත්මන් ශාඛාව හෝ ඔබේ වැඩ කරන ගස සාමාන්යයෙන් උත්පාදනය වන්නේ HEAD පෙන්වා ඇති ගසෙනි. ඔබ වෙන් කළ හෙඩ් එකක් භාවිතා කරන්නේ නම් හැර, හෙඩ් හිසට යොමු විය යුතුය.
Http://git-scm.com/book/en/Git-Branching-What-a-Branch-Is දෙස බලන්න
රූපය 3-5. HEAD ගොනුව ඔබ සිටින ශාඛාවට යොමු කරයි.
Git
සියල්ලම කොමිස් ගැන.
හා Head
පෙන්වාදෙමින් ඔබ දැනට ක් පරීක්ෂා කරන නසාගන්නවා.
$ git cat-file -t HEAD
commit
ඔබ ශාඛාවක් පරීක්ෂා කරන සෑම අවස්ථාවකම, HEAD එම ශාඛාවේ නවතම කැපවීම පෙන්වා දෙයි. HEAD හි අන්තර්ගතය පහත පරිදි පරීක්ෂා කළ හැකිය (ප්රධාන ශාඛාව සඳහා):
$ cat .git/refs/heads/master
b089141cc8a7d89d606b2f7c15bfdc48640a8e25
HEAD ඇත්ත වශයෙන්ම වත්මන් ශාඛා තොරතුරු ගබඩා කිරීම සඳහා වූ ගොනුවක් පමණි
ඔබගේ git විධානයන්හි ඔබ HEAD භාවිතා කරන්නේ නම් ඔබ යොමු කරන්නේ ඔබේ වර්තමාන ශාඛාවටයි
ඔබට මෙම ගොනුවේ දත්ත දැක ගත හැකිය
cat .git/HEAD
සංකල්පයක් ලෙස, හිස යනු ශාඛාවක නවතම සංශෝධනයයි. ඔබට නම් කරන ලද ශාඛාවකට එකකට වඩා වැඩි ගණනක් තිබේ නම්, ඒකාබද්ධ කිරීමකින් තොරව දේශීය කොමිස් සිදු කරන විට ඔබ එය නිර්මාණය කර ඇති අතර effectively ලදායී ලෙස නම් නොකළ ශාඛාවක් නිර්මාණය කරයි.
“පිරිසිදු” ගබඩාවක් තිබීමට නම්, ඔබ නම් කරන ලද ශාඛාවකට එක් හිසක් තිබිය යුතු අතර ඔබ දේශීයව වැඩ කිරීමෙන් පසු සෑම විටම නම් කරන ලද ශාඛාවකට ඒකාබද්ධ කරන්න.
මර්කුරියල් සඳහාද මෙය සත්යයකි .