Git rebase අහෝසි කිරීම


3188

Git rebase පහසුවෙන් අහෝසි කරන්නේ කෙසේදැයි කිසිවෙකු දන්නවාද?

මතකයට එන එකම ක්‍රමය එය අතින් ගෙන යාමයි:

  • ශාඛා දෙකටම කැපවූ මවුපියන් පරීක්ෂා කරන්න
  • ඉන්පසු එතැන් සිට තාවකාලික ශාඛාවක් සාදන්න
  • චෙරි-පික් සියළුම කොමිස් අතින් කරන්න
  • අතින් සාදන ලද ශාඛාව විසින් මා නැවත ප්‍රතිස්ථාපනය කළ ශාඛාව ප්‍රතිස්ථාපනය කරන්න

මගේ වර්තමාන තත්වය තුළ මෙය ක්‍රියාත්මක වනු ඇත්තේ මට ශාඛා දෙකෙන්ම කොමිස් පහසුවෙන් හඳුනාගත හැකි බැවිනි (එකක් මගේ දේවල්, අනෙක මගේ සගයාගේ දේවල්).

කෙසේ වෙතත්, මගේ ප්‍රවේශය මට උපපෝෂිත හා දෝෂ සහිත යැයි හැඟේ (මගේ ශාඛා 2 ක් සමඟ මම නැවත ප්‍රතිස්ථාපනය කළ බව කියමු).

අදහස් තිබේද?

පැහැදිලි කිරීම: මම කතා කරන්නේ කොමිස් පොකුරක් නැවත ධාවනය කළ නැවත ගෙවීමක් ගැන ය. එකක් පමණක් නොවේ.


6
නැවත ලබා ගැනීමේදී ඔබට කොමිස් බැහැර කළ හැකිය, නැතහොත් ඒවා ස්කොෂ් කළ හැකිය. මෙම වෙනස්වීම් මුල් නෝඩ් වෙත යොමු කිරීමකින් තොරව හෝ ප්‍රත්‍යාවර්තකය හරහා වෙන් කිරීමකින් තොරව ආපසු හැරවිය නොහැක, එබැවින් චෙරිපික් කිරීම ක්‍රියා නොකරනු ඇත.
ANeves

Answers:


4353

පහසුම ක්‍රමය වනුයේ පරාවර්තනය ආරම්භ වීමට පෙර සිටම ශාඛාවේ ප්‍රධාන කැපවීම සොයා ගැනීමයි ...

git reflog

සහ වත්මන් ශාඛාව ඒ වෙත නැවත සැකසීමට ( --hardවිකල්පය සමඟ නැවත සැකසීමට පෙර නියත වශයෙන්ම විශ්වාසයි ).

පරණ HEAD@{5}බැඳීම ref ලොගයේ ඇතැයි සිතමු :

git reset --hard HEAD@{5}

වින්ඩෝස් හි, ඔබට යොමුව උපුටා දැක්වීමට අවශ්‍ය විය හැකිය:

git reset --hard "HEAD@{5}"

git log HEAD@{5}( වින්ඩෝස් :) කිරීමෙන් ඔබට අපේක්ෂකයාගේ පැරණි හිසෙහි ඉතිහාසය පරීක්ෂා කළ හැකිය git log "HEAD@{5}".

ඔබ එක් ශාඛා පරාවර්තනයක් අක්‍රීය කර නොමැති නම් git reflog branchname@{1}, අවසාන ශීර්ෂයට නැවත සම්බන්ධ වීමට පෙර නැවත ගෙවීමක් ශාඛා ප්‍රධානියාට වෙන් කළ හැකි පරිදි කළ හැකිය . මම මෙය දෙවරක් පරීක්ෂා කර බලමි.

පෙරනිමියෙන්, හිස් නොවන ගබඩාවන් සඳහා සියලු ප්‍රතිබිම්භයන් සක්‍රිය කර ඇත:

[core]
    logAllRefUpdates = true

115
Git reflog නියමයි, ඔබට වඩා හොඳ හැඩතල ගැන්වූ ප්‍රතිදානයක් ලබා ගත හැකි බව මතක තබා ගන්න git log -g(ස්කොට් චකොන්ගේ progit.org/book වෙතින් උපදෙස් ).
කර්මි

