از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
بازگشت Git به Previous Commit – چگونه به Last Commit برگردیم
سرفصلهای مطلب
Git یک ابزار عالی برای کنترل نسخه است. همچنین همکاری با دیگران را کارآمدتر می کند.
در این مقاله، یاد خواهید گرفت که چگونه هنگام پیگیری پروژه خود با Git، به commit های قبلی برگردید.
دو دستوری که در این مقاله در مورد آنها صحبت خواهیم کرد عبارتند از git reset
و git revert
. این دستورات می توانند به شما کمک کنند تا commit های خود را لغو کرده و به commit قبلی بازگردید.
با این حال، آنها دقیقاً یکسان نیستند، بنابراین با نشان دادن نحوه عملکرد هر دستور در یک پروژه، این مقاله را کمی کاربردی تر می کنیم.
هر کسی میتواند این آموزش را دنبال کند زیرا این آموزش مختص زبان نیست – ما از یک فایل متنی (txt) استفاده خواهیم کرد.
نحوه بازگشت به یک کامیت قبلی با استفاده از git reset
فرمان
در این قسمت مراحل ساخت یک فایل جدید و ایجاد سه commit را طی می کنیم. سپس خواهید دید که چگونه می توانید با استفاده از شناسه commit به آخرین commit یا هر commit دیگری برگردید.
برای شروع، من یک فایل به نام ایجاد کرده ام tasks.txt
. فایل این را در خود دارد:
1. code.
2. Practice.
3. Build.
در مرحله بعد، ما این فایل را مقداردهی اولیه، اضافه و commit می کنیم:
git init
git add tasks.txt
git commit -m "first commit"
ما اولین تعهد را انجام داده ایم.
ما روند بالا را دو بار دیگر تکرار می کنیم اما قبل از هر commit یک خط متن اضافی به فایل اضافه می کنیم. به این معنا که:
1. code.
2. Practice.
3. Build.
4. Research.
git add tasks.txt
git commit -m "second commit"
در نهایت برای کامیت سوم:
1. code.
2. Practice.
3. Build.
4. Research.
5. Write.
git add tasks.txt
git commit -m "third commit"
اکنون سه کامیت داریم. برای بازگشت به commit قبلی، ابتدا باید شناسه commit را دریافت کنید. برای انجام این کار، دستور زیر را اجرا کنید:
git log --oneline
در ترمینال من این را دارم:
همانطور که در بالا مشاهده می کنید، این دستور تمام commit های شما را به همراه شناسه آنها فهرست می کند.
برای بازگشت به کامیت دوم، شما باید آن را اجرا کنید git reset
دستور به دنبال شناسه commit. به این معنا که:
git reset 5914db0
اگر تا این مرحله پیگیری کرده باشید، هیچ تفاوتی در فایل مشاهده نخواهید کرد (بعداً خواهید دید که چگونه commit و تغییرات ایجاد شده در فایل را لغو کنید).
فایل همچنان به این شکل است:
1. code.
2. Practice.
3. Build.
4. Research.
5. Write.
اما زمانی که ما اجرا می کنیم git log --oneline
دستور، کامیت سوم در لاگ commit ها نخواهد بود:
ما با موفقیت به یک commit قبلی بازگشتیم.
اگر می خواهید یک commit را لغو کنید و تمام تغییرات ایجاد شده پس از آن commit را انجام دهید، آن را ضمیمه کنید --hard
پرچم به شما git reset
فرمان
بیایید این را با بازگشت به اولین commit آزمایش کنیم:
git reset 89f6c3d --hard
اکنون فایل متنی به این صورت است:
1. code.
2. Practice.
3. Build.
ما به حالت اولیه فایل در نقطه commit مشخص شده بازگشته ایم. تمام تغییراتی که پس از آن commit در فایل ایجاد شده بود، حذف شدند. هنگامی که ما گزارش commit را بررسی می کنیم، فقط اولین commit را خواهیم داشت.
در حالی که به نظر می رسد این کار جالبی باشد، باید هنگام استفاده از این دستور مراقب باشید. به خصوص زمانی که با یک تیم کار می کنید.
اگر یک commit را لغو کنید و هر تغییر فایلی را که بعد از آن انجام می شود حذف کنید، ممکن است تغییرات مهمی را که شما و سایر هم تیمی ها در کدتان ایجاد کرده اند از دست بدهید. این کار تاریخچه تعهد پروژه شما را نیز تغییر می دهد.
خوشبختانه برای ما، راهی برای بازیابی وضعیت یک commit حذف شده وجود دارد. در اینجا می توانید در مورد آن اطلاعات بیشتری کسب کنید.
نحوه بازگشت به یک کامیت قبلی با استفاده از git revert
فرمان
من قبلاً پروژه را مقداردهی اولیه کرده ام و مانند قسمت قبل سه تعهد انجام داده ام. در اینجا گزارش commit به نظر می رسد:
برای بازگشت به commit قبلی، آن را اجرا کنید git revert
دستور به همراه شناسه commit commit فعلی.
در مورد ما، از شناسه کامیت سوم استفاده خواهیم کرد:
git revert 882ad02
دستور بالا commit فعلی را لغو می کند و فایل را به حالت commit قبلی برمی گرداند. هنگامی که گزارش های commit را بررسی می کنید، چیزی شبیه به این خواهید داشت:
بر خلاف git reset
فرمان، git revert
دستور یک commit جدید برای تغییرات برگردانده شده ایجاد می کند. commitی که از آن برگشتیم حذف نخواهد شد.
بنابراین همانطور که می بینید، git reset
و git revert
سلام.
git reset
تغییرات را تا وضعیت شناسه commit مشخص شده خنثی می کند. به عنوان مثال، بازگشت به شناسه commit دوم، تغییرات را خنثی می کند و وضعیت فایل را به عنوان وضعیت commit دوم باقی می گذارد.
git revert
تغییرات را تا وضعیت قبل از commit ID مشخص شده لغو می کند. به عنوان مثال، بازگشت به شناسه commit دوم، تغییرات را خنثی می کند و وضعیت فایل را به عنوان وضعیت commit که قبل از commit دوم – commit اول است، باقی می گذارد.
توضیحات بالا ممکن است گیج کننده به نظر برسد. بهترین راه برای درک آن این است که خودتان آن را امتحان کنید.
چه موقع باید استفاده کرد git reset
و git revert
شما باید استفاده کنید git reset
هنگام کار بر روی یک مخزن محلی با تغییراتی که هنوز از راه دور انجام نشده است. این به این دلیل است که اجرای این دستور پس از اعمال تغییرات از مخزن از راه دور، تاریخچه commit پروژه را تغییر میدهد و منجر به تداخل ادغام برای همه افرادی میشود که روی پروژه کار میکنند.
git reset
وقتی متوجه می شوید که تغییراتی که در یک شعبه محلی خاص ایجاد می شود باید در جای دیگری باشد، گزینه خوبی است. می توانید بدون از دست دادن تغییرات فایل خود، بازنشانی کنید و به شاخه مورد نظر بروید.
git revert
گزینه خوبی برای برگرداندن تغییرات فشار داده شده به یک مخزن راه دور است. از آنجایی که این دستور یک commit جدید ایجاد می کند، می توانید با خیال راحت از شر اشتباهات خود خلاص شوید بدون اینکه تاریخچه commit را برای دیگران مرتب کنید.
خلاصه
در این مقاله در مورد بازگشت به commit های قبلی در Git صحبت کردیم.
ما در مورد دو دستور اصلی صحبت کردیم که نشان می دهد چگونه تغییرات Git را لغو کنیم – the git reset
و git revert
دستورات
ما همچنین دیدیم که هر دو دستور با استفاده از مثال های عملی چگونه کار می کنند.
کد نویسی مبارک!
منتشر شده در 1402-12-26 19:31:06