Mohammad Jawad Barati
Mohammad Jawad Barati
خواندن ۲ دقیقه·۴ سال پیش

خرابکاری های رایج گیت برای junior هایی مثل من

یه مقدمه کوتاه بگم، توی این پست قصد دارم اشتباهات رایج خودم رو توی گیت بنویسم. پس خوشهالی و موثر بودن این پست رو با به اشتراک گذاشتن اشتباهات خودتون چند برابر بکنید (در ضمن اگه اشتباهتون خیلی مهم بود پست رو ویرایش می کنم و اونم به جمع اشتباهات رایج اضافه میشه). نکته مهم اینه که این پست هم مثل بقیه پست هام به روز رسانی میشه.

اشتباهات مرتبط با merge کردن و undo کردن کامیت

شماره ۱

فرض کن برنچی داری با اسم location و توی اون اومدی یسری کامیت زدی و push کردی روی گیت هابت. بعدش اومدی تو برنچ order و اونو با برنچ location مرج کردی. حالا درجا یادت میفته که یه جایی از کدت ارور داره و اونو باید توی برنچ location درست بکنی.

پس `git checkout location` میکنی و اون تیکه کد رو اصلاح میکنی، ولی دلت نمیخواد اون رو تو یه کامیت جدید بزنی. پس میای آخرین کامیتت رو undo میکنی و حالا دوباره با این تغییر جدید کامیت میزنی. و بعدش `git push --force origin location` میکنی.

حالا `git checkout order` میکنی و برای اینکه تغییرات جدید رو داشته باشی برنچ order رو با location مرج میکنی. ولی یه موضوعی رو متوجه شدی دیگه! الان اون کامیت قبلیت توی برنچ order هست و هر دو کامیت وجو دارند.

راه حل اینه که `git reset --hard commitSha` بکنی و دوباره مرج بکنی.

اینفوگرافی خرابکاری خودم. دوستان اگه خیلی قشنگ نیست دلیلش اینه که خودم درستش کردم نه یه گرافیست.
اینفوگرافی خرابکاری خودم. دوستان اگه خیلی قشنگ نیست دلیلش اینه که خودم درستش کردم نه یه گرافیست.

اینم از git log و گندی که باقی میمونه

توی این کیس شما میتونی `git reset --hard` بکنی روی کامیتی که پیامش a created هست و بعدی دوباره merge بکنی.


شماره ۲

یه کامیتی زدی با message اشتباه. حالا میخوای درستش کنی. کاری که میکنی اینه:

اول یه `git log` میگیری تا بفهمی اون کامیتی که میخوای پیامش رو عوض بکنی بتونی انتخاب بکنی. از اول شروع به شمارش بکن. از شماره یک هم شروع کن. مثل آرایه ها نیست که از صفر شروع بکنه به شمارش

حالا میای یه `git rebase -i HEAD~2` میزنی.

(میخوایم message کامیت دوم رو عوض کنیم دیگه). یه nano (منظورم همون text editor ترمینال هست) برات باز میشه.

pick b15304e fix (main.ts): jwt error middleware pick 1eff0e0 add (user module)

نوشته شده. کاری که باید بکنی اینه که اون pick اولی رو به reword تغییر بدی و بعدش ctrl+x و shift+y بزنی تا تغییرات ذخیره بشه. (امیدوارم با nano کار کرده باشید و ازش نترسید:)

حالا تو صفحه جدید دوباره همون ادیتوره باز میشه با یه تفاوت که حالا میتونی message رو عوض کنی. در نهایت هم ctrl+x و shift+y بزن تا همه چی ذخیره بشه. تموم شد. به همین سادگی کامیت message رو عوض کردی.

رفرنس این خرابکاری<br/>



ادامه دارد...

نظر فراموش نشه.

اینستا گرام با همین ای دی. تلگرامم با آی دی nodejsdeveloperskh.

gitgithubgit mistakesاشتباهات رایج در گیت و راه حل اون هاnodejsdeveloperskh
برنانه نویس، مدرس، محقق. عاشق انیمه هستم و دنبال چالش ها جدید.
شاید از این پست‌ها خوشتان بیاید