60
Ach සාක්: git rebase --abort( -iතේරුමක් නැති --abort) සම්පූර්ණ කර නොමැති නැවත ලබා දීම අත්හැරීම - ගැටුම් ඇති වූ නිසා හෝ එය අන්තර්ක්‍රියාකාරී නිසා හෝ දෙකම නිසා; එය සාර්ථක ප්‍රතිප්‍රහාරයක් අහෝසි කිරීම ගැන නොවේ. ඔබ භාවිතා කළේ rebase --abortහෝ reset --hardඔබ සිටියේ කුමන තත්වයකද යන්න මතය. ඔබට මේ දෙකම කිරීමට අවශ්‍ය නොවිය යුතුය.
සීබී බේලි

312
පළමුවෙන්ම උපස්ථයක් සාදන්න : git tag BACKUP. යමක් වැරදුනහොත් ඔබට එය වෙත ආපසු යා හැකිය:git reset --hard BACKUP
kolypto

6
ඔබ බොහෝ කැපවීම් කර ඇත්නම් හෙඩ් @ {#} ඔබ සොයන හෙඩ් හෙඩ්ට commit:වඩා වෙනස් වනු rebase:ඇත. පැහැදිලිව පෙනෙන නමුත් එය මා ටිකක් ව්‍යාකූල කළේය.
වෝර්ප්ලිං

4
අහඹු සිදුවීමකින් පසු පක්ෂයට බැඳීම: ඩී. කිසි යම් නොවන git reset --hard ORIG_HEADවහාම හදිසි අනතුරු rebase පසු මෙන්ම උපක්රමය ද?
quaylar

1496

ඇත්ත වශයෙන්ම, නැවත සකස් කිරීම ඔබේ ආරම්භක ස්ථානය සුරකිනු ඇත, ORIG_HEADඑබැවින් මෙය සාමාන්‍යයෙන් සරල ය:

git reset --hard ORIG_HEAD

කෙසේ වෙතත්, reset, rebaseහා mergeඔබේ මුල් ඉතිරි සියලු HEADපහිටුම් දක්වනය බවට ORIG_HEADනිසා, ඔබ ඉවත් කිරීමට උත්සාහ දරන rebase සිට එම විධාන සිදු කරලා තියෙනවා නම් ඔබ reflog භාවිතා කිරීමට සිදුවේවි.


34
නඩුවේ ORIG_HEADතවදුරටත් ප්රයෝජනවත් වේ, ඔබ ද භාවිතා කළ හැකිය branchName@{n}එහිදී කාරක රීති, nශාඛා පහිටුම් දක්වනය ක අර්ථදැක්වීම පෙර සිටි. උදාහරණයක් ලෙස, ඔබ featureAඔබේ masterශාඛාවට ශාඛාව git reset --hard featureA@{1}නැවත ප්‍රතිස්ථාපනය කළත්, ප්‍රතිප්‍රහාරයේ ප්‍රති result ලයට ඔබ අකමැති නම්, ඔබ නැවත ප්‍රතිස්ථාපනය කිරීමට පෙර ශාඛාව හරියටම තිබූ ස්ථානයට නැවත සැකසීමට කළ හැකිය . සංශෝධන සඳහා නිල Git ලියකියවිලි the {n} සින්ටැක්ස් ශාඛාව පිළිබඳ වැඩිදුර කියවිය හැකිය .

15
මෙය පහසුම දෙයයි. git rebase --abortකෙසේ වෙතත් එය අනුගමනය කරන්න .
Seph

1
A ඩබ්ලික් කිසිදු ගැටුමකින් තොරව සම්පූර්ණයෙන්ම සාර්ථක ප්‍රතිප්‍රහාරයකින් පසුව මෙය මට හොඳින් ක්‍රියාත්මක විය git 2.17.0.
dvlsg

4
මට එය සම්පුර්ණ කිරීමට ඉඩ දෙන්න: git reset --hard ORIG_HEADනැවත නැවතත් පෙරළීමට නැවත නැවත භාවිතා කළ හැකිය. කියන්න, A --- නැවත --- B වෙත ප්‍රතිස්ථාපනය කරන්නේ නම්, දැන් මම C හි සිටිමි, මට දෙවරක් භාවිතා කර A වෙත ආපසු යා හැකියgit reset --hard ORIG_HEAD
කැල්වින්චේ

5
EpSeph ඔබ පසු විපරම් කිරීමට යෝජනා කරන්නේ මන්දැයි ඔබට පැහැදිලි කළ හැකිද git rebase --abort?
UpTheCreek

388

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

git rebase --abort

පසුව පිරිසිදු කිරීමට reset.

එසේ නොමැතිනම් ඔබට “ Interactive rebase already started” පණිවිඩය ලැබෙනු ඇත .


4
මෙය මගේ විමසුමේ "| REBASE" කොටස ඉවත් කළේය. +1
Wouter Thielen

62
එය ප‍්‍රශ්නය නොවේ. ප්රශ්නය අසන්නේ නිමි ප්රතිලාභයක් අවලංගු කරන්නේ කෙසේද යන්නයි.
අරුණව් සන්යාල්

2
චාල්ස්ගේ පිළිතුර පිළිබඳ අදහස් දැක්වීමක් විය යුතුය, මන්ද එය එහි ඇති ප්‍රශ්නයට පිළිතුරු නොදෙන හෙයිනි
මර්මෙල්

හ්ම්, මට එය කිරීමට අවශ්‍ය නොවීය.
වික්ටර් සේ č

1
මට වැඩ කළ එකම එක!
ඇලෙක්සැන්ඩර් පිකාඩ්

90

ශාඛාව එහි පැරණි ඉඟියේ වංචාකාරී වස්තුව වෙත නැවත සකස් කිරීම ඇත්තෙන්ම හොඳම විසඳුම වන්නේ එය කිසිදු උත්සාහයක් නොගෙන පෙර තත්වය යථා තත්වයට පත් කරන බැවිනි. නමුත් ඔබට එම කොමිස් අහිමි වී ඇත්නම් (f.ex. ඔබ මේ අතරතුර ඔබේ ගබඩාව කුණු එකතු කළ නිසා හෝ මෙය නැවුම් ක්ලෝනයක් නිසා), ඔබට සෑම විටම ශාඛාව නැවත ප්‍රතිස්ථාපනය කළ හැකිය. මේ සඳහා යතුර නම් --ontoස්විචයයි.

ගේ ඔබ පරිකල්පනය නමින් මාතෘකාව ශාඛා තිබුණා කියන්න මට ඉඩ දෙන්න topicඔබ ලකුණු අතු බව, masterඅග වන විට masterවිය 0deadbeefනසාගන්නවා. යම් අවස්ථාවක දී topicශාඛාවේ සිටියදී ඔබ කළා git rebase master. දැන් ඔබට මෙය අහෝසි කිරීමට අවශ්‍යයි. මෙන්න කොහොමද:

git rebase --onto 0deadbeef master topic

මෙය ක්‍රියාත්මක නොවන සියලු කොමිස් ගෙන topicඒවා masterනැවත නැවත ධාවනය කරයි 0deadbeef.

සමග --onto, ඔබ එච්චරමයි ඔබගේ ඉතිහාසය නැවත සකස් කළ හැකි ඕනෑම හැඩය .

විනෝද වන්න. :-)


