ඔබ ඔබේ හිස වෙනස් කළ යුතුයි, ඇත්ත වශයෙන්ම ඔබේ නොවේ, නමුත් හෙඩ් ....
එබැවින් පිළිතුරු දීමට පෙර මෙය කුමක්දැයි පැහැදිලි කරමින් පසුබිමක් එකතු කරමු HEAD
.
First of all what is HEAD?
HEAD
යනු හුදෙක් වත්මන් ශාඛාවේ වර්තමාන බැඳීම (නවතම) වෙත යොමු කිරීමකි. ඕනෑම වේලාවක
තනි HEAD
විය හැකිය. (හැර git worktree
)
අන්තර්ගතය HEAD
ඇතුළත ගබඩා කර ඇති .git/HEAD
අතර එහි වර්තමාන බැඳීමේ බයිට් 40 SHA-1 අඩංගු වේ.
detached HEAD
ඔබ නවතම බැඳීම මත නොසිටින්නේ නම් - එහි අර්ථය HEAD
ඉතිහාසයේ පූර්ව කැපවීමකට යොමු වීමයි detached HEAD
.
විධාන රේඛාවේදී, එය HEAD
වත්මන් ශාඛාවේ අගයට යොමු නොවන බැවින් ශාඛා නාමය වෙනුවට SHA-1 ලෙස පෙනෙනු ඇත
වෙන්වූ හෙඩ් එකකින් සුවය ලබා ගන්නේ කෙසේද යන්න පිළිබඳ විකල්ප කිහිපයක්:
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back
මෙය අපේක්ෂිත කැපවීම වෙත යොමු කරමින් නව ශාඛාවක් පරීක්ෂා කරනු ඇත.
මෙම විධානය ලබා දී ඇති බැඳීමකට පිවිසෙනු ඇත.
මෙම අවස්ථාවේදී, ඔබට ශාඛාවක් සාදා මේ මොහොතේ සිට වැඩ කිරීමට පටන් ගත හැකිය.
# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
# in order to be able to update the code.
git checkout <commit-id>
# create a new branch forked to the given commit
git checkout -b <branch name>
ඔබට සෑම විටම එය භාවිතා reflog
කළ හැකිය.
git reflog
යාවත්කාලීන කරන ලද ඕනෑම වෙනසක් පෙන්වනු HEAD
ඇති අතර අපේක්ෂිත reflog ප්රවේශය පරීක්ෂා කිරීමෙන් මෙම බැඳීම සඳහා HEAD
පසුබෑමක් ඇති වේ.
HEAD වෙනස් කරන සෑම අවස්ථාවකම නව ප්රවේශයක් ලැබෙනු ඇත reflog
git reflog
git checkout HEAD@{...}
මෙය ඔබ අපේක්ෂිත කැපවීම වෙත ආපසු ගෙන යනු ඇත
ඔබේ හිස නැවත අපේක්ෂිත කැපවීමට "ගෙනයන්න".
# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32
# Alternatively, if there's work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts if you've modified things which were
# changed since the commit you reset to.
- සටහන: ( Git 2.7 සිට )
ඔබටද එය භාවිතා git rebase --no-autostash
කළ හැකිය.
ලබා දී ඇති කැපවීම හෝ කැපවීමේ පරාසය "අහෝසි කරන්න".
යළි පිහිටුවීමේ විධානය මඟින් ලබා දී ඇති කැපවීමෙහි කිසියම් වෙනස්කමක් "අහෝසි කරනු ඇත".
අහෝසි කිරීමේ පැච් සමඟ නව බැඳීමක් සිදු කෙරෙන අතර මුල් කැපවීම ඉතිහාසයේ ද පවතිනු ඇත.
# add new commit with the undo of the original one.
# the <sha-1> can be any commit(s) or commit range
git revert <sha-1>
මෙම විධානය මඟින් විදහා දක්වන්නේ කුමන විධානය කරන්නේද යන්නයි.
ඔබට පෙනෙන පරිදි reset && checkout
වෙනස් කරන්න HEAD
.