සාරාංශය
දෝෂ පණිවිඩය
පෙර කැපවීමකින් තොරව 'ස්කොෂ්' කළ නොහැක
එයින් අදහස් වන්නේ ඔබ “පහළට ස්කොෂ්” කිරීමට උත්සාහ කර ඇති බවයි. Git සෑම විටම නව කැපවීමක් පැරණි බැඳීමකට හෝ “ඉහළට” අන්තර්ක්රියාකාරී ප්රතිවිකුණුම් ටෝඩෝ ලැයිස්තුවට අනුව බලයි, එය පෙර පේළියක බැඳීමකි. ඔබගේ ටෝඩෝ ලැයිස්තුවේ පළමු පේළියේ විධානය වෙනස් කිරීමsquash
සැමවිටම මෙම දෝෂය ඇති කරනු ඇත, මන්දයත් පළමු වරට ස්කොෂ් කිරීමට කිසිවක් නොමැති බැවිනි.
නිවැරදි කරන්න
පළමුව ඔබ ආරම්භ කළ ස්ථානයට ආපසු යන්න
$ git rebase --abort
ඔබේ ඉතිහාසය යැයි කියන්න
$ git log --pretty=oneline
a931ac7c808e2471b22b5bd20f0cad046b1c5d0d c
b76d157d507e819d7511132bdb5a80dd421d854f b
df239176e1a2ffac927d8b496ea00d5488481db5 a
එනම්, a යනු පළමු කැපවීමයි, පසුව ආ, අවසානයේ ඇ. C කැපීමෙන් පසු අපි b සහ c එකට ස්කොෂ් කිරීමට තීරණය කරමු:
(සටහන: බොහෝ වේදිකාවල පෙරනිමියෙන් git log
එහි ප්රතිදානය පේජරයකට පයිප්ප ධාවනය කරයි. පේජරයෙන් less
ඉවත් වී ඔබේ විධාන විමසුමට ආපසු යාමට q
යතුර ඔබන්න.)
ධාවනය git rebase --interactive HEAD~2
මඟින් ඔබට සංස්කාරකයක් ලබා දේ
pick b76d157 b
pick a931ac7 c
# Rebase df23917..a931ac7 onto df23917
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
(මෙම ටෝඩෝ ලැයිස්තුව ප්රතිදානයට සාපේක්ෂව ප්රතිලෝම අනුපිළිවෙලෙහි ඇති බව සැලකිල්ලට ගන්න git log
.)
ආ ගේ වෙනස් pick
කිරීමට squash
ඔබ දුටු දෝෂය, නමුත් ආ බවට ඔබ ස්කොෂ් ඇ වෙනුවට නම් (පැරණි හෝ "ඉහළ squashing" බවට නවතම සිදු) දක්වා කිවමනා ලැයිස්තුව වෙනස් කිරීම මගින් හේතු වනු ඇත
pick b76d157 b
squash a931ac7 c
ඔබේ සංස්කාරකය සුරැකීමෙන් ඉවත් වන විට, අන්තර්ගතය ඇති තවත් සංස්කාරකයක් ඔබට ලැබෙනු ඇත
# This is a combination of 2 commits.
# The first commit's message is:
b
# This is the 2nd commit message:
c
ඔබ සුරකින විට සහ ඉවත් වූ විට, සංස්කරණය කරන ලද ගොනුවේ අන්තර්ගතය නව ඒකාබද්ධ බැඳීමේ පණිවිඩයක් බවට පත්වේ:
$ git log --pretty=oneline
18fd73d3ce748f2a58d1b566c03dd9dafe0b6b4f b and c
df239176e1a2ffac927d8b496ea00d5488481db5 a
ඉතිහාසය නැවත ලිවීම පිළිබඳ සටහන
අන්තර්ක්රියාකාරී නැවත සකස් කිරීම ඉතිහාසය නැවත ලියයි. පැරණි ඉතිහාසය අඩංගු දුරස්ථයකට තල්ලු කිරීමට උත්සාහ කිරීම අසාර්ථක වනු ඇත්තේ එය වේගයෙන් ඉදිරියට නොයන බැවිනි.
ඔබ නැවත ප්රතිස්ථාපනය කළ ශාඛාව ඔබ විසින්ම වැඩ කරන මාතෘකාවක් හෝ විශේෂාංග ශාඛාවක් නම් , ලොකු දෙයක් නැත. වෙනත් ගබඩාවකට තල්ලු කිරීම සඳහා --force
විකල්පය අවශ්ය වනු ඇත , නැතහොත් විකල්පයක් ලෙස දුරස්ථ ගබඩාවේ අවසරය මත පදනම්ව, පළමුව පැරණි ශාඛාව මකා දමා නැවත ප්රතිස්ථාපනය කළ අනුවාදය තල්ලු කිරීමට ඔබට හැකි වනු ඇත. කාර්යය විනාශ කළ හැකි එම විධානයන් සඳහා උදාහරණ මෙම පිළිතුරේ විෂය පථයෙන් පිටත ය.
මුරපදයක් හෝ වෙනත් සංවේදී තොරතුරු බලහත්කාරයෙන් කාන්දු වීම වැනි ඉතා හොඳ හේතුවක් නොමැතිව ඔබ වෙනත් පුද්ගලයින් සමඟ වැඩ කරන ශාඛාවක දැනටමත් ප්රකාශයට පත් කර ඇති ඉතිහාසය නැවත ලිවීම ඔබේ සහකරුවන් වෙත වැඩ කරන අතර එය සමාජ විරෝධී වන අතර අනෙකුත් සංවර්ධකයින්ට කරදරයක් වනු ඇත. මෙම තුළ කොටසක් "ලෙස ගඟ Rebase ගොඩ ඒමටත්," git rebase
ප්රලේඛනය එකතු අවධාරණය කරමින්, පැහැදිලි කරයි.
අනෙක් අය පදනම් කරගත් වැඩක් කර ඇති ශාඛාවක් නැවත ප්රතිස්ථාපනය කිරීම (හෝ වෙනත් ආකාරයක නැවත ලිවීම) නරක අදහසකි: එහි පහළින් සිටින ඕනෑම කෙනෙකුට ඔවුන්ගේ ඉතිහාසය අතින් සකස් කිරීමට බල කෙරෙයි. මෙම කොටස පහල දෘෂ්ටි කෝණයෙන් නිවැරදි කරන්නේ කෙසේද යන්න පැහැදිලි කරයි. කෙසේවෙතත්, සැබෑ විසඳුම වනුයේ උඩුගං බලා නැවත පැමිණීම වළක්වා ගැනීමයි. …