3
එහි නම්‍යතාවය නිසා මෙය හොඳම විකල්පය යැයි මම සිතමි. මම බී 1 මාස්ටර් අතු බෙදුවා, පසුව බී 1 නව ශාඛාවක් බවට ප්‍රතිස්ථාපනය කළෙමි, පසුව බී 1 නැවත මාස්ටර් මත පදනම් කර ගැනීමට අවශ්‍ය විය. මම git වලට කැමතියි - ස්තූතියි!
ripper234

2
මෙහි ඇති හොඳම විකල්පය මෙයයි! එය මගේ වර්තමාන ශාඛාවේ ඇති සියලුම වෙනස්කම් තබා ඇති අතර අනවශ්‍ය සියල්ල ඉවත් කර ඇත!
ඇලිසියා ටැන්ග්

මම සංකලනයක් සමග කියන්න කැමතියි --ontoහා -iඔබ කිසිම හැඩය එච්චරමයි ඔබගේ ඉතිහාසය නැවත සකස් කළ හැක. ඔබ සාදන හැඩතල බැලීමට gitk (හෝ මැක් මත gitx) භාවිතා කරන්න :-).
rjmunro

69

කිසියම් නොවරදින මෙහෙයුමක් කිරීමට පෙර මම ඇත්ත වශයෙන්ම ශාඛාවට උපස්ථ ටැගයක් තැබුවෙමි (බොහෝ ප්‍රතික්ෂේප කිරීම් ඉතා සුළුය, නමුත් එය ඕනෑම තැනක සංකීර්ණ යැයි පෙනේ නම් මම එය කරන්නෙමි).

එවිට, ප්‍රතිස්ථාපනය කිරීම පහසුය git reset --hard BACKUP.


2
මමත් මේක කරනවා. ඔබ අදහස් කළ දේ ඔබ වෙනස් කර ඇති බවට වග බලා ගැනීම සඳහා git diff BACKUP..HEAD කිරීමද ප්‍රයෝජනවත් වේ.
පෝල් අස්ථි

5
මමත් එය පුරුදුව සිටියෙමි, නමුත් පරාවර්තනය සමඟ මට වඩාත් සුවපහසු වූ බැවින් එය අවශ්‍ය යැයි මට තවදුරටත් හැඟෙන්නේ නැත. ඔබ හෙඩ් වෙනස් කරන සෑම අවස්ථාවකම පරාවර්තනය අත්‍යවශ්‍යයෙන්ම ඔබ වෙනුවෙන් මෙය කරයි.
පීට් හොඩ්ග්සන්

4
හොඳයි, මම අර්ථවත් නම් වලට කැමතියි, මන්ද යත්, පරාවර්තනයේ නිවැරදි අයිතමය සෙවීම සමහර විට විනෝදයක් නොවන බැවිනි.
ඇලෙක්ස් ගොන්ට්මාකර්

12
ඔබට ඇත්ත වශයෙන්ම උපස්ථ ශාඛාවක් සෑදීමට අවශ්‍ය නැත, ඔබට සරලවම branchName@{n}වාක්‍ය ඛණ්ඩය භාවිතා කළ හැකිය , මෙන්න nශාඛා දර්ශකයේ නවවන ස්ථානයයි. උදාහරණයක් ලෙස, ඔබ featureAඔබේ masterශාඛාවට ශාඛාව git reset --hard featureA@{1}නැවත ප්‍රතිස්ථාපනය කළත්, ප්‍රතිප්‍රහාරයේ ප්‍රති result ලයට ඔබ අකමැති නම්, ඔබ නැවත ප්‍රතිස්ථාපනය කිරීමට පෙර ශාඛාව හරියටම තිබූ ස්ථානයට නැවත සැකසීමට කළ හැකිය . සංශෝධන සඳහා නිල Git ලියකියවිලි වලින් ඔබට branch@{n}වාක්‍ය ඛණ්ඩය පිළිබඳ වැඩිදුර කියවිය හැකිය .

2
පැට් නොට්ස්ගේ පිළිතුරට අනුව, ඉහත වාක්‍ය HEADඛණ්ඩය භාවිතා කිරීමට ඔබට අවශ්‍ය නැත . ශාඛාවේ මුල් පිටපත තාවකාලිකව ගබඩා කර ඇත ORIG_HEAD. නමුත් උපස්ථ ශාඛා ලේබලයක් භාවිතා කිරීමේ තාක්ෂණයද ක්‍රියාත්මක වේ, එය තවත් පියවර කිහිපයක් පමණි.

69

නඩුවේ ඔබ දුරස්ථ ගබඩාවට ඔබේ ශාඛා තල්ලු කර (සාමාන්යයෙන් එය ගේ සම්භවය) හා පසුව ඔබ (ඒකාබද්ධ රහිතව) succesfull rebase කරලා තියෙන්නෙ ( git rebase --abortලබා දෙන "නැහැ ප්රගතිය rebase") ඔබට පහසුවෙන් කළ හැකි වන්නේ නැවත ශාඛා විධානය භාවිතා:

git reset --hard සම්භවය / {branchName}

උදාහරණයක්:

$ ~/work/projects/{ProjectName} $ git status
On branch {branchName}
Your branch is ahead of 'origin/{branchName}' by 135 commits.
  (use "git push" to publish your local commits)

nothing to commit, working directory clean

$ ~/work/projects/{ProjectName} $ git reset --hard origin/{branchName}
HEAD is now at 6df5719 "Commit message".

$ ~/work/projects/{ProjectName} $ git status
On branch {branchName}
Your branch is up-to-date with 'origin/{branchName}.

nothing to commit, working directory clean

එය මට නිවැරදි පිළිතුරයි. නැවත ගෙවීමට පෙර කැපවීම හා කැපවීම එකම හැඳුනුම්පතක් ඇති අතර HEAD {1 to වෙත ආපසු යාමෙන් නැවත ප්‍රතිස්ථාපනය සිදු නොවේ!
බිල් කොට්සියාස්

23

භාවිතා reflogකිරීම මට වැඩ කළේ නැත.

මා වෙනුවෙන් වැඩ කළ දේ මෙහි විස්තර කර ඇති ආකාරයට සමාන ය . ප්‍රතිනිර්මාණය කරන ලද ශාඛාව නම් කර ඇති .git / log / refs හි ගොනුව විවෘත කර "rebase finsihed" අඩංගු රේඛාව සොයා ගන්න, වැනි දෙයක්:

5fce6b51 88552c8f Kris Leech <me@example.com> 1329744625 +0000  rebase finished: refs/heads/integrate onto 9e460878

පේළියේ ලැයිස්තුගත කර ඇති දෙවන බැඳීම පරීක්ෂා කරන්න.

git checkout 88552c8f

මෙයින් මා සනාථ කළ නැතිවූ වෙනස්කම් අඩංගු බව තහවුරු වූ පසු මම සුසුම්ලමි.

git log
git checkout -b lost_changes


3
ආ - එම සබැඳියෙන්, "එක් අවවාදයක් ඇත: මට ශාඛාවේ ඉතිහාසය අහිමි විය, නමුත් මේ අවස්ථාවේ දී එය ඇත්ත වශයෙන්ම වැදගත් නොවීය. මගේ වෙනස්කම් ලබා ගැනීම ගැන මම සතුටු වෙමි." ?
රෆින්

16

බහුවිධ කැපවීම් සඳහා, ඕනෑම කැපවීමක් එම කැපවීමට තුඩු දුන් සියලු ඉතිහාසය සඳහන් කරන බව මතක තබා ගන්න. එබැවින් චාල්ස්ගේ පිළිතුරෙහි, "පැරණි බැඳීම" "පැරණි කොමිස් වල නවතම දේ" ලෙස කියවන්න. ඔබ එම කැපවීමට යළි පිහිටුවන්නේ නම්, එම කැපවීමට තුඩු දුන් සියලු ඉතිහාසය නැවත දිස්වනු ඇත. මෙය ඔබට අවශ්‍ය දේ කළ යුතුය.


11

@ ඇලන් සහ @ සීරින්ගේ විසඳුම අනුගමනය කරමින්, මට අදහස් දැක්වීමක් කළ හැකි යැයි මම ප්‍රාර්ථනා කරමි, නමුත් මට ප්‍රමාණවත් කීර්තියක් නැත, එබැවින් මම පහත විධානය භාවිතා කර ඇත:

කරනවා වෙනුවට git rebase -i --abort ( -i සටහන් කරන්න ) මට කළ යුතුව තිබුණේ git rebase --abort( -i නොමැතිව ) ).

දෙකම භාවිතා කිරීම -iසහ--abort ඒ සමඟම Git මට භාවිත / විකල්ප ලැයිස්තුවක් පෙන්වයි.

එබැවින් මෙම විසඳුම සමඟ මගේ පෙර සහ වර්තමාන ශාඛා තත්ත්වය:

matbhz@myPc /my/project/environment (branch-123|REBASE-i)
$ git rebase --abort

matbhz@myPc /my/project/environment (branch-123)
$

11

ඔබ දුරස්ථ ශාඛාවට එරෙහිව සාර්ථකව ප්‍රතිනිර්මාණය කර git rebase --abortඔබට නොහැකි නම් ඔබේ වැඩ සුරැකීමට උපක්‍රම කිහිපයක් කළ හැකි අතර බලහත්කාරයෙන් තල්ලු නොකෙරේ. වැරදීමකින් නැවත ප්‍රතිස්ථාපනය කරන ලද ඔබගේ වර්තමාන ශාඛාව කැඳවා your-branchඑය ලුහුබඳිමින් සිටී යැයි සිතමුorigin/your-branch

  • git branch -m your-branch-rebased # වත්මන් ශාඛාව නැවත නම් කරන්න
  • git checkout origin/your-branch # ආරම්භය දන්නා නවතම තත්වයට පිවිසීම
  • git checkout -b your-branch
  • නැතිවී ඇති කොමිස් පරීක්ෂා කරන්න git log your-branch-rebased, සංසන්දනය කරන්න git log your-branchසහ අර්ථ දක්වන්නyour-branch
  • git cherry-pick COMMIT_HASH සෑම කැපවීමකටම your-branch-rebased
  • ඔබේ වෙනස්කම් තල්ලු කරන්න. දේශීය ශාඛා දෙකක් සම්බන්ධ වී ඇති බව කරුණාවෙන් remote/your-branchසලකන්නyour-branch

4

මම මගේ විශේෂාංග ශාඛාවට මාස්ටර් නැවත ලබා දෙන බව කියමු. නරක ක්‍රියා ඉවත් කිරීම බොහෝ විට පහසු බව මම සොයාගෙන ඇත්තෙමි.

git rebase -i HEAD~31

අන්තිම කොමිස් 31 සඳහා අන්තර්ක්‍රියාකාරී ප්‍රතිප්‍රහාරය (ඔබ ඕනෑවට වඩා තෝරා ගත්තොත් එයින් හානියක් සිදු නොවේ).

ඔබට ඉවත් කිරීමට අවශ්‍ය කොමිස් රැගෙන "පික්" වෙනුවට "ඩී" ලෙස සලකුණු කරන්න. දැන් ප්‍රතිව්‍යුහගත කිරීම අහෝසි කරමින් කොමිස් effectively ලදායී ලෙස මකා දමනු ලැබේ (නැවත ප්‍රතිස්ථාපනය කිරීමේදී ඔබට ලැබුණු කොමිස් පමණක් ඉවත් කළහොත්).


3

නවක වදය සඳහා / දැඩි ලෙස යළි පිහිටුවීම ගැන බියක් ඇති ඕනෑම කෙනෙකුට, ඔබට නැවත පිරවීමෙන් ඇති බැඳීම පරීක්ෂා කර බලා එය නව ශාඛාවක් ලෙස සුරකින්න.

git reflog

ඔබ නැවත ප්‍රතිස්ථාපනය කිරීමට පෙර බැඳීම සොයා ගන්න. එය සොයා ගැනීම සඳහා ඔබට තවත් පහළට අනුචලනය කිරීමට අවශ්‍ය විය හැකිය (Enter හෝ PageDown ඔබන්න). HEAD අංකය සැලකිල්ලට ගෙන 57 වෙනුවට ආදේශ කරන්න:

git checkout HEAD@{57}

මෙම හෙඩ් භාවිතයෙන් නව ශාඛාවක් නිර්මාණය කිරීම හොඳ යැයි පෙනේ නම් ශාඛාව / කොමිස් සමාලෝචනය කරන්න:

git checkout -b new_branch_name

2

ඔබ ශාඛාවක සිටී නම් ඔබට භාවිතා කළ හැකිය:

git reset --hard @{1}

HEAD සඳහා යොමු git reflogල log ු-සටහනක් පමණක් නොමැත (ලබා ගත් ), එක් එක් ශාඛාව සඳහා පරාවර්තන ද ඇත (ලබා ගත් git reflog <branch>). ඒ නිසා, ඔබ මත නම් masterඉන් git reflog masterශාඛා සියලු වෙනස්කම් ලැයිස්තුගත වනු ඇත. ඔබ විසින් වෙනස්කම් යොමු වේ master@{1}, master@{2}ආදිය

git rebase සාමාන්‍යයෙන් HEAD කිහිප වතාවක් වෙනස් කරනු ඇති නමුත් වත්මන් ශාඛාව යාවත්කාලීන වන්නේ එක් වරක් පමණි.

@{1}යනු දැනට පවතින ශාඛාව සඳහා කෙටිමඟකි , එබැවින් master@{1}ඔබ සිටින්නේ නම් එය සමාන වේ master.

git reset --hard ORIG_HEADඔබ git resetඅන්තර්ක්‍රියාකාරී කාලයකදී භාවිතා කළේ නම් ක්‍රියා නොකරනු ඇත rebase.


1

මම සාමාන්‍යයෙන් කරන්නේ එයයි git reset #commit_hash

අන්තිම කැපවීම දක්වා මා සිතන්නේ ප්‍රතිප්‍රහාරයෙන් කිසිදු බලපෑමක් සිදු නොවූ බවයි.

එවිට git pull

දැන් ඔබේ ශාඛාව හරියටම ස්වාමියා හා සමාන විය යුතු අතර ප්‍රතිව්‍යුහගත කළ කොමිස් එහි නොතිබිය යුතුය.

දැන් කෙනෙකුට මෙම ශාඛාවේ කොමිස් චෙරි-තෝරා ගත හැකිය.


1

කිසිදු සාර්ථකත්වයක් නොමැතිව මම නැවත සකස් කිරීම සහ නැවත පිරවීම සමඟ සියලු යෝජනා උත්සාහ කළෙමි. IntelliJ හි දේශීය ඉතිහාසය ප්‍රතිෂ් oring ාපනය කිරීම නැතිවූ ලිපිගොනු වල ගැටළුව විසඳීය


ස්තූතියි! මීට පෙර කිසි දිනෙක ප්‍රාදේශීය ඉතිහාසය භාවිතා නොකළ නමුත් අහම්බෙන් ප්‍රතිනිර්මාණය කරන ලද කේතයක් නැවත ලබා ගැනීමට මෙය මට ඇති පහසුම විකල්පය විය. ඉතා ලස්සන නමුත් තරමක් සැඟවුණු ලක්ෂණයකි.
මැග්නස් ඩබ්ලිව්

0

git reset --hard සම්භවය / {branchName}

ඔබේ සියලු දේශීය වෙනස්කම් නැවත සැකසීමෙන් නිවැරදි විසඳුම වේ.


1
ඔබ නැවත අමාරු නම්, origin/branchහෙඩ් සහ එම ලක්ෂ්‍යය අතර වෙනස්කම් නැති විය හැකිය. පොදුවේ කථා කිරීම ඔබට අවශ්‍ය නැත.
බ්ලූස්මන්ක්

මගේ නඩුවේදී මට අවශ්‍ය වූයේ මෙයයි. ඒ නිසා ඉහළට.
මන්දර් වාස්

-4

ඔබ කිසියම් දෙයක් අවලංගු කළහොත්, උදා. git rebase --abort, ඔබ සතුව ලිපිගොනු නොමැති අතර, ඒවා නැති වී යන අතර git reflogඋදව් නොකරනු ඇත. මෙය මට සිදු වූ අතර ඔබ මෙහි ඇති කොටුවෙන් පිටත සිතා බැලිය යුතුය. ඔබ මා වැනි වාසනාවන්ත නම් සහ IntelliJ වෙබ්ස්ටෝම් භාවිතා කරන්නේ නම්, ඔබට right-click->local historyඅනුවාදකරණ මෘදුකාංග සමඟ කුමන වැරදි සිදු වුවද ඔබගේ ගොනුවේ / ෆෝල්ඩරවල පෙර තත්වයට ආපසු යා හැකිය. තවත් අසාර්ථක ආරක්ෂිත ධාවනය කිරීම සැමවිටම හොඳයි.


5
git rebase --abortසක්‍රීය ප්‍රතිප්‍රහාරයක් අත්හිටුවයි, එය ප්‍රතිප්‍රහාරයක් අහෝසි නොකරයි . එසේම, VCS දෙකක් එකවර භාවිතා කිරීම නරක අදහසකි. ජෙට්බ්‍රේන්ස් මෘදුකාංගයේ එය කදිම ලක්ෂණයකි, නමුත් ඔබ ඒ දෙකම භාවිතා නොකළ යුතුය. Git ගැන ඉගෙන ගැනීම වඩා හොඳය, විශේෂයෙන් Git ගැන ඇති Stack Overflow පිළිබඳ ප්‍රශ්නවලට පිළිතුරු සපයන විට.
dudewad
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.