අදහස් දැක්වීමක මා ලියා ඇති දේ පුළුල් කිරීම
සාමාන්ය රීතිය නම්, ඔබ ප්රකාශයට පත් කළ ඉතිහාසය නැවත ලිවීම (වෙනස් කිරීම) නොකළ යුතුය, මන්ද යමෙකු ඔවුන්ගේ කෘති ඒ මත පදනම් කර ගෙන ඇති බැවිනි. ඔබ ඉතිහාසය නැවත ලිවීම (වෙනස් කිරීම) කරන්නේ නම්, ඒවායේ වෙනස්කම් ඒකාබද්ධ කිරීම සහ ඒවා යාවත්කාලීන කිරීම සමඟ ඔබ ගැටලු ඇති කරයි.
විසඳුම නිර්මාණය සඳහා, එසේ සිදු නව වන වෙනස්කම් එළඹීම ඔබ ඉවත් කිරීමට අවශ්ය බව. Git revert විධානය භාවිතයෙන් ඔබට මෙය කළ හැකිය .
ඔබට පහත තත්වය ඇත:
A <- B <- C <- D <- master <- HEAD
(මෙහි ඊතල මඟින් යොමුකරන්නාගේ දිශාවට යොමු වේ: කොමිස් සම්බන්ධයෙන් "මව්" යොමුව, ශාඛා ප්රධානියාගේ ඉහළම ශාඛාව (ශාඛා යොමු කිරීම) සහ හෙඩ් යොමු කිරීමේදී ශාඛාවේ නම).
ඔබ නිර්මාණය කළ යුතු දේ පහත දැක්වේ:
A <- B <- C <- D <- [(BCD) ^ - 1] <- මාස්ටර් <- HEAD
මෙහි "[(BCD) ^ - 1]" යන්නෙන් අදහස් කරන්නේ B, C, D වල වෙනස්වීම් ආපසු හරවන කැපවීමයි. ගණිතය අපට පවසන්නේ (BCD) ^ - 1 = D ^ -1 C ^ -1 B ^ -1, එබැවින් පහත දැක්වෙන විධානයන් භාවිතයෙන් ඔබට අවශ්ය තත්වය ලබා ගත හැකිය:
$ git revert --no-commit D
$ git revert --no-commit C
$ git revert --no-commit B
$ git commit -m "the commit message"
විකල්ප විසඳුමක් වනු ඇත ලොව පුරාවටම අන්තර්ගතයන් ඒ සිදු වන අතර, මෙම රාජ්ය සිදු:
$ git checkout -f A -- .
$ git commit -a
එවිට ඔබට පහත තත්වය ඇත:
A <- B <- C <- D <- A '<- master <- HEAD
බැඳීම A 'හි A හි අන්තර්ගතයට සමාන අන්තර්ගතයන් ඇත, නමුත් එය වෙනස් කැපවීමකි (පණිවිඩය, දෙමව්පියන්, කැපවීමේ දිනය).
මෙම චාල්ස් බේලි විසින් වෙනස් කරන ජෙෆ් Ferland විසින් විසඳුමක්, ඒ හා සමාන අදහස් මත, ඇල්ම, නමුත් භාවිතා GIT යළි පිහිටුවීමේ :
$ git reset --hard A
$ git reset --soft @{1} # (or ORIG_HEAD), which is D
$ git commit
git push -f HEAD~4:master
(දුරස්ථ ශාඛාව ප්රධාන යැයි උපකල්පනය කරන්න). ඔව්, ඔබට එවැනි ඕනෑම කැපවීමක් තල්ලු කළ හැකිය.