کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

دستور Revert در Git

Git Revert


Git Revert چیست


با استفاده از دستور revert میتوان commit قبلی را به عنوان یک commit جدید اضافه کرد، بدون اینکه تغییری در log ایجاد شود.


گام اول: commit قبلی را بیابید:


انتخاب commit مورد نظر برای revert

گام دوم: با استفاده از آن یک commit جدید بسازید:


ایجاد commit جدید با استفاده از revert

حالا بیایید در جایی که، به شکل تصادفی (!) یک فایل را حذف کرده ایم، یک commit جدید بسازیم:


git commit -m "Just a regular update, definitely no accidents here..."
[master 16a6f19] Just a regular update, definitely no accidents here...
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 img_hello_git.jpg

               

حالا قصد داریم به یک بخش مشخصی از تاریخچه commit مان باز گردیم. این کار را با استفاده از revert انجام میدهیم.


یافتن commit دلخواه در Log


ابتدا، باید نقطه مورد نظر مان را برای بازگشت بیابیم. برای این کار باید Log را بررسی کنیم.


با توجه به اینکه لیست log میتواند بسیار طولانی باشد، ما از گزینه ی - - oneline استفاده میکنیم که تنها یک خط از هر commit را نمایش میدهد:


  1. هفت کاراکتر اول هر commit hash
  2. commit message

حالا بیایید مکان دلخواه مان را برای revert بیابیم:


git log --oneline
52418f7 (HEAD -> master) Just a regular update, definitely no accidents here...
9a9add8 (origin/master) Added .gitignore
81912ba Corrected spelling error
3fdaa5b Merge pull request #1 from w3schools-test/update-readme
836e5bf (origin/update-readme, update-readme) Updated readme for GitHub Branches
daf4f7c (origin/html-skeleton, html-skeleton) Updated index.html with basic meta
facaeae (gh-page/master) Merge branch 'master' of https://github.com/w3schools-test/hello-world
e7de78f Updated index.html. Resized image
5a04b6f Updated README.md with a line about focus
d29d69f Updated README.md with a line about GitHub
e0b6038 merged with hello-world-images after fixing conflicts
1f1584e added new image
dfa79db updated index.html with emergency fix
0312c55 Added image to Hello World
09f4acd Updated index.html with a new line
221ec6e First release of Hello World!

               

قصد داریم به commit قبلی : commit: 52418f7 (HEAD -> master) Just a regular update, definitely no accidents here... ، باز گردیم (آخرین commit).


Revert Head


با استفاده از revert HEAD ( revert به آخرین تغییر ایجاد شده و سپس commit) به آخرین commit باز میگردیم. با استفاده از گزینه ی - - no-edit نیازی به تغییر message نیز نداریم ( پیام پیش فرض revert استفاده خواهد شد):


git revert HEAD --no-edit
[master e56ba1f] Revert "Just a regular update, definitely no accidents here..."
 Date: Thu Apr 22 10:50:13 2021 +0200
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 img_hello_git.jpg

               

حالا دوباره log را بررسی میکنیم:


git log --oneline
e56ba1f (HEAD -> master) Revert "Just a regular update, definitely no accidents here..."
52418f7 Just a regular update, definitely no accidents here...
9a9add8 (origin/master) Added .gitignore
81912ba Corrected spelling error
3fdaa5b Merge pull request #1 from w3schools-test/update-readme
836e5bf (origin/update-readme, update-readme) Updated readme for GitHub Branches
daf4f7c (origin/html-skeleton, html-skeleton) Updated index.html with basic meta
facaeae (gh-page/master) Merge branch 'master' of https://github.com/w3schools-test/hello-world
e7de78f Updated index.html. Resized image
5a04b6f Updated README.md with a line about focus
d29d69f Updated README.md with a line about GitHub
e0b6038 merged with hello-world-images after fixing conflicts
1f1584e added new image
dfa79db updated index.html with emergency fix
0312c55 Added image to Hello World
09f4acd Updated index.html with a new line
221ec6e First release of Hello World!

               
توجه:

برای revert به commit های قدیمی تر، از دستور git revert HEAD~x ( x شماره است، با قرار دادن ۱ به معنای commit قبلی، ۲ به معنای ۲ commit عقب تر و ... ) استفاده میشود.


در مقاله ی بعد، git reset را بررسی خواهیم کرد، که repository را به commit های قبلی بازمیگرداند ( بدون ایجاد commit جدید).


1400/05/13 2919 423
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...