# Commit එකක් සංශෝධනය කිරීම

ඔබේ commit පණිවිඩයේ දෝෂයක් ඇති බව ඔබට පසුව අවබෝධ වුනේ නම් හෝ ඔබට එක් පේලියක් එක් කිරීමට ඔබට අමතක වී ඇත්නම් කුමක් කළ යුතුද? ඔබ එය සංස්කරණය කරන්නේ කෙසේද? මෙම නිබන්ධනය මගින් එය ආවරණය කරනු ඇත. 

## ඔබ Github වෙත commit කිරීමෙන් පසුව commit එකක් වෙනස් කිරීම

ගොනුවක් විවෘත නොකර මෙය කිරීමට:

* ```--amend -m``` ලෙස ටයිප් කර පසුව ඔබේ නව commit පණිවිඩය ටයිප් කරන්න.

* Git push වෙනස්කම් සිදු කිරීමට ```git push origin <branch-name>``` ධාවනය කරන්න.

සටහන: ඔබ ```git commit --amend``` ලෙස පමණක් ටයිප් කළහොත්, කැපවීමේ පණිවිඩය සංස්කරණය කිරීමට ඔබෙන් පොළඹවන පරිදි ඔබේ පාඨ සංස්කාරකය විවෘත වේ. -m එකතු කිරීම එය වළක්වයි.

## තනි commit එකක් වෙනස් කිරීම

ඉතින්, අපට තනි වචනයක් වෙනස් කිරීම වැනි ගොනුවක සුළු වෙනසක් කිරීමට අමතක වී ඇත්නම් සහ අපි දැනටමත් අපගේ දුරස්ථ ගබඩාව වෙත commit කර ඇත්නම් කුමක් කළ යුතුද?

මෙහි නිදර්ශනය කිරීම සඳහා මගේ commit සටහනකි:

```
g56123f create file bot file
a2235d updated contributor.md
a5da0d modified bot file
```

අපි හිතමු මට bot file එකට එක වචනයක් දාන්න අමතක වුනා කියලා.

මෙම ගැටළුව විසඳීමට ක්‍රම දෙකක් තිබේ. පළමුවැන්න නම්, එවැනි වෙනස්කම අඩංගු සම්පූර්ණයෙන්ම නව කැපවීමක් තිබීමයි.

```
g56123f create file botfile
a2235d updated contributor.md
a5da0d modified botfile
b0ca8f added single word to botfile
```

දෙවන ක්‍රමය නම් a5da0d commit සංශෝධනය කර මෙම නව වචනය එකතු කර Github වෙත එක් commit එකක් ලෙස තල්ලු කිරීමයි. එය සුළු වෙනසක් පමණක් බැවින් දෙවැන්න වඩා උචිතය.

මෙය සාක්ෂාත් කර ගැනීම සඳහා, අපි පහත සඳහන් දේ කරන්නෙමු:

* ගොනුව වෙනස් කරන්න. මෙම අවස්ථාවෙහිදී, මම කලින් මඟ හැරිය වචනය ඇතුළත් කිරීමට මම botfile වෙනස් කරමි.


* මීළඟට, ```git add <filename>``` සමඟ ගොනුව වේදිකාවට එක් කරන්න.


සාමාන්‍යයෙන් Staging area එකට files එකතු කලාට පස්සේ අපි ඊලගට කරන්නේ git commit -m "our commit message" නේද? නමුත් අපට මෙහි සාක්ෂාත් කර ගැනීමට අවශ්‍ය වන්නේ පෙර කැපවීම සංශෝධනය කිරීම බැවින්, අපි ඒ වෙනුවට ධාවනය කරන්නෙමු:

* git commit --amend මෙය පසුව පෙළ සංස්කාරකය ගෙන එන අතර පණිවිඩය සංස්කරණය කිරීමට ඔබෙන් පොළඹවයි. පණිවිඩය පෙර තිබූ ආකාරයටම තැබීමට හෝ එය වෙනස් කිරීමට ඔබට තීරණය කළ හැකිය.
* සංස්කාරකයෙන් පිටවන්න
* ```git push origin <branch-name>``` සමඟ ඔබේ වෙනස්කම් තල්ලු කරන්න


ඒ ආකාරයෙන්, වෙනස්කම් දෙකම එකම කැපවීමකින් සිදුවනු ඇත.

## දුරස්ථව commit වෙනස් කිරීම

ඔබ සංශෝධනය කිරීමට කැමති කැපවීම දැනටමත් දුරස්ථ පාලකයට තල්ලු කර ඇත්නම්, මෙම කැපවීම සංශෝධනය කිරීම ඔබගේ ප්‍රාදේශීය ඉතිහාසය දුරස්ථ පාලකයෙන් අපසරනය වීමට තුඩු දෙනු ඇත (ඔබ මූලික වශයෙන් නව කැපවීමක් සාදා සංශෝධිත එක ප්‍රතිස්ථාපනය කරන බැවින්). ඔබට දුරස්ථ පාලකයේ කැපවීම වෙනස් කිරීමට අවශ්‍ය බැවින්, ඔබ ඔබේ ශාඛාවේ දුරස්ථ ඉතිහාසය නැවත ලිවිය යුතුය. එය සාක්ෂාත් කර ගැනීම සඳහා, ඉහත විස්තර කර ඇති ක්‍රියා පටිපාටියම අනුගමනය කරන්න, නමුත් දුරස්ථ පාලකය වෙත ඔබේ කැපවීම තල්ලු කිරීමේදී බල තල්ලු භාවිතා කරන්න.

>අවවාදයයි <br>
>දුරස්ථ පාලකය වෙත බලහත්කාරයෙන් තල්ලු කිරීම දුරස්ථ පාලකයේ වෙනස්කම් උඩින් ලියයි (සහ ඉවත දමනු ඇත) සහ ඔබේ තල්ලු කළ කැපවීම් පමණක් තබා ගනී. මේ අතරතුර අනෙකුත් කණ්ඩායම් සාමාජිකයින් විසින් සිදු කරන ලද දුරස්ථ පාලකයේ වෙනස්කම් ද උඩින් ලියනු ලැබේ.

ඔබ දුරස්ථ පාලකයේ අවසන් මෑත කැපවීම වෙනස් කරන ආකාරය මෙයයි:

```bash
git add <your changed files>
git commit --amend -m "followed by your new commit message"
git push --force
```




>```--force``` වෙනුවට ```--force-with-lease``` භාවිතා කිරීම දුරස්ථ ශාඛාවේ (ඔබ එසේ කිරීමට අදහස් නොකරන්නේ නම්) වෙනත් පුද්ගලයින්ගේ වෙනස්කම් උඩින් ලිවීම වළක්වන ආරක්ෂිත විකල්පයකි.