آشنایی با Git: مباحث پیشرفته تر (ضمیمه 1)

Advanced Topics in git

0 176

در این قسمت از آموزش گیت می خواهیم دستورات و تکنیک های پیشرفته تری را بررسی کنیم که به احتمال زیاد بعدها به دردتان خواهند خورد. بنابراین بدون مقدمه شروع می کنیم!

بررسی تفاوت های موجود بین دو commit

هر commit دارای id خاص خود است که به شکل رشته ای از اعداد و حروف می باشد. برای نمایش لیست کاملی از تمام commit ها و id هایشان می توانید از دستور git log استفاده کنید:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

من چند commit دیگر به فایل خود اضافه کردم بنابراین چنین چیزی را می بینید. واضح است که نتایج شما بسته به نام، ایمیل، تاریخ ایجاد تغییرات و… متفاوت خواهد بود. همانطور که می بینید id های commit ها بسیار طولانی هستند اما در هنگام کار با آن ها معمولا چندین کاراکتر اول کافی هستند و نیازی به کپی کردن تمام رشته نیست (البته اگر می خواهید محکم کاری کنید می توانید تمام رشته را نیز کپی کنید).

به طور مثال برای نمایش چیزهای جدیدی که درون یک commit وجود دارد می توانیم از دستور git show [commit] استفاده کنیم:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

همچنین با استفاده از ساختار زیر می توانیم تفاوت بین دو commit مختلف را مشاهده کنیم:

git diff [commit-from]..[commit-to]

باید به جای commit-from آیدی commit اول و به جای commit-to آیدی commit دوم را قرار دهید تا تفاوت بین این دو نمایش داده شود. به طور مثال:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

در اینجا اولین commit را با آخرین commit مقایسه کرده ایم؛ بدین صورت می توانیم تمام تغییراتی که از ابتدا تا انتها ایجاد شده اند را مشاهده کنیم.

برگرداندن یک فایل به نسخه ی قبلی

git به ما اجازه می دهد که هر فایلی را به نسخه ی قبلی خود در یک commit مشخص برگردانیم. این کار با استفاده از دستور آشنای git checkout انجام می شود؛ قبلا از این دستور برای جا به جایی بین شاخه ها استفاده کردیم اما می توانیم از آن برای جابجایی بین commit ها نیز استفاده کنیم. برای مثال فایل hello.txt را گرفته و آن را به اولین نسخه ی آن (اولین commit) برمی گردانیم. برای این کار باید id مربوط به آن commit و آدرس کامل فایل خود را نیز داشته باشیم:

از آنجا که فایل ما در همین پوشه بوده است، آدرس کامل همان نام فایل می شود.

تصحیح commit ها

اگر commit ای را ثبت کردید و سپس متوجه شدید که درون پیام آن اشتباه تایپی دارید، یا به طور کل می خواهید پیام commit آن را تغییر دهید، یا می خواهید یک فایل را به آن اضافه کنید باید از دستور git commit –amend استفاده کنید (فقط برای آخرین commit کاربرد دارد). این دستور همه چیز را از commit قبل گرفته و به staging area می برد، سپس سعی می کند یک commit جدید بر اساس آن بسازد. بدین صورت می توانید commit ثبت شده را اصلاح کنید.

به طور مثال برای اصلاح پیام ثبت شده می توانید مستقیما بگویید:

این کد باید ویرایشگر متنی شما را باز کند تا کارتان را انجام دهید و پیام را ویرایش کنید. همچنین می توانید به جای کد بالا بدین روش عمل کنید:

با این روش می توانید به صورت مستقیم پیام Commit خود را ویرایش کنید.

اما برای اضافه کردن فایل هایی که فراموش کردیم چطور؟

فرض کنید دو فایل hello.py و main.py را دارید، آن ها را تغییر داده اید اما فراموش کرده اید یکی از آن ها را Add کنید:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

بدین صورت این commit جدید با commit قبلی ادغام می شود و دیگر نیازی به ثبت commit جدید نخواهد بود. قسمت no-edit یعنی نمی خواهید پیام commit را تغییر دهید.

هشدار: لطفا به یاد داشته باشید که دستور amend– فقط برای تصحیح آخرین commit استفاده می شود. اگر می خواهید commit های قبل از آن را ویرایش کنید باید از دستور rebase و ساختار خاص آن استفاده کنید.

برای موارد پیچیده تر که می خواهید تمام پروژه به قبل از commit خاصی برگردد که آخرین commit نیست می توانید از git revert نیز استفاده کنید. این دستور تمام تغییرات یک commit را برگردانده و یک commit جدید می سازد. می توانید با کلیدواژه ی HEAD به آخرین commit دسترسی داشته باشید:

برای دیگر commit ها (که آخرین commit نیستند) بهتر است از id خاص خودشان استفاده کنیم:

البته استفاده از دستور revert برای این فایل ها ممکن است باعث بروز مشکلاتی هم بشود؛ به طور مثال شما فایلی را در یک commit قدیمی تغییر داده اید اما آن فایل در یک commit جدید تر نیز تغییر کرده است! در این صورت git نمی تواند تشخیص دهد که کدام یک را باید تغییر دهد و کدام خطوط، خطوط درست هستند.

در قسمت بعد برایتان توضیح خواهم داد که در صورت بروز چنین خطایی چه کار می توان کرد.

ترتیبی که روکسو برای یادگیری مطالب سری آشنایی با Git به شما توصیه می‌کند:

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.

film izle | eskisehir escort | mersin escort | www.ieski.com | eskort adana | www.izmir-eskort.org | kabak koyu | hd tv izle