( به نام خدا )
قبل از اینکه شروع کنی به خوندن دوتا پست قبلی مربوط به گیت رو بخون بعد بیا اینجا…
این بخش دستورات {amend,reset , soft, mixed, hard, gitignore, branch, checkout, merge, stash} پوشش داده شده و آخرین بخش از آموزش گیت خواهدبود.
مستقیم بریم سر اصل مطلب و زیاد حرف نزنیم.
تغییر آخرین کامیت:
یه زمان پیش میاد که آخرین کامیتی که انجام دادیم رو میخوایم تغییر بدیم (میتونه محتوای فایلمون باشه یا میتونه توضیحی که براش نوشتیم باشه!)
برای اینکه آخرین کامیت رو اصلاح کنیم از دستور –amend استفاده میکنیم , amend به معنای اصلاح کردن .
1 |
git commit -a --amend -m "new command " |
برگشت به عقب :
هنگامی که خواستیم به یک یا چند کامیت قبلی برگریم از این سری دستورات استفاده میکنیم .
1) reset –soft
در بخش های قبلی در مورد لاگ گرفتن گفته شد اینجا به لاگ گرفتن احتیاج داریم اگر دقت کرده باشید هر لاگی که دریافت میکنیم یه یونیک کد به ما برمیگردونه در تصویر زیر یه نمونه از لاگ رو نمایش میدم.
mohandesjan.ir_.png” width=”726″ height=”368″ />
خب حالا برای برگشتن به هر کدوم از این کامیت ها از این یونیک کد هایی که دراختیار داریم جلوی دستور git reset –soft استفاده میکنیم به نمونه کد زیر توجه کنید.
1 |
git reset --soft 9cd26ca3052ef0f9dc9ba7c907bc6aa29ddf1675 |
خب کامیت های ما برمیگرده به کامیتی که یونیک کدش رو در دستور بالا قرار دادیم.
نکته : با این دستور (soft) تنها کامیت های گیت رو تغییر میدیم و تغییری در فایل های اصلی ایجاد نمیشه همچنین با این دستور فایل ها از مرحله ۳ که مخزن اصلی هستند وارد مرحله ۲ یعنی استیج میشن.
2) reset –mixed
تفاوت این دستور با soft در این هستش که کامیت ها که در مخزن اصلی قرار دارند به مرحله یک برمیگردند همون working
باید توجه داشت بازهم تغییری در کد های موجود در فایل ها ایجاد نمیشه.
مثال:
1 |
git reset --mixed 22fbd65c465fe017ba18f0651a0791e2c83902c9 |
3) reset –hard
این دستور کامیت را به مرحله یک برمیگردونه و حتی کد های داخل فایل ها هم به نسخه ای که انتخاب کردیم برمیگردونه و کامل تغییر میکنه. فوق العادست !
مثال:
1 |
git reset --hard 4f8cccc6637c28175ff8d61a5e682d97c134caac |
پیشنهاد: هر از چند گاهی از لاگ های کامیت خود بکاپ بگیرید همینطور که میتونید به کامیت های قبلی برگردید همچنین میتونید دوباره به کامیت جدید برگردید در حقیقت گیت نسخه ها رو حذف نمیکنه فقط از دید ما پنهان میکنه .
نادیده گرفتن فایل یا دایرکتوری:
برای اینکه به گیت بفهمونیم ما یک سری فایل رو نمیخوایم دنبال کنی باید با دستور زیر یه فایل متنی که البته hide هست ایجاد میکنیم
1 |
touch .gitignore |
با اضافه کردن نام فایل یا دایرکتوری داخل این فایل دیگه گیت سراغ اونا نمیره اما خود فایل .gitignore رو باید add و commit کنیم .
شاخه ها در گیت (branch):
رسیدیم به یکی از قسمت های مهم گیت : شاخه
به محض ورود گیت به پروژه ای شاخه master ایجاد میشه که مخصوص همون ایجاد کننده پروژه هستش اما ممکنه بخوایم روی یک پروژه متن باز کار کنیم و یا توی یک پروژه گروهی مشغول کار بشیم .
طبیعتا نمیایم روی نسخه اصلی تغییرات خودمون رو اعمال کنیم چون امکان وجود ایرادات یا باگ توی کد ما وجود داره . راه حل چی میتونه باشه؟
سازنده اصلی پروژه با ساخت یک شاخه یه نسخه کپی شده رو در اختیار ما قرار میده تا تغییرات خودمون رو اونجا وارد کنیم و بعد مدیر پروژه اگر صلاح دونست تغییرات مارو به پروژه اصلی اضافه میکنه.
همچنین میشه ورژن بندی کنیم پروژمون رو .
بریم سراغ دستورات مربوط به شاخه :
نمایش شاخه های موجود:
برای نمایش شاخه های موجود از دستور زیر استفاده میکنیم.
1 |
git branch |
ایجاد شاخه جدید:
1 |
git branch name |
وارد شدن به شاخه دیگر:
1 |
git checkout name |
ساخت همزمان شاخه جدید و ورود به آن:
1 |
git checkout -b name |
مشاهده تفاوت های بین دو شاخه :
1 |
git diff name1..name2 |
در اینجا بجای name1 و name2 نام دو شاخه مورد نظر رو وارد کنید.
تغییر نام شاخه ها:
1 |
git branch -m name new_name |
حذف یک شاخه:
1 |
git branch -d name |
ادغام دو شاخه (merge):
برای مثال ما میخوایم به شاخه اصلی master کد هایی که داخل شاخه name زدیم رو وارد کنیم برای اینکار وارد شاخه مقصد میشیم توی این مثال master هستش و از داخل اون شاخه دستور زیر رو وارد میکنیم.
1 |
git merge name |
حافظه موقت ذخیره سازی
یه زمان برای ما پیش میاد که تغییراتی که روی کد ها انجام دادیم رو نمیخوایم کامیت کنیم که وارد مخزن اصلی بشه (حالا به هر دلیلی مثلا کدمون کامل نیست میخوایم بعدا تکمیلش کنیم و بعد کامیت کنیم)ولی نیاز داریم که از شاخه ای به شاخه ی دیگه بریم برای اینکه کد نصفه نیمه خودمون رو در فضایی موقت داشته باشیم از دستور زیر استفاده میکنیم:
1 |
git stash |
همچنین اگر بخوایم توضیحی برای این ذخیره سازی بنویسیم بصورت زیر عمل میکنیم:
1 |
git stash save "command" |
زمانی که در حافظه موقت ذخیره کردیم براحتی و بدون هیچ مشکلی میتونیم از شاخه ای به شاخه دیگه بریم .
مشاهده لیست ذخیره سازی در حافظه موقت:
1 |
git stash list |