තවම තල්ලු කර නැති Git ඒකාබද්ධ කිරීමක් අහෝසි කරන්න


3956

මගේ ප්‍රධාන ශාඛාව තුළ, මම git merge some-other-branchදේශීයව කළෙමි , නමුත් කිසි විටෙකත් වෙනස්කම් මූලාරම්භක මාස්ටර් වෙත තල්ලු කළේ නැත. මම ඒකාබද්ධ කිරීමට අදහස් කළේ නැත, එබැවින් මම එය අහෝසි කිරීමට කැමතියි. git statusමගේ ඒකාබද්ධ වීමෙන් පසු සිදු කරන විට , මට මෙම පණිවිඩය ලැබුණි:

# On branch master
# Your branch is ahead of 'origin/master' by 4 commits.

මට හමු වූ උපදෙස් මත පදනම්ව , මම ධාවනය කිරීමට උත්සාහ කළෙමි

git revert HEAD -m 1

නමුත් දැන් මට මෙම පණිවිඩය ලැබෙන්නේ git status:

# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.

මගේ ශාඛාව කිසිදු කැපවීමකින් ඉදිරියෙන් සිටීමට මට අවශ්‍ය නැත. මම නැවත එම ස්ථානයට යන්නේ කෙසේද?


3
ඔබට ඉතිහාසය සුරැකීමට අවශ්‍ය නම්, වෙනත් වචන වලින් කිවහොත්, කිසිවෙකු ඔබෙන් කවදා හෝ ඉවත් කර ඇති හෝ ඔබ එය කොහේ හෝ තල්ලු කර ඇති වෙනසක් තිබේ නම් යූරි උෂකොව්ගේ පිළිතුර පහත දැක්වෙන පිළිතුර භාවිතා කරන්න!
සෙඩ්රික්

6
කරුණාකර වර්තමාන ජයග්‍රාහී පිළිතුර තෝරා නොගන්න, එය තවමත් ඡන්ද රැස් කරමින් සිටියද එය අනාරක්ෂිත ය (බොහෝ දෙනා පෙන්වා දුන් පරිදි). මට නම් "MBO" -s හොඳම දේ පෙනේ, එයට අඩු ලකුණු තිබුණත්.
inger



3
මෙය ගිතුබ් වෙතින් කෙළින්ම මහඟු සම්පතකි: Git සමඟ ඕනෑම දෙයක් අහෝසි කරන්නේ කෙසේද
jasonleonhard

Answers:


4476

සමග git reflogසිදු කරන චෙක්පත එක් පෙර ඒකාබද්ධ (වේ git reflogවඩා හොඳ විකල්පයක් වනු ඇත git log). එවිට ඔබට එය නැවත සැකසිය හැක:

git reset --hard commit_sha

තවත් ක්‍රමයක් තිබේ:

git reset --hard HEAD~1

එය ඔබට 1 කැපවීමක් ලබා දෙනු ඇත.

නවීකරණය කරන ලද සහ නොකැඩූ / නොකැඩූ ඕනෑම ලිපිගොනු ඒවායේ නවීකරණය නොකළ තත්වයට යලි සකසනු ඇති බව මතක තබා ගන්න . ඒවා වෙනස් කිරීම වළක්වා ගැනීමට හෝ පහත --mergeවිකල්පය බලන්න.


Answ වෙල්මොන්ට් ඔහුගේ පිළිතුරෙන් පහත යෝජනා කළ පරිදි, මෙම සෘජු නඩුවේදී:

git reset --hard ORIG_HEAD

එය ඔබගේ වෙනස්කම් ආරක්ෂා කළ යුතු බැවින් වඩා හොඳ ප්‍රති results ල ලබා දෙනු ඇත. ORIG_HEADඒකාබද්ධ වීම සිදුවීමට පෙර සෘජුවම බැඳීමක් වෙත යොමු වනු ඇත, එබැවින් ඔබ එය ඔබම දඩයම් කළ යුතු නැත.


තවත් ඉඟියක් නම් අනවශ්‍ය ලෙස ලිපිගොනු නැවත සකසන්නේ නැති නිසා --mergeස්විචය භාවිතා කිරීමයි --hard:

git reset --merge ORIG_HEAD

--merge

දර්ශකය යළි පිහිටුවීම සහ <commit> සහ HEAD අතර වෙනස් වන වැඩ කරන ගසෙහි ගොනු යාවත්කාලීන කරයි, නමුත් දර්ශකය සහ වැඩ කරන ගස අතර වෙනස් ඒවා තබා ගනී (එනම් එකතු නොකළ වෙනස්කම් ඇති).


129
මෙය (සැමවිටම?) ක්‍රියාත්මක වනු ඇතැයි මම නොසිතමි - “ඒකාබද්ධ වීමට පෙර එකක්” අනෙක් ශාඛාවෙන් ඒකාබද්ධ කරන ලද නවතම කැපවීම වනු ඇත - එය වර්තමාන ශාඛාවේ නවතම කැපවීම නොවනු ඇත . හරිද? (මෙය git logපෙරනිමියෙන් පෙන්වීමට තෝරාගත් දෙයෙහි ප්‍රති result ලයක් විය හැකිය - සමහර විට වෙනස් ප්‍රතිදානයක් git logහෝ git reflogමේ සඳහා භාවිතා කළ හැකිය)
ජෝන් බචීර්

6
මම හිතන්නේ එය ඔබ ස්කොෂ් ඒකාබද්ධ කරන්නේද යන්න මත රඳා පවතී.
මාකින් ගිල්

29
@ ජෝන් බචීර් හරි. තුළ git logනිෂ්පාදනය, ඔබ මව් අනාචාරයේ දෙකක් දෙස බලන්න ඕන. එකක් ඔබේ ශාඛාවේ නවතම කැපවීමයි, එකක් ඔබ ඒකාබද්ධ කළ ශාඛාවේ නවතම කැපවීමයි. ඔබ git reset --hardඒකාබද්ධ කළ ශාඛාව සඳහා දෙමව්පියන්ට කැපවීමට ඔබට අවශ්‍යය .
ජස්ටින්

7
@ ජෝන්බචීර්: “ඒකාබද්ධ කිරීම” සැබවින්ම වේගවත් ඉදිරි ගමනක් නොවන තාක් කල්, එහි ප්‍රති result ලය වනුයේ ලොගයේ ඉහළින්ම ඇති නව බැඳීමක් වන අතර, මෙම කැපවීමට දෙමව්පියන් දෙදෙනෙකු සිටී (හෝ ඔබ බූවල්ලෙකු කරන්නේ නම් 2 ට වඩා ඒකාබද්ධ කරන්න). ඔබ මෙම එක් ඒකාබද්ධ කිරීමේ කැපවීම ඉවත් කළහොත්, ඒකාබද්ධ වීමෙන් පැමිණි පැරණි කොමිස් සියල්ලම අතුරුදහන් වනු ඇත. ආරක්ෂිතව සිටීම සඳහා, යළි පිහිටුවීමෙන් පසු නව හිස කොහේදැයි ඔබට කියනු ඇත: "HEAD දැන් 88a04de <commit message>". මම සැමවිටම ඒ දෙස බලන්නේ මා බලාපොරොත්තු වූ තැනට මා පැමිණ ඇති බව තහවුරු කර ගැනීම සඳහා ය. දේවල් මතක තබා ගැනීමට මගේ ව්‍යාපෘතිය සම්මත ශාඛා නම් කිරීමේ ක්‍රමයක් භාවිතා කරයි.
මාර්ක් ඊ. හේස්

44
මට ප්‍රයෝජනවත් වූයේ "git reflog" දෙස බැලීම සහ මාස්ටර් විසින් කළ අවසාන කැපවීම සොයා බැලීමයි. ඉන්පසු කරන්නgit reset --hard <commit_sha>
මැක්ස් විලියම්ස්

1459

ඔබේ දේශීය ස්වාමියා සම්භවය / ස්වාමියාට වඩා ඉදිරියෙන් නොසිටීම ඔබට කළ හැකි ය

git reset --hard origin/master

එවිට ඔබේ ප්‍රාදේශීය masterශාඛාව සමාන විය origin/masterයුතුය.


71
කාටර් එය ඇත්තෙන්ම හොඳම පිළිතුර නොවේ. සමහර කොමිස් ඒකාබද්ධ කිරීමට පෙර ඔබේ ප්‍රාදේශීය ස්වාමියාට වඩා සම්භවය / ස්වාමියා ඉදිරියෙන් සිටිය හැකි අතර, එසේ වුවහොත් මෙය අපේක්ෂිත ප්‍රති results

15
h dhruva-sagar ඔව්, නමුත් ඔබ පිටුපසින් සිටින බව git නොකියන තාක් කල්, ඔබ ලබා නොගන්නේ නම්, ඔබ හොඳින් විය යුතුය.
කෙල්වින්

3
ස්තූතියි! ඔබට දුරස්ථ ගබඩාවක් තිබේ නම් (සහ පමණක් නම්) මෙය පරිපූර්ණ වේ.
tomc

2
නැත, මෙම ප්‍රශ්නය සඳහා එය පරිපූර්ණ එකක් නොවේ, "උපකල්පනය" වගන්තිය බලන්න. MBO හි පිළිතුර ඇත්ත වශයෙන්ම මෙම නඩුව ආවරණය කරයි, සහ ඒකාබද්ධ කිරීම එකම දේශීය බැඳීම නොවේ.
inger

2
නැවත වරක්, සමහර විට මෙම අනතුරු ඇඟවීමම
cregox

1176

බලන්න 4 Git පොත වන පරිච්ඡේදය හා ලිනස් ටොවල්ඩ්ස් විසින් මුල් පශ්චාත් .

දැනටමත් තල්ලු කර ඇති ඒකාබද්ධ කිරීමක් අහෝසි කිරීමට :

git revert -m 1 commit_hash

ලිනස් පැවසූ පරිදි, ඔබ නැවතත් ශාඛාව සිදු කරන්නේ නම් ආපසු හැරවීමට වග බලා ගන්න.


10
ection පරිපූර්ණතාකරු එකඟ විය :) මෙම ප්‍රශ්නය වෙනත් ප්‍රශ්නයකට සංක්‍රමණය කිරීමට ක්‍රමයක් තිබුනේ නම්
mikermcneil

ආපසු හැරවීම පිළිබඳ වැඩි විස්තර සඳහා: සබැඳිය
assaqqaf

1
මෙම ප්‍රතිවර්තනය ක්‍රියාත්මක වී ඇති බවට විශ්වාසයෙන් සිටීමට, ඔබට git diff hash1 hash2 කළ හැකිය, එහිදී hash1 යනු කැපවූ ප්‍රතිවර්තනය වන අතර, hash2 යනු ඔබ නැවත ලබා ගැනීමට උත්සාහ කළ පැරණි බැඳීමයි. ප්‍රතිදානයක් නැත == සාර්ථකයි! නවතම ඒකාබද්ධ කිරීම ආපසු හැරවීම සහ පසුපසට වැඩ කිරීම ආරම්භ කිරීමෙන් මෙය කිහිප වතාවක් සිදු කිරීමෙන් මට බහු කොමිස් ආපසු හැරවීමට හැකි විය. git diff මට පෙන්වූයේ මට අවශ්‍ය තත්වයට පත්ව ඇති බවයි.
රොබට් සින්ටන්

6
මෙය ඇත්ත වශයෙන්ම මුල් පෝස්ටරයේ ප්‍රශ්නය විසඳන්නේ නැති බව සැලකිල්ලට ගන්න . මුල් පෝස්ටරය දැනටමත් භාවිතා කර git revert -m 1 <commit>ඇත. ගැටළුව වන්නේ එසේ කිරීමෙන් ඔහු කළ අහම්බෙන් ඒකාබද්ධ වීම මකා නොදැමීමයි (සහ තවම තල්ලු වී නැත). දෘ post යළි පිහිටුවීම් සම්බන්ධ අනෙක් පිළිතුරු මුල් පෝස්ටරයේ ගැටලුවට වඩා හොඳය.

මෙය ගිතුබ් වෙතින් කෙළින්ම මහඟු සම්පතකි: Git සමඟ ඕනෑම දෙයක් අහෝසි කරන්නේ කෙසේද
jasonleonhard

988

සරලම විධානය අතුරුදහන් වීම පුදුමයකි. බොහෝ පිළිතුරු ක්‍රියාත්මක වන නමුත් ඔබ කළ ඒකාබද්ධ කිරීම අහෝසි කිරීම, මෙය පහසු සහ ආරක්ෂිත ක්‍රමයයි :

git reset --merge ORIG_HEAD

ORIG_HEADඒකාබද්ධ කිරීම ආරම්භ වීමට පෙර සිට මුල් බැඳීම වෙත යොමු වේ.

( --mergeවිකල්පය ඒකාබද්ධ කිරීම සමඟ කිසිදු සම්බන්ධයක් නැත. එය හරියට සමාන ය git reset --hard ORIG_HEAD, නමුත් එය අනාරක්ෂිත වෙනස්කම් ස්පර්ශ නොකරන බැවින් ආරක්ෂිත වේ.)


17
එතැන් සිට ඔබ ඔබේ වැඩ කරන ගස අපිරිසිදු කර ඇත්නම්, git reset --merge ORIG_HEADඑම වෙනස්කම් ආරක්ෂා කරයි.
yingted

1
මේ වන එකම (- වෙනස සටහන් මම කියන මේ හොඳම පිළිතුර වන්නේ නැත) නිවැරදි පිළිතුර. අපි කියමු, මාස්ටර්, මම t1, t3, සහ t5 හි කොමිස් 3 ක් කළා. ශාඛා 1 හි මම t2, t4 සහ t6 හි අදහස් 3 ක් කළෙමි (t1, t2, t3, t4, t5 සහ t6 කාලානුක්‍රමික පිළිවෙලට ඇතැයි සිතමු). සමාන ඕනෑම විධානයක් git reset --hard HEAD~5HEAD පමණක් නැවත සකසනු ඇත (ප්‍රධාන හා ශාඛා 1 යන දෙඅංශයේම කැපවීම් ඉවත් කළ හැකිය). --mergeඉවත් කරන්නේ විකල්පය පමණි merge.
මනු මංජුනාත්

An මානු --mergeවිකල්පය ඇත්ත වශයෙන්ම ඒකාබද්ධ කිරීම ඉවත් නොකරයි, ඔබට එය භාවිතා කළ හැකිය --hardඑයද හොඳින් ක්‍රියාත්මක වේ. එය මෙහි ඉඟිය වන ORIG_HEAD ය, එය ඔබ එම ස්ථානයේ සිටගෙන සිටින ස්ථානයට ඒකාබද්ධ කිරීමට පෙර සකසා ඇත. :)
ඔඩින්හෝ - වෙල්මොන්ට්

"ඔබ වැඩ කරන ගස අපිරිසිදු කර ඇත්නම්, git reset --merge ORIG_HEAD එම වෙනස්කම් ආරක්ෂා කරයි." ඔබ අදහස් කළේ ඒකාබද්ධ කිරීමෙන් පසු ගොනු වෙනස් කිරීමද? කෙසේ හෝ මම ඒකාබද්ධ කිරීම හා පසුව ගැටුම් නිරාකරණය කිරීම සිදු කළෙමි. නමුත් පසුව මට ඒකාබද්ධ කිරීම නැවත සැකසීමට අවශ්‍ය වූ අතර මෙම පිළිතුරේ උපදෙස් පරිදි එය කළෙමි. සෑම දෙයක්ම හොඳින් සිදු වූ අතර ඒකාබද්ධ වීමෙන් පසුව සිදු කළ මගේ වෙනස්කම් එය ආරක්ෂා කර නැත. මම ඒකාබද්ධ කිරීමට පෙර මගේ දේශීය රිපෝ එක තනතුරට සමානයි.
සමිත චතුරංග

මෙම git reset --hard ORIG_HEADවිධානය මා වෙනුවෙන් පරිපූර්ණව ක්‍රියාත්මක විය - git mergeමා විසින් අහෝසි කිරීමට උත්සාහ කළ දේශීයයෙන් පසුව මම ගබඩාවේ වෙනත් වෙනස්කම් සිදු නොකිරීම ඊට උදව් වන්නට ඇත. විධානය සරලවම නිධියේ තත්වය ඒකාබද්ධ කිරීමට පෙර තිබූ ආකාරය නැවත සකසන්න. නියම ඉඟියට ස්තූතියි!
බ්ලූබිනරි

391

නව Git අනුවාද සමඟ, ඔබ තවමත් ඒකාබද්ධ කිරීම සිදු කර නොමැති නම් සහ ඔබට ඒකාබද්ධ කිරීමේ ගැටුමක් තිබේ නම් , ඔබට සරලවම කළ හැකිය:

git merge --abort

සිට man git merge:

[මෙය] ක්‍රියාත්මක කළ හැක්කේ ඒකාබද්ධ කිරීම ගැටුම් ඇති වූ පසුව පමණි. git merge --abortඒකාබද්ධ කිරීමේ ක්‍රියාවලිය නවතා දමා ඒකාබද්ධ වීමට පෙර තත්වය ප්‍රතිනිර්මාණය කිරීමට උත්සාහ කරනු ඇත.


8
ඔහුගේ ඒකාබද්ධ කිරීම සිදු කර ඇති නමුත් තල්ලු නොකෙරේ (මාතෘකාව බලන්න), ඔහු දැනටමත් ඒකාබද්ධ වී ඇත, ඔබේ විධානය ක්‍රියාත්මක වන්නේ ඔහු තවමත් ඒකාබද්ධයක් මධ්‍යයේ සිටින විට පමණි
JBoy

135

ඔබ පෙර කළ බැඳීමට නැවත සකස් කළ යුතුය. මෙය ක්‍රියාත්මක විය යුතුය:

git reset --hard HEAD^

නැත්නම් පවා HEAD^^ එම ආපසු හැරවීමේ කැපවීම ආපසු හැරවීමට . ඔබ පියවර කීයක් ආපසු ගත යුතු දැයි ඔබට විශ්වාස නැත්නම් ඔබට සෑම විටම සම්පූර්ණ SHA යොමු කිරීමක් ලබා දිය හැකිය.

ඔබට ගැටළු ඇති විට සහ ඔබේ ප්‍රධාන ශාඛාවට කිසිදු දේශීය වෙනසක් සිදු නොවූ විට, ඔබට නැවත සැකසිය හැක origin/master.


5
හොඳම පිළිතුර IMHO, OP හි ම එකක් (ආපසු හැරවීමට පියවර 1 ක් පමණක් යැයි උපකල්පනය කරයි, එය Q හි තත්වය ලෙස පෙනේ), සහ සසම්භාවී 3 හි කෙටිමඟ (ඔබේ ප්‍රධාන ශාඛාවට කිසිදු දේශීය වෙනසක් සිදු නොවූ විට ක්‍රියාත්මක වේ) ")
inger

4
ඔබ අදහස් දක්වන්නන්, “ඉන්ජර් සහ කොන්ස්ටන්ටින්, ඇයි? ඔබ මෙහි පැමිණියේ මගේ පිළිතුර නිර්මාණය කිරීමෙන් පසුව වන අතර එය වඩාත් නිවැරදි ය. හෙඩ් එක ඉහළට යාම බොහෝ විට වැරදියි, ඇත්ත වශයෙන්ම ඔබ කොපමණ දුරක් යා යුතුද යන්න ගණන් ගත යුතුය. Git දැනටමත් ORIG_HEADඔබ වෙනුවෙන් සකසා ඇත, ඇයි එය භාවිතා නොකරන්නේ?
ඔඩින්හෝ - වෙල්මොන්ට්

එය දේශීය වෙනස්කම් ද යළි පිහිටුවනු ඇත්ද? # කරුණාකර යාවත්කාලීන කරන්න.
CoDe

මෙය මට හොඳින් ක්‍රියාත්මක වූ අතර, හිස නැවත සකස් කිරීම මෙහි පිළිතුරු වලින් අඩකට වඩා අර්ථවත් කරයි.
වර්ඩා එලෙන්ටරි

HEAD ^ යනු HEAD ට පෙර කැපවීමද? සහ two කොමිස් දෙකක් පෙරද? මෙය වේගවත් ඉදිරි ඒකාබද්ධ කිරීම් සමඟ ක්‍රියා නොකරනු ඇතැයි අනුමාන කිරීම?
මාකස් ලියොන්

87

මෑතකදී, මම මේ git reflogසඳහා උදව් කිරීමට භාවිතා කර ඇත. මෙය බොහෝ දුරට ක්‍රියාත්මක වන්නේ ඒකාබද්ධ කිරීම සිදු වූවා නම් පමණක් වන අතර එය ඔබගේ යන්ත්‍රයේ විය.

git reflog මෙවැනි දෙයක් ආපසු ලබා දිය හැකිය:

fbb0c0f HEAD@{0}: commit (merge): Merge branch 'master' into my-branch
43b6032 HEAD@{1}: checkout: moving from master to my-branch
e3753a7 HEAD@{2}: rebase finished: returning to refs/heads/master
e3753a7 HEAD@{3}: pull --rebase: checkout e3753a71d92b032034dcb299d2df2edc09b5830e
b41ea52 HEAD@{4}: reset: moving to HEAD^
8400a0f HEAD@{5}: rebase: aborting

පළමු පේළියේ දැක්වෙන්නේ ඒකාබද්ධ කිරීමක් සිදු වූ බවයි. 2 වන පේළිය මගේ ඒකාබද්ධ වීමට පෙර කාලයයි. මම හුදෙක් git reset --hard 43b6032මෙම ශාඛාවට ඒකාබද්ධ වීමට පෙර සිට ලුහුබැඳීමට බල කර, ඉදිරියට ගෙන යන්නෙමි .


නියම පිළිතුර, ස්තූතියි! ඒකාබද්ධ කිරීමක් අහෝසි කිරීමට අවශ්‍ය වූ නමුත් අනෙක් පිළිතුරු එය තව තවත් අවුල් reflogකරමින් SHA ලබාගෙන එය ක්‍රියාත්මක කිරීමට සමත් විය git reset.
ලන්කිමාර්ට්

51

නවීන Git සමඟ, ඔබට:

git merge --abort

පැරණි වාක්‍ය ඛණ්ඩය:

git reset --merge

පරණ පාසල:

git reset --hard

නමුත් ඇත්ත වශයෙන්ම, එය ලබා දීම git merge --abortහා සමාන වන බව සැලකිල්ලට ගැනීම වටී . ඒකාබද්ධ කිරීමේ විධානය සඳහා Git උදව්වෙන් මෙය කියවිය හැකිය.git reset --mergeMERGE_HEAD

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

අසාර්ථක ඒකාබද්ධ වීමෙන් පසුව, නොමැති විට MERGE_HEAD, අසාර්ථක වූ ඒකාබද්ධ කිරීම අහෝසි කළ හැකිය git reset --merge, නමුත් අවශ්‍යයෙන්ම නොවේ git merge --abort, එබැවින් ඒවා එකම දේ සඳහා පැරණි හා නව වාක්‍ය ඛණ්ඩ පමණක් නොවේ .

පුද්ගලිකව මම git reset --mergeඑදිනෙදා කටයුතුවලදී වඩා බලවත් හා ප්‍රයෝජනවත් යැයි සිතමි, එබැවින් මම නිතරම භාවිතා කරන්නේ එයයි.


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

මෙම පිළිතුර OP හි තත්වය කෙරෙහි අවධානය යොමු නොකරන අතර වැදගත් සන්දර්භය අතහැර දමයි.
බෙන් වීලර්

37

හරි, මෙහි සිටින අනෙක් අය මට දුන් පිළිතුරු සමීපයි, නමුත් එය සාර්ථක වූයේ නැත. මෙන්න මම කළ දේ.

මේක කරනවා ...

git reset --hard HEAD^
git status

... මට පහත තත්වය ලබා දුන්නේය.

# On branch master
# Your branch and 'origin/master' have diverged,
# and have 3 and 3 different commit(s) each, respectively.

මට පසුව එකම git resetවිධානය තවත් කිහිප වතාවක් ටයිප් කිරීමට සිදු විය . මම එය කළ සෑම අවස්ථාවකම, පහත දැක්වෙන පරිදි පණිවිඩය එකකින් වෙනස් විය.

> git reset --hard HEAD^
HEAD is now at [...truncated...]
> git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 3 and 3 different commit(s) each, respectively.
> git reset --hard HEAD^
HEAD is now at [...truncated...]
> git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 3 different commit(s) each, respectively.
> git reset --hard HEAD^
HEAD is now at [...truncated...]
> git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 1 and 3 different commit(s) each, respectively.
> git reset --hard HEAD^
HEAD is now at [...truncated...]
> git status
# On branch master
# Your branch is behind 'origin/master' by 3 commits, and can be fast-forwarded.

මෙම අවස්ථාවෙහිදී, තත්ව පණිවිඩය වෙනස් වී ඇති බව මම දුටුවෙමි, එබැවින් මම එය කිරීමට උත්සාහ කළ අතර එය ක්‍රියාත්මක git pullවන බවක් පෙනෙන්නට තිබුණි:

> git pull
Updating 2df6af4..12bbd2f
Fast forward
 app/views/truncated |    9 ++++++---
 app/views/truncated |   13 +++++++++++++
 app/views/truncated |    2 +-
 3 files changed, 20 insertions(+), 4 deletions(-)
> git status
# On branch master

එතරම් දීර් story කතන්දර කෙටියෙන්, මගේ විධානයන් මේ සඳහා පැමිණියේ:

git reset --hard HEAD^
git reset --hard HEAD^
git reset --hard HEAD^
git reset --hard HEAD^
git pull

19
හෝ ඔබ භාවිත කර හැකිHEAD^^^^
හසන්

17
සමහර විට origin/master;) වෙත නැවත සකසන්න .)
hasen

23

git reflogපෙර පිටවීම සොයා ගැනීමට ඔබට භාවිතා කළ හැකිය. සමහර විට එය ඔබට නැවත පැමිණීමට අවශ්‍ය හොඳ තත්වයකි.

සංක්ෂිප්තව,

$ git reflog
$ git reset --hard HEAD@{0}

1
ඔබට ස්තුතියි! ඔබ මගේ වැඩවලින් දින භාගයක් ඉතිරි කළා. කෙසේ වෙතත් මට කිසිදු විධානයක් සමඟ reflog ප්‍රකාරයෙන් පිටවීමට නොහැකි විය.
කටාර්සිනා

1
At කැටාර්සිනා "q" යතුර භාවිතා කර reflog වෙතින් පිටවීමට
Amjed Baig

21

ඔබ ඒකාබද්ධ කිරීමේ මධ්‍යයේ නම් ඔබට එය සැමවිටම ගබ්සා කළ හැකිය git merge --abort


2
ස්තූතියි සහෝදරයා සහ මම ඒ බියජනක දේවල් නිවැරදි පිළිතුරක් කිරීමට සූදානම්ව සිටියෙමි. වාසනාවන්තයි මම පහළට ගියා. මට අවශ්‍ය වන්නේ ඒකාබද්ධ කිරීමේ හිස මකා දැමීමටයි
නියු

15

කැපවීමේ හැඳුනුම්පතක් සෙවීම සම්බන්ධ නොවන තනි විධානයකින් මෙම ගැටළුව විසඳීමට මට හැකි විය.

git reset --hard remotes/origin/HEAD

පිළිගත් පිළිතුර මට වැඩ නොකළ නමුත් මෙම විධානය මා සොයන ප්‍රති results ල ලබා ගත්තේය.


හරියටම! එය ඔබගේ වෙනස්කම් ශාඛාවේ හෙඩ් වෙත යලි සකසයි! එකින් එක නොකිරීම
කාලෝස් සිනාටෝ

මට වැඩ කළේ නැහැ. ඇත්ත වශයෙන්ම මාසයක් හෝ දෙකක් දේශීය ශාඛාව යැවීම අවසන් විය. ස්තූතියි, මේ සියල්ලම දේශීය බැවින් මට සෑම විටම ශාඛාව විනාශ කර නැවත ලබා ගත හැකිය. අනෙක් අය මෙය උත්සාහ කළහොත් එය පෙන්වා දීමට අවශ්‍ය විය.
මැට් පෙන්ගලි

AttMattPengelly මෙම ක්‍රමය බොහෝ දුරට ලේඛනගත කර නොමැති අතර සාමාන්‍යයෙන් ඔබ ඒකාබද්ධ වීමට පෙර ඔබේ ශාඛාව දුරස්ථ ශාඛාව සමඟ සමපාත වේ නම් එය ක්‍රියාත්මක වේ. ඔබේ ශාඛාව දුරස්ථ ශාඛාව සමඟ සමපාත වී මාස ගණනක් ගත වී තිබේද?
රැල්ෆ් රිටොක්

Att මැට්පෙන්ගලි එය හෙඩ් පෙන්වා ඇති ශාඛාව මත ද රඳා පවතී. මම මගේ එක් ව්‍යාපෘතියක් සඳහා gitflow භාවිතා කරන අතර, මම සංවර්ධන ශාඛාවේ සිටියද, දුරස්ථ / සම්භවය / HEAD සම්භවය / ස්වාමියා වෙත යොමු කර ඇත, එබැවින් ඒකාබද්ධ කිරීමක් අහෝසි කිරීමට අවශ්‍ය නම් මට දුරස්ථ වෙත නැවත සැකසීමට අවශ්‍ය වනු ඇත. / සම්භවය / සංවර්ධනය
රැල්ෆ් රිටොක්

14

ඔබ තවමත් එය සිදු නොකළේ නම්, ඔබට භාවිතා කළ හැක්කේ එය පමණි

$ git checkout -f

එය ඒකාබද්ධ කිරීම අහෝසි කරනු ඇත (සහ ඔබ කළ සියල්ල).


මෙය උත්සාහ කළ අතර එය ඇත්ත වශයෙන්ම මගේ ප්‍රාදේශීය ශාඛාව ඉදිරියෙන් සිටින කොමිස් ගණන වැඩි කළේය.
බාර්ක්ලේ

14

ගැලපෙන මූලාරම්භය වෙත ආපසු යාමට ද මෙම ප්‍රශ්නයට යොමු විය (එනම්, මූලාරම්භයට පෙර කිසිවක් සිදු නොවේ). වැඩිදුර පර්යේෂණ කිරීමේදී, ඒ සඳහා resetවිධානයක් ඇති බව සොයා ගන්නා ලදී:

git reset --hard @{u}

සටහන: @{u}සඳහා කෙටිමං වේ origin/master. (ඇත්ත වශයෙන්ම, මෙය ක්‍රියාත්මක වීමට ඔබට එම දුරස්ථ ගබඩාව අවශ්‍ය වේ.)


14

ඔබ ඔබේ හිස වෙනස් කළ යුතුයි, ඇත්ත වශයෙන්ම ඔබේ නොවේ, නමුත් හෙඩ් ....

එබැවින් පිළිතුරු දීමට පෙර මෙය කුමක්දැයි පැහැදිලි කරමින් පසුබිමක් එකතු කරමු 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

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>

git reflog

ඔබට සෑම විටම එය භාවිතා reflogකළ හැකිය.
git reflogයාවත්කාලීන කරන ලද ඕනෑම වෙනසක් පෙන්වනු HEADඇති අතර අපේක්ෂිත reflog ප්‍රවේශය පරීක්ෂා කිරීමෙන් මෙම බැඳීම සඳහා HEADපසුබෑමක් ඇති වේ.

HEAD වෙනස් කරන සෑම අවස්ථාවකම නව ප්‍රවේශයක් ලැබෙනු ඇත reflog

git reflog
git checkout HEAD@{...}

මෙය ඔබ අපේක්ෂිත කැපවීම වෙත ආපසු ගෙන යනු ඇත

රූප විස්තරය මෙහි ඇතුළත් කරන්න


git reset --hard <commit_id>

ඔබේ හිස නැවත අපේක්ෂිත කැපවීමට "ගෙනයන්න".

# 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කළ හැකිය.

git revert <sha-1>

ලබා දී ඇති කැපවීම හෝ කැපවීමේ පරාසය "අහෝසි කරන්න".
යළි පිහිටුවීමේ විධානය මඟින් ලබා දී ඇති කැපවීමෙහි කිසියම් වෙනස්කමක් "අහෝසි කරනු ඇත".
අහෝසි කිරීමේ පැච් සමඟ නව බැඳීමක් සිදු කෙරෙන අතර මුල් කැපවීම ඉතිහාසයේ ද පවතිනු ඇත.

# 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.

රූප විස්තරය මෙහි ඇතුළත් කරන්න


මෙය නිධානයකි 🐱‍‍‍‍‍‍
ජවාන්ඩ් සිං

12

සරලම පිළිතුර වන්නේ ඔඩින්හෝ විසින් ලබා දුන් පිළිතුරයි - වෙල්මොන්ට්

මුලින්ම කරන්න git reset --merge ORIG_HEAD

වෙනස්කම් තල්ලු කිරීමෙන් පසු නැවත සැකසීමට බලාපොරොත්තු වන අය සඳහා, මෙය කරන්න (මන්දයත් ඕනෑම git reset ඒකාබද්ධ කිරීමේ ප්‍රශ්න සඳහා දැකිය හැකි පළමු ලිපිය මෙය වන බැවිනි)

git push origin HEAD --force

මෙය නැවත සැකසීමෙන් පසුව නැවත ඒකාබද්ධ වූ වෙනස්කම් ඔබට නොලැබෙනු ඇත.


10

බැලීමට අමතර විකල්පයක් සඳහා, මම මෙහි විස්තර කර ඇති ශාඛා ආකෘතිය බොහෝ දුරට අනුගමනය කර ඇත: http://nvie.com/posts/a-successful-git-branching-model/ සහ ඒ සමඟ ඒකාබද්ධ වී ඇත--no-ff (නැත වේගයෙන් ඉදිරියට) සාමාන්‍යයෙන්.

මගේ නිදහස් කිරීමේ ශාඛාව වෙනුවට පරීක්ෂණ ශාඛාවක් අහම්බෙන් ඒකාබද්ධ කිරීම සඳහා මා මෙම පිටුව කියවා ඇත (වෙබ් අඩවිය, මාස්ටර් යනු සජීවී දේ). පරීක්ෂණ ශාඛාවට තවත් ශාඛා දෙකක් ඒකාබද්ධ වී ඇති අතර එහි එකතුව හයක් පමණ වේ.

ඒ නිසා සම්පූර්ණ කැපවීම ආපසු හැරවීමට මට එකක් අවශ්‍ය වූ git reset --hard HEAD^අතර එය සමස්ත ඒකාබද්ධය ආපසු හැරවිය. ඒකාබද්ධ කිරීම් වේගයෙන් ඉදිරියට නොපැමිණීම නිසා ඒකාබද්ධ කිරීම අවහිරයක් වූ අතර එක් පියවරක් පසුපසට “ශාඛාව ඒකාබද්ධ නොවේ”.


10

ඒකාබද්ධ කිරීමක් ආපසු හැරවීමට හෝ නිශ්චිත බැඳීමකින් නැවත ආරම්භ කිරීමට ඔබට භාවිතා කළ හැක්කේ විධාන දෙකක් පමණි:

  1. git reset --hard commitHash (නැවත ආරම්භ කිරීමට අවශ්‍ය කැපවීම ඔබ භාවිතා කළ යුතුය, උදා. 44a587491e32eafa1638aca7738)
  2. git push origin HEAD --force (නව දේශීය ප්‍රධාන ශාඛාව සම්භවය / මාස්ටර් වෙත යැවීම)

වාසනාව හා ඉදිරියට යන්න!


10

එය විවිධ ආකාරවලින් කළ හැකිය.

1) අත්හිටුවීම ඒකාබද්ධ කිරීම

ඔබ නරක ඒකාබද්ධ කිරීමක් අතර සිටී නම් (වැරදියට වැරදි ශාඛාවක් සමඟ), සහ ඒකාබද්ධ වීම වළක්වා ගැනීමට අවශ්‍ය නම් පහත සඳහන් පරිදි නවතම ශාඛාව වෙත ආපසු යන්න:

git merge --abort

2) HEAD දුරස්ථ ශාඛාවට නැවත සකසන්න

ඔබ දුරස්ථ සංවර්ධන ශාඛාවෙන් වැඩ කරන්නේ නම්, ඔබට පහත පරිදි දුරස්ථ ශාඛාවේ අවසාන කැපවීම දක්වා HEAD නැවත සැකසිය හැකිය:

git reset --hard origin/develop

3) වත්මන් ශාඛාව මකා දමා දුරස්ථ ගබඩාවෙන් නැවත පරීක්ෂා කරන්න

සලකා බැලීමේදී, ඔබ දුරස්ථ / සංවර්ධන ශාඛාව සමඟ සමමුහුර්ත කරන දේශීය රෙපෝ හි ශාඛා සංවර්ධනය කිරීමට කටයුතු කරමින් සිටී, ඔබට පහත පරිදි කළ හැකිය:

git checkout master 
##to delete one branch, you need to be on another branch, otherwise you will fall with the branch :) 

git branch -D develop
git checkout -b develop origin/develop

"1) ගබ්සා කිරීම ඒකාබද්ධ කිරීම" සෑහේ. ඉහළට.
CodeToLife

1
පරෙස්සම් වෙන්න! GIT මුසුව "--abort මුසුව ක්රියාවලිය නවත්වා පෙර ඒකාබද්ධ රාජ්ය ප්රතිසංස්කරණය කිරීමට උත්සාහ කරනු ඇත මුසුව ගැටුම් හේතු වී ඇත පසු පමණක් ක්රියාත්මක කළ හැකි GIT මුසුව." --abort
තුඩුව ගාර්ෂියා මෙඩිනා

8

ඔබගේ ඒකාබද්ධ කිරීම හා ඊට අනුරූප කොමිස් තවම තල්ලු කර නොමැති නම්, ඔබට සැමවිටම වෙනත් ශාඛාවකට මාරුවිය හැකිය, මුල් එක මකා දමා නැවත නිර්මාණය කළ හැකිය.

උදාහරණයක් ලෙස, මම අහම්බෙන් සංවර්ධිත ශාඛාවක් මාස්ටර් බවට ඒකාබද්ධ කළ අතර එය අහෝසි කිරීමට අවශ්‍ය විය. පහත පියවර භාවිතා කිරීම:

git checkout develop
git branch -D master
git branch -t master origin/master

වොයිලා! මාස්ටර් මූලාරම්භයේ එකම අවධියේ සිටින අතර ඔබේ වැරදි ලෙස ඒකාබද්ධ වූ තත්වය මකා දමනු ලැබේ.


1
සටහන: මෙය ඒකාබද්ධ කිරීම අහෝසි කරනවා පමණක් නොව, නවතම මූලාරම්භයේ සිට සිදු කරන ලද ඕනෑම දේශීය කොමිස් ද වේ.
මාර්ටිජන් හීමල්ස්

4

ඔබට විධාන රේඛා විසඳුමක් අවශ්‍ය නම්, MBO හි පිළිතුර සමඟ යාමට මම යෝජනා කරමි.

ඔබ නවකයෙක් නම්, ඔබට චිත්‍රක ප්‍රවේශයට කැමති විය හැකිය:

  1. ඉවත් කරන්න gitk(විධාන රේඛාවෙන්, හෝ ගොනු බ්‍රවුසරයේ දකුණු ක්ලික් කරන්න ඔබට එය තිබේ නම්)
  2. එහි ඒකාබද්ධ කිරීමේ කැපවීම ඔබට පහසුවෙන් හඳුනාගත හැකිය - ඉහළ සිට දෙමව්පියන් දෙදෙනෙකු සමඟ පළමු නෝඩය
  3. පළමු / වම් මාපිය වෙත සබැඳිය අනුගමනය කරන්න (ඒකාබද්ධ වීමට පෙර ඔබගේ වර්තමාන ශාඛාවේ ඇති, සාමාන්‍යයෙන් මට රතු)
  4. තෝරාගත් බැඳීම මත, "ශාඛාව නැවත සකසන්න" මත දකුණු-ක්ලික් කරන්න, එහි දෘ reset යළි පිහිටුවීම තෝරන්න

4

උපායමාර්ගය: සෑම දෙයක්ම හොඳ තැනක සිට නව ශාඛාවක් සාදන්න.

තාර්කිකත්වය: ඒකාබද්ධ කිරීම ආපසු හැරවීම දුෂ්කර ය. ඔබ ඔබේ ඒකාබද්ධ කිරීම සිදුකළේ ද නැතහොත් තල්ලු කළේ ද යන්න හෝ ඔබ ඒකාබද්ධ වූ දා සිට නව කොමිස් තිබේ ද යන්න වැනි බොහෝ සාධක මත පදනම්ව බොහෝ විසඳුම් තිබේ. මෙම විසඳුම් ඔබේ නඩුවට අනුවර්තනය කිරීම සඳහා ඔබට තවමත් git පිළිබඳ ගැඹුරු අවබෝධයක් තිබිය යුතුය. ඔබ අන්ධ ලෙස යම් උපදෙස් අනුගමනය කරන්නේ නම්, ඔබට කිසිවක් හිස් නොවන "හිස් ඒකාබද්ධ කිරීමක්" සමඟ අවසන් විය හැකි අතර, තවදුරටත් ඒකාබද්ධ කිරීමේ උත්සාහයන් මඟින් Git ඔබට "දැනටමත් යාවත්කාලීන" යැයි කියනු ඇත.

විසඳුමක්:

ගේ ඔබ ඒකාබද්ධ කිරීමට අවශ්ය බවත් කියන්න මට ඉඩ දෙන්න devබවට feature-1.

  1. ඔබට ඒකාබද්ධය ලැබීමට අවශ්‍ය සංශෝධනය සොයා ගන්න:

    git log --oneline feature-1
    a1b2c3d4 Merge branch 'dev' into 'feature-1' <-- the merge you want to undo
    e5f6g7h8 Fix NPE in the Zero Point Module <-- the one before the merge, you probably want this one
    
  2. එය පරීක්ෂා කරන්න (නියමිත වේලාවට ආපසු යන්න):

    git checkout e5f6g7h8
    
  3. එතැන් සිට නව ශාඛාවක් සාදා එය පරීක්ෂා කරන්න:

    git checkout -b feature-1
    

දැන් ඔබට ඔබේ ඒකාබද්ධ කිරීම නැවත ආරම්භ කළ හැකිය:

  1. ඒකාබද්ධ කරන්න: git merge dev

  2. ඔබගේ ඒකාබද්ධ කිරීමේ ගැටුම් නිරාකරණය කරන්න.

  3. කැපවීම: git commit

  4. ප්‍රති results ල ගැන ඔබ සෑහීමකට පත්වන විට, පැරණි ශාඛාව මකන්න: git branch --delete feature-1


2

නව ශාඛාවක් සාදන්න, ඉන්පසු චෙරි-පික් අපේක්ෂිත ඒ සඳහා කැපවන්න.

එහි සුරැකුම් සහ සරල පසුව ඉහත බොහෝ පිළිතුරු වල විස්තර කර ඇති යළි පිහිටුවයි


1
මෙම යෝජනාවට මම එකඟ වෙමි, විශේෂයෙන් ඔබ ලැයිස්තුගත කර ඇති git විධානයන් සමඟ සම්පුර්ණයෙන්ම සැපපහසු නොවේ නම්. වැඩි "වෙහෙසක්" සමඟ මෙය මන්දගාමී විය හැකි නමුත්, එය එතරම් පැමිණෙන්නේ නැතිනම් සහ ඔබේ වැඩ අහිමි වීම ගැන ඔබ සැලකිලිමත් වන්නේ නම්, එය උත්සාහ කිරීම වටී.
ග්‍රෙග්

1

ඔබට ප්ලස් වන් නැවත පෙරළීමට අවශ්‍ය නම් හඳුනාගැනීමේ හැෂ් git rebase -i [hash] [branch_name] කොතැනද [hash]යන්න ඔබට කළ හැකි යැයි මම සිතමි (නැතහොත් ඔබට කොපමණ වාර ගණනක් ආපසු යාමට අවශ්‍යද යන්න) ඉන්පසු ඔබට තවදුරටත් අවශ්‍ය නොවන සංස්කාරකයේ ඇති කොමිස් සඳහා රේඛා මකන්න. . ගොනුව සුරකින්න. පිටවීම. යාච් .ා කරන්න. එය නැවත සකස් කළ යුතුය. ඔබට git reset --hardඑය කිරීමට සිදු විය හැකිය, නමුත් මේ අවස්ථාවේදී එය හොඳ විය යුතුය. ඔබේ ඉතිහාසය තුළ ඒවා තබා ගැනීමට ඔබට අවශ්‍ය නැතිනම්, විශේෂිත කොමිස් තොගයක් පිටතට ඇද ගැනීමට ඔබට මෙය භාවිතා කළ හැකිය, නමුත් එමඟින් ඔබේ ගබඩාව ඔබට බොහෝ විට අවශ්‍ය නොවන තත්වයකට පත් කළ හැකිය.


1

ඔබ ඒකාබද්ධ කිරීම සිදු කළේ නම්:

git reset HEAD~1
# Make sure what you are reverting is in fact the merge files
git add .
git reset --hard

1
  1. පළමුව, ඔබ සියල්ල කැප කර ඇති බවට වග බලා ගන්න.

  2. ඉන්පසු ඔබේ ගබඩාව කලින් වැඩ කරන තත්වයට යලි සකසන්න:

    $ git reset f836e4c1fa51524658b9f026eb5efa24afaf3a36
    

    හෝ භාවිතා කිරීම --hard( මෙය සියලු දේශීය, කැපවූ වෙනස්කම් ඉවත් කරනු ඇත! ):

    $ git reset f836e4c1fa51524658b9f026eb5efa24afaf3a36 --hard
    

    ඔබ වැරදියට ඒකාබද්ධ කිරීමට පෙර එහි තිබූ හැෂ් භාවිතා කරන්න.

  3. පෙර නිවැරදි අනුවාදයේ මුදුනේ නැවත කැපවීමට ඔබ කැමති කුමන ක්‍රියාකාරකම්දැයි පරීක්ෂා කරන්න:

    $ git log 4c3e23f529b581c3cbe95350e84e66e3cb05704f
    
    commit 4c3e23f529b581c3cbe95350e84e66e3cb05704f
    
    ...
    
    commit 16b373a96b0a353f7454b141f7aa6f548c979d0a
    
    ...
    
  4. ඔබේ ගබඩාවේ දකුණු අනුවාදයේ මුදුනේ ඔබේ දකුණු කොමිස් යොදන්න:

    • චෙරි-පික් භාවිතා කිරීමෙන් (දැනට පවතින සමහර කොමිස් විසින් හඳුන්වා දී ඇති වෙනස්කම්)

          git cherry-pick ec59ab844cf504e462f011c8cc7e5667ebb2e9c7
      
    • නැතහොත් චෙරි තෝරාගැනීමෙන් කළ යුතු පරාසය:

      • පළමුව ඒවා ඒකාබද්ධ කිරීමට පෙර නිවැරදි වෙනස්කම් පරීක්ෂා කරන්න:

        git diff 5216b24822ea1c48069f648449997879bb49c070..4c3e23f529b581c3cbe95350e84e66e3cb05704f
        
      • පළමුව ඒවා ඒකාබද්ධ කිරීමට පෙර නිවැරදි වෙනස්කම් පරීක්ෂා කරන්න:

        git cherry-pick 5216b24822ea1c48069f648449997879bb49c070..4c3e23f529b581c3cbe95350e84e66e3cb05704f
        

        එහිදී ඔබ සිදු කළ නිවැරදි බැඳීම්වල පරාසය මෙයයි (වැරදි ලෙස ඒකාබද්ධ කිරීම හැර).



0

ඒකාබද්ධ වූ වහාම ඔබ ආපසු යා යුතු බව ඔබ දුටුවහොත් සහ ඒකාබද්ධ කිරීමේ උත්සාහයෙන් පසු ඔබ වෙනත් කිසිවක් කර නොමැති නම්, ඔබට මෙම විධානය නිකුත් කළ හැකිය : git reset --hard HEAD@{1}.

අත්යවශ්යයෙන්ම, ඔබේ ඒකාබද්ධ කිරීම shaයොමු වන්නේ HEAD@{0}ඒකාබද්ධ වීමෙන් පසුව වෙනත් කිසිවක් සිදු නොවූයේ නම් සහ ඒකාබද්ධ කිරීමට HEAD@{1}පෙර පෙර ලක්ෂ්යය වනු ඇත.


0

මෙහි ඇති ඕනෑම දෙයකට වඩා සරලම අවස්ථාව, සරලම අවස්ථාව:

ඔබේ දේශීය ශාඛාව ඉවත් කරන්න (දේශීය, දුරස්ථ නොවේ) එය නැවත අදින්න. මේ ආකාරයෙන් ඔබ ඔබේ ප්‍රධාන ශාඛාවේ වෙනස්කම් අහෝසි කරනු ඇති අතර ඔබට තල්ලු කිරීමට අවශ්‍ය නොවන වෙනස ඕනෑම කෙනෙකුට බලපානු ඇත. එය නැවත ආරම්භ කරන්න.


0

මෙම අවස්ථාවේදී, ඔබේ ශාඛාව නැවත සැකසීමට ඔබට අවශ්‍ය වනු ඇත git reset --hard <branch_name>. නැවත සකස් කිරීමට පෙර ඔබගේ වෙනස්කම් සුරැකීමට ඔබට අවශ්‍ය නම් නව ශාඛාවක් නිර්මාණය කිරීමට වග බලා ගන්න git checkout <branch_name>.

ඔබට නිශ්චිත බැඳීමකට රාජ්‍යය නැවත සැකසිය හැකිය git reset --hard <commit_id>.

වෙනස්කම් තල්ලු කර ඇත්නම් ඔබට git revert <branch_name>ඒ වෙනුවට භාවිතා කළ හැකිය . වෙනත් අවස්ථා වලදීද git revert සහ git checkout භාවිතා කරන්නේ කෙසේදැයි පරීක්ෂා කිරීමට වග බලා ගන්න .

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.