Git හි වර්තමාන කැපවීම සඳහා හැෂ් ලබා ගන්නේ කෙසේද?


1951

GF වෙනස් කිරීම් කට්ටල TFS හි ගබඩා කර ඇති වැඩපොළවල් සමඟ සම්බන්ධ කිරීමේ හැකියාව රඳවා ගැනීමට මම කැමතියි (දැනට).

මම දැනටමත් මෙවලමක් ලියා ඇත (Git වෙතින් කොක්කක් භාවිතා කරමින්) Git changeet එකක පණිවිඩයට වැඩ හඳුනාගැනීම් එන්නත් කළ හැකිය.

කෙසේ වෙතත්, Git commit (හැෂ්) හදුනාගැනීමේ යන්ත්‍රය අභිරුචි TFS වැඩ ක්ෂේත්‍රයට ගබඩා කිරීමට මම කැමැත්තෙමි. මේ ආකාරයෙන් මට ටීඑෆ්එස් හි වැඩකරණයක් පරීක්ෂා කර බලා වැඩපොළ සමඟ සම්බන්ධ වී ඇති Git වෙනස් කිරීම් මොනවාදැයි බලන්න.

Git වෙතින් වර්තමාන කැපවීමෙන් හැෂ් පහසුවෙන් ලබා ගන්නේ කෙසේද?

Answers:


2839

අත්තනෝමතික ලෙස දීර් extended කරන ලද වස්තු යොමුව SHA-1 බවට හැරවීමට , උදාහරණයක් ලෙස git-rev-parse භාවිතා කරන්න

git rev-parse HEAD

හෝ

git rev-parse --verify HEAD

Sidenote: ඔබට යොමු ( ශාඛා සහ ටැග් ) SHA-1 බවට පත්කිරීමට අවශ්‍ය නම්,git show-refසහgit for-each-ref.


81
--verifyඑයින් ගම්‍ය වන්නේ:The parameter given must be usable as a single, valid object name. Otherwise barf and abort.
ලිනස් උන්නෙබක්

651
git rev-parse --short HEADකවුරුහරි කල්පනා කරනවා නම්, හැෂ් හි කෙටි අනුවාදය ලබා දෙයි.
තානේ බ්‍රිම්හෝල්

55
Thane ඔබ ද නිශ්චිත දිග එකතු කළ හැකි, කියපු දේ එකතු --shortවැනි, --short=12හැෂ් සිට ඉලක්කම් නිශ්චිත සංඛ්යාව ලබා ගැනීම සඳහා,.
ටයිසන් ෆාල්ප්

33
YtysonPhalp: --short=Nයනු අවම ඉලක්කම් ගණනකි; කෙටි කළහොත් git විශාල ඉලක්කම් සංඛ්‍යාවක් භාවිතා කරයි. උදා: git rev-parse --short=2 HEADහෝ උත්සාහ කරන්න git log --oneline --abbrev=2.
ජකුබ් නාරබ්ස්කි

36
දේ Thane, ටයිසන් එකතු කරමින්, සහ Jakub, '' ඔබ සම්පූර්ණ හැෂ් මුද්රණය කළ හැක, නමුත් සමග හිටිහැටියේ සිදු හඳුනා ගැනීම සඳහා අවශ්ය hexits ඉස්මතුgit rev-parse HEAD | GREP_COLORS='ms=34;1' grep $(git rev-parse --short=0 HEAD)
Zaz

427

ඔබට අවශ්‍ය වන්නේ කෙටි කළ හැෂ් පමණි:

git log --pretty=format:'%h' -n 1

තවද, දිගු හැෂ් ලබා ගැනීම සඳහා% H භාවිතා කිරීම තවත් ක්‍රමයකි.


108
නැතහොත්, ඉහත rev-parse විධානයට --short එකතු කිරීම වැඩ කරන බව පෙනේ.
පිටත සංස්කෘතිය

16
මම හිතන්නේ git logපෝසිලේන් සහ git rev-parseජලනල.
අමීඩි වැන් ගෑස්

මෙම ක්‍රමයේ ඇති එක් වාසියක් නම්, එය විශාල නිධි සඳහා සිදුවන හැෂ් isions ට්ටනවලට ගැලපෙන පරිදි නිවැරදි දිග සමඟ හැෂ් හි කෙටි අනුවාදය නැවත ලබා දීමයි. අවම වශයෙන් git හි මෑත සංස්කරණ වල.
ඉලියා සිඩොරෙන්කෝ

4
මෙය නරක / වැරදි ක්‍රමයක් වන බැවින් ඔබට වෙන්වූ හිසක් ඇත්නම් මෙම ක්‍රමය මඟින් ඔබට වැරදි හැෂ් ලබා දෙනු ඇත. උදාහරණයක් ලෙස වර්තමාන බැඳීම 12ab34 නම් ... සහ පෙර කැපවීම 33aa44 නම් ... එසේ නම් මම 'git checkout 33aa44' කර ඔබේ විධානය ක්‍රියාත්මක කරන්නේ නම් මම තවමත් 12ab34 ලබා ගන්නෙමි ... මගේ හිස ඇත්ත වශයෙන්ම පෙන්වා තිබියදීත් 33aa44 වෙත ...
TheQuestionMan

3
QtheQuestionMan ඔබ විස්තර කරන හැසිරීම මට අත්විඳිය නොහැක. git checkout 33aa44; git log -n 1මට දෙනවා 33aa44. ඔබ භාවිතා කරන්නේ කුමන git අනුවාදයද?
එළිමහන් සංස්කෘතිය

152

තවත් එකක්, git log භාවිතා කරමින්:

git log -1 --format="%H"

එය ටිකක් කෙටි වුවද @outofculture වලට බෙහෙවින් සමාන ය.


ප්‍රති result ලය තනි උපුටා දැක්වීමක් නොවේ.
crokusek

5
මෙය නිවැරදි පිළිතුරයි, මන්ද ඔබ ඒ වෙනුවට නිශ්චිත කැපවීමක් කළත් එය ක්‍රියාත්මක වේ HEAD.
පාර්සා

1
Ar පාර්සා: නම් කරන ලද ශාඛාවකට HEADවඩා මෙම කැපවීම සඳහා නිශ්චිත බැඳීම් ලකුණු පරික්ෂා කිරීමේදී වෙන්වූ හිස ලෙස දැන ගන්න .
ක්‍රිස්ටෝෆ්සෙන්

127

සම්පූර්ණ SHA ලබා ගැනීම සඳහා:

$ git rev-parse HEAD
cbf1b9a1be984a9f61b79a05f23b19f66d533537

කෙටි කළ අනුවාදය ලබා ගැනීම සඳහා:

$ git rev-parse --short HEAD
cbf1b9a

ඔබ දැනට වැඩ කරමින් සිටින එකක් සහ අ git commitවැනි හැෂ් දෙකක් අවශ්‍ය නම්, ඔබේ ධාරාවට ඔබ හැෂ් අවශ්‍ය නම් ඔබටද භාවිතා කළ හැකිය . උදා: ඔබ නම් es සහ දී ඇති ණයකට සඳහා., මත වන අතර ඔබට භාවිතා කළ හැකි නම් සහ ඔබ අවශ්ය නම් වලින් එහි පූරක ඔබ ඔබ අතර ඇති පිටපත් සඳහා d. branchmaster branchgit rev-parse FETCH_HEADmaster commitmergebranchbranchmasterfeature/new-featurefeature/new-featuregit fetch origin master && git merge FETCH_HEADgit rev-parse --short FETCH_HEADcommitmastermerge
EVAL

72

සම්පූර්ණත්වය සඳහා, කිසිවෙකු තවම එය යෝජනා කර නැති නිසා. .git/refs/heads/masterඑක් පේළියක් පමණක් අඩංගු ගොනුවකි: නවතම කැපවීමේ හැෂ් master. එබැවින් ඔබට එය එතැන් සිට කියවිය හැකිය.

නැතහොත්, විධානය ලෙස:

cat .git/refs/heads/master

යාවත්කාලීන කිරීම:

/ Refs / head / ෆෝල්ඩරයේ ඇති ගොනුවක් වෙනුවට ඇසුරුම්-ref ගොනුවේ සමහර හිස් යොමු කිරීම් ගබඩා කිරීමට git දැන් සහාය වන බව සලකන්න. https://www.kernel.org/pub/software/scm/git/docs/git-pack-refs.html


10
මෙය උපකල්පනය කරන්නේ වර්තමාන ශාඛාව master, එය අනිවාර්යයෙන්ම සත්‍ය නොවන බවයි.
ගැව්රි

12
ඇත්ත වශයෙන්ම. ඒකයි මම පැහැදිලිවම කිව්වේ මේකට master.
ඩීස්ටන්

21
.git/HEADසාමාන්‍යයෙන් ref වෙත යොමු කරයි, ඔබට එහි SHA1 තිබේ නම්, ඔබ සිටින්නේ වෙන්වූ හිස් මාදිලියේ ය.
eckes

9
වෙනත් ප්‍රවේශයන් හා සසඳන විට මෙය ඉතා ශක්තිමත් නොවේ, විශේෂයෙන් එය .gitඋප බහලුමක් ඇතැයි උපකල්පනය කරන හෙයින් එය එසේ නොවේ. බලන්න --separate-git-dirමේ කොඩි git initman පිටුව.
jub0bs

16
+1 සමහර විට ඔබට git executable ස්ථාපනය කිරීමට අවශ්‍ය නැති නිසා (උදා: ඔබේ Dockerfile හි)
wim

51

සෑම විටම git describeඑසේම ඇත. පෙරනිමියෙන් එය ඔබට ලබා දෙයි -

john@eleanor:/dev/shm/mpd/ncmpc/pkg (master)$ git describe --always
release-0.19-11-g7a68a75

18
Git විස්තරයෙන් බැඳීමෙන් පළමු TAG වෙත ළඟා විය හැකිය. SHA ලබා ගැනීමට මෙය මට උපකාර කරන්නේ කෙසේද?
සර්දෝකර්

42
මම වගේ git describe --long --dirty --abbrev=10 --tagsඑය මට වගේ දෙයක් දෙනවා 7.2.0.Final-447-g65bf4ef2d4ද 7.2.0.Final ටැගය පසු අනාචාරයේ 447 වන අතර, පළමු 10 වත්මන් නායකයා ලෙස ගෝලීය SHA-1 ජීර්ණය "65bf4ef2d4" වේ. අනුවාද නූල් සඳහා මෙය ඉතා හොඳයි. --Long සමඟ එය සැමවිටම ගණනය (-0-) සහ හැෂ් එකතු කරනු ඇත, ටැගය හරියටම ගැලපෙන පරිදි සිදු වුවද.
eckes

14
ටැග් කිසිවක් නොපවතින විට git describe --always"අද්විතීය ලෙස කෙටියෙන් බැඳී ඇති වස්තුව ආපසු හැරවීමක් ලෙස පෙන්වනු ඇත"
රොනී ඇන්ඩර්සන්

මම පාවිච්චි කරනවා git describe --tags --first-parent --abbrev=11 --long --dirty --always. මෙම --alwaysවිකල්පය එය කිසිදු ටැග් තිබිය දී පවා, එහි ප්රතිඵලයක් (පූරක) මගින් බවයි. මෙම --first-parentමාර්ගයෙන් එය ඒකාබද්ධ අනාචාරයේ ව්යාකූල වන්නේ නැහැ පමණක් වත්මන් ශාඛා මත භාණ්ඩ පහත සඳහන්. වත්මන් ශාඛාවේ නොගැලපෙන වෙනස්කම් තිබේ නම් එය ප්‍රති result --dirtyලයට එකතු වන බව සලකන්න -dirty.
ingyhere

50

හෑෂ් කරන්න

git show -s --format=%H

සංක්ෂිප්ත බැඳීම් හැෂ්

git show -s --format=%h

තවත් උදාහරණ සඳහා මෙහි ක්ලික් කරන්නgit show .


30

භාවිත git rev-list --max-count=1 HEAD


3
git-rev-list යනු බැඳීම් වස්තු ලැයිස්තුව උත්පාදනය කිරීම ය; වස්තුවේ නම (උදා: HEAD) SHA-1 බවට පරිවර්තනය කිරීම git-rev-parse වේ
Jakub Narębski

21

ස්ක්‍රිප්ටයක් අතරතුර ඔබට හැෂ් විචල්‍යයක ගබඩා කිරීමට අවශ්‍ය නම්, ඔබට භාවිතා කළ හැකිය

last_commit=$(git rev-parse HEAD)

නැතහොත්, ඔබට අවශ්‍ය වන්නේ පළමු අක්ෂර 10 පමණි (github.com වැනි)

last_commit=$(git rev-parse HEAD | cut -c1-10) 

26
ද ඇත --shortහෝ --short=numberපරාමිතියන් git rev-parse; පයිප්පයක් භාවිතා කිරීමට අවශ්‍ය නැත cut.
ජූලියන් ඩී.

15

ඔබට එය කිරීමට සුපිරි හැක් ක්‍රමයක් අවශ්‍ය නම්:

cat .git/`cat .git/HEAD | cut -d \  -f 2`

මූලික වශයෙන්, git විසින් HEAD හි පිහිටීම .git / HEAD ආකාරයෙන් ගබඩා කරයි ref: {path from .git}. මෙම විධානය මඟින් එය කියවා, "ref:" කපා, එය පෙන්වා ඇති ඕනෑම ගොනුවක් කියවයි.

HEAD "ref: ..." නොවනු ඇත, නමුත් හැෂ් විසින්ම - මෙය ඇත්ත වශයෙන්ම, වෙන්වූ-හෙඩ් මාදිලියේ අසාර්ථක වනු ඇත, නමුත් ඔබ දන්නවනේ, ඔබේ බෑෂ් එකේ එතරම් ස්මාර්ට් බලාපොරොත්තු වේ යැයි මම නොසිතමි. -ලයිනර්. අර්ධ සළකුණු වංචාවක් යැයි ඔබ නොසිතන්නේ නම් ...

HASH="ref: HEAD"; while [[ $HASH == ref\:* ]]; do HASH="$(cat ".git/$(echo $HASH | cut -d \  -f 2)")"; done; echo $HASH

1
git ස්ථාපනය කිරීමට අවශ්‍ය නැත, මම එයට කැමතියි. (මගේ ඩොකර් බිල්ඩ් පිංතූරයට git නොමැත)
හෙලින් වැන්ග්

git repo
samaspin

මම මෙය මගේ දේශීය යන්ත්‍රය සඳහා පිටපතකට විධිමත් කළෙමි. එවිට, මම සිතුවෙමි, ඒයි: මා විසින් ක්‍රියාත්මක කිරීම සම්බන්ධ නොවූ ගැටළුවක් විසඳන්නේ කෙසේද යන්න නිරූපණය කරන තරම් සරල ය (බාහිර වැඩසටහන් නොමැතිව අමු පොසික්ස් ෂෙල් ස්ක්‍රිප්ට් වල තර්ක විග්‍රහ කිරීම), නමුත් සුළු විචල්‍යතාවයක් සැපයීමට සහ බොහෝ දේ සූරාකෑමට තරම් සංකීර්ණ හි විශේෂාංග sh. පැය භාගයක ලියකියවිලි අදහස් දැක්වීම, මෙහි සාරාංශයක්
ෆෝඩි

එය දෙස බලන විට, මම Git සහ SVN හඳුනා ගැනීම සහ git hash / svn සංශෝධනය ලබා ගැනීම සඳහා වඩාත් පුළුල් අනුවාදයක් සාදන ලදී. මෙවර පිරිසිදු නූලක් නොව, පහසුවෙන් විධාන රේඛා විග්‍රහ කර අනුවාද ටැගයක් ලෙස භාවිතා කළ හැකිය: gist.github.com/Fordi/8f1828efd820181f24302b292670b14e
ෆෝඩි

14

මා දන්නා වඩාත්ම සංක්ෂිප්ත ක්‍රමය:

git show --pretty=%h 

ඔබට හෑෂ් හි නිශ්චිත සංඛ්‍යාවක් අවශ්‍ය නම් ඔබට එකතු කළ හැකිය:

--abbrev=n

14
මෙය තාක්‍ෂණිකව ක්‍රියාත්මක වන අතර, git showඑය පෝසිලේන් විධානයක් ලෙස හැඳින්වේ (එනම් පරිශීලකයා මුහුණ දෙන), එබැවින් එහි ප්‍රතිදානය වෙනස් වීමට යටත් වන බැවින් ස්ක්‍රිප්ට් වල භාවිතා නොකළ යුතුය. ඉහත ( git rev-parse --short HEAD) පිළිතුර ඒ වෙනුවට භාවිතා කළ යුතුය.
jm3

4
@ jm3 එය පසුපසට. "පෝසිලේන්" විධානයන්ට ස්ක්‍රිප්ට් සඳහා අදහස් කරන ස්ථාවර ප්‍රතිදානයන් ඇත. සොයන්න git help showසඳහා porcelain.
ජෝන් ටයිරී

2
@ ජෝන් ටයිරි මෙය ව්‍යාකූල විෂයයකි, නමුත් jm3 නිවැරදිය: පෝසිලේන් විධානයන් විග්‍රහ කිරීමට අදහස් නොකෙරේ, නමුත් ඒවා මිනිසුන්ට කියවිය හැකි ය. ඔබට ස්ක්‍රිප්ට් එකක පෝසිලේන් විධානයක් භාවිතා කිරීමට අවශ්‍ය නම් සහ ඔබට ස්ථාවර ආකෘතියක් ලබා ගැනීමට අවශ්‍ය නම්, සමහර විට (උදාහරණයක් ලෙස git status, push and blame) විකල්පයක් ඇත. අවාසනාවකට මෙන්, එම විකල්පය හැඳින්වේ --porcelain, මේ නිසා මෙය ව්‍යාකූල වේ. VonC විසින් මෙම විශිෂ්ට පිළිතුරෙන්
ෆේබියෝ පවසන්නේ මොනිකා නැවත

1
ආදරණීය දෙවියනි, එම විකල්පය නම් කිරීමට තීරණය කළ - පෝසිලේන් මට ඒවා සොයා ගැනීමට අවශ්‍යයි ... ... අනේ, මට ඒවා කිසිසේත්ම සොයා ගැනීමට git භාවිතා කිරීමට අවශ්‍යයි
බ්‍රිටන් කෙරින්

14

සමහර විට ඔබට අන්වර්ථයක් අවශ්‍ය බැවින් ඔබට සියලු විස්තර මතක තබා ගත යුතු නැත. පහත පියවරයන්ගෙන් එකක් කිරීමෙන් පසුව, ඔබට සරලව ටයිප් කළ හැකිය:

$ git lastcommit
49c03fc679ab11534e1b4b35687b1225c365c630

මත දක්වා පහත පිළිගත් පිළිතුර , මෙහි මෙය සකසා කිරීමට ක්රම දෙකක් ඇත:

1) ගෝලීය වින්‍යාසය සංස්කරණය කිරීමෙන් පැහැදිලි ආකාරයකින් git උගන්වන්න (මගේ මුල් පිළිතුර):

 # open the git config editor
 $ git config --global --edit
 # in the alias section, add
 ...
 [alias]
   lastcommit = rev-parse HEAD
 ...

2) හෝ මෑතකදී ඇඩ්‍රියන් විසින් අදහස් දැක්වූ පරිදි, git කෙටිමං ඉගැන්වීමට ඔබ කෙටිමඟකට කැමති නම්:

$ git config --global alias.lastcommit "rev-parse HEAD"

මෙතැන් සිට, git lastcommitඅවසාන කැපවීමේ හැෂ් පෙන්වීමට භාවිතා කරන්න.


3
ඇඩ්‍රියන් ඩි සෙන්ටෙනැක් සටහන් කරන්නේ git වින්‍යාස ගොනුව අතින් සංස්කරණය කිරීම වෙනුවට ඔබට සරලවම කළ හැකි බවයි:git config --global alias.lastcommit "rev-parse HEAD"
cgmb

12

මට මීට වඩා වෙනස් දෙයක් අවශ්‍ය විය: කැපවීමේ සම්පූර්ණ sha1 ප්‍රදර්ශනය කරන්න, නමුත් වැඩ කරන නාමාවලිය පිරිසිදු නොවේ නම් අවසානයට තරු ලකුණු කරන්න. මට බහු විධාන භාවිතා කිරීමට අවශ්‍ය නම් මිස, පෙර පිළිතුරු වල ඇති විකල්ප කිසිවක් ක්‍රියාත්මක නොවේ.

පහත දැක්වෙන එක් ලයිනර් එකක් මෙන්න:
git describe --always --abbrev=0 --match "NOT A TAG" --dirty="*"
ප්‍රති ult ලය:f5366ccb21588c0d7a5f7d9fa1d3f85e9f9d1ffe*

පැහැදිලි කිරීම: වර්තමාන කැපවීම විස්තර කරයි (විවරණය කළ ටැග් භාවිතා කරමින්), නමුත් "NOT A TAG" අඩංගු ටැග් සමඟ පමණි. ටැගයන්ට අවකාශයක් තිබිය නොහැකි බැවින්, මෙය කිසි විටෙකත් ටැගයකට නොගැලපෙන අතර අපට ප්‍රති result ලයක් පෙන්වීමට අවශ්‍ය බැවින් --always, විධානය මඟින් --abbrev=0බැඳීමේ සම්පූර්ණ ( ) sha1 දර්ශනය වන අතර එය වැඩ කරන නාමාවලිය නම් එය තරු ලකුණු කරයි --dirty.

ඔබට තරු ලකුණු එකතු කිරීමට අවශ්‍ය නැතිනම්, මෙය පෙර පිළිතුරු වල ඇති අනෙක් සියලුම විධානයන් මෙන් ක්‍රියා කරයි:
git describe --always --abbrev=0 --match "NOT A TAG"
ප්‍රති ult ලය:f5366ccb21588c0d7a5f7d9fa1d3f85e9f9d1ffe


ස්තූතියි, එය
පැකිලීම

1
එය නොමැතිව මට වැඩ කරයි --match "NOT A TAG". Git 2.18.0 සහ 2.7.4 හි පරීක්ෂා කර ඇත. මෙම තර්කය අවශ්‍ය වන තත්වයක් තිබේද?
තෝමස්

වර්තමාන කැපවීමේ ඉතිහාසයේ කොතැනක හෝ ඔබට විවරණය කළ ටැගයක් තිබේ නම් එය ක්‍රියාත්මක නොවේ. ව්‍යාජ ටැගය මඟින් විස්තර කිරීමේ විධානය මඟින් කැපවීම විස්තර කිරීමට ටැගයක් භාවිතා නොකිරීමට වග බලා ගනී,
Rado

8
git show-ref --head --hash head

ඔබ වේගය සඳහා යන්නේ නම්, ඩීස්ටාන් සඳහන් කළ ප්‍රවේශය

cat .git/refs/heads/<branch-name>

මෙතෙක් ලැයිස්තුගත කර ඇති වෙනත් ක්‍රමයකට වඩා සැලකිය යුතු වේගයකින් යුක්ත වේ.


show-refඅනාගත නිකුතුවකට ස්ථායී මට්ටමක එය ජලනල විධාන කිරීමේ සිට, විධානාවලි සඳහා ඇති හොඳම විකල්පය විය මට පෙනේ නිසා සහතික (හෝ අවම වශයෙන් ලඟාවූයේ): වෙනත් පිළිතුරු භාවිතා rev-parse, show, describe, හෝ log, සියලු පෝසිලේන් විධාන වන. වේගය සාරය නොමැති අවස්ථාවන්හිදී , show-refමෑන් පිටුවේ සටහන අදාළ වේ: '.git බහලුම යටතේ ලිපිගොනු වෙත කෙලින්ම ප්‍රවේශ වීම සඳහා මෙම උපයෝගීතාව භාවිතා කිරීම දිරිමත් කරනු ලැබේ.'
පොන්ට්

6

Git ලිපිගොනු වලින් සෘජුවම කියවීම භාවිතා කරමින් Bash shell හි එක්-ලයිනර් මෙන්න:

(head=($(<.git/HEAD)); cat .git/${head[1]})

ඔබගේ git root ෆෝල්ඩරයේ ඉහත විධානය ක්‍රියාත්මක කිරීමට ඔබට අවශ්‍යය.

ඔබ ගොනු ගබඩා කරන විට මෙම ක්‍රමය ප්‍රයෝජනවත් විය හැකි නමුත් gitවිධානය ස්ථාපනය කර නොමැත.

ක්‍රියා නොකරන්නේ නම්, .git/refs/headsඔබ සතුව ඇත්තේ කුමන ආකාරයේ හිස්දැයි ෆෝල්ඩරයේ පරීක්ෂා කරන්න .


5

ඔබගේ නිවසේ ".gitconfig" ගොනුවේ පහත සඳහන් දෑ එක් කරන්න

[alias]
sha = rev-parse HEAD

එවිට ඔබට මතක තබා ගැනීමට පහසු විධානයක් ඇත:

$ git sha
59fbfdbadb43ad0b6154c982c997041e9e53b600

3

Git bash මත, සරලව $ git log -1 ධාවනය කරන්න

ඔබේ විධානය අනුගමනය කරන මෙම රේඛා ඔබට පෙනෙනු ඇත.

commit d25c95d88a5e8b7e15ba6c925a1631a5357095db .. (info about your head)

d25c95d88a5e8b7e15ba6c925a1631a5357095db, is your SHA for last commit.

0

මෙන්න තවත් සෘජු ප්‍රවේශ ක්‍රියාත්මක කිරීමකි:

head="$(cat ".git/HEAD")"
while [ "$head" != "${head#ref: }" ]; do
  head="$(cat ".git/${head#ref: }")"
done

මෙය දේශීය පැකේජ ලේඛනාගාරයට ප්‍රයෝජනවත් වන http හරහා ද ක්‍රියා කරයි (මම දනිමි: පොදු වෙබ් අඩවි සඳහා .git නාමාවලිය ප්‍රවේශ විය හැකි ලෙස නිර්දේශ නොකරයි):

head="$(curl -s "$baseurl/.git/HEAD")"
while [ "$head" != "${head#ref: }" ]; do
  head="$(curl -s "$baseurl/.git/${head#ref: }")"
done


-1

git rev-parse HEAD උපක්‍රමය කරයි.

සැබෑ ශාඛාවක් සුරැකීමට වඩා පසුව නැවත පරීක්ෂා කිරීම සඳහා ඔබට එය ගබඩා කිරීමට අවශ්‍ය නම්:

cat .git/HEAD

උදාහරණ ප්‍රතිදානය:

ref: refs/heads/master

එය විග්‍රහ කරන්න:

cat .git/HEAD | sed "s/^.\+ \(.\+\)$/\1/g"

ඔබට කවුළු තිබේ නම් wsl.exe භාවිතා කිරීම ගැන සලකා බැලිය හැකිය:

wsl cat .git/HEAD | wsl sed "s/^.\+ \(.\+\)$/\1/g"

ප්‍රතිදානය:

refs/heads/master

මෙම අගය පසුව පරීක්ෂා කිරීම සඳහා භාවිතා කළ හැකි නමුත් එය එහි SHA වෙත යොමු වේ. වත්මන් වත්මන් ශාඛාව එහි නමින් පෙන්වා දීමට එය කරන්න:

wsl cat .git/HEAD | wsl sed "s/^.\+ \(.\+\)$/\1/g" | wsl sed "s/^refs\///g" | wsl sed "s/^heads\///g"

නිමැවුම්:

master

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.