در این مقاله، من فقط قصد دارم تمام دستورات گیت را که به صورت روزانه استفاده میکنم، بر اساس مفهوم و مورد استفاده بررسی کنم. همچنین بسیاری از دامها را که کاربران جوان گیت در آن قرار میگیرند و نحوه اجتناب از آنها را پوشش خواهم داد. من متوجه شدهام که تدریس گیت در بسیاری از دانشگاهها بسیار ضعیف است، بنابراین استفاده از گیت نامرتب زیادی را در طول حرفه خود دیدهام. بنابراین بیایید به این بپردازیم که چگونه میتوانید از گیت تمیزتر استفاده کنید و تیم خود را راضی نگه دارید.
فشرده کردن تغییرات کد
وضعیت
گیت به طور مداوم آنچه را که در حال انجام تغییرات به صورت محلی انجام میدهید، ردیابی می کند. برای اینکه بفهمید چه چیزی میبیند، این کار را انجام دهید:
وضعیت git
این دستور بسیار مهم است، زیرا آنچه میگوید بر روی کاری که با 2 دستور بعدی خود انجام میدهید، افزودن و commit تأثیر میگذارد. این وضعیت نشان دهنده فایلهای تغییر یافتهای است که گیت در پروژه شما شناسایی میکند.
تفاوت
این دقیقاً به شما میگوید که گیت در حال حاضر از چه تغییرات کدی مطلع است و پس از افزودن هر چیزی، commit چگونه خواهد بود. در اینجا نحوه انجام آن آمده است:
git diff FILE_PATH
این به شما خطوط اضافه/حذف شده برای آن یک فایل را میدهد. اگر تفاوت با انتظارات شما مطابقت ندارد، میخواهید در هر ویرایشگر IDE/متنی که استفاده میکنید، ذخیره را بزنید. شما همچنین میتوانید فقط یک تفاوت گیت انجام دهید، اما همه چیزهایی را که تا به حال تغییر دادهاید به شما میدهد که به نوعی به هم ریخته است.
اضافه کردن
وضعیت گیت قرار است فایلهای موجود در مخزن محلی شما را در 2 دسته، بدون ردیابی و ردیابی بازگرداند. فایل های ردیابی شده آنهایی هستند که گیت از آنها آگاه است و به احتمال زیاد قبلاً مرتکب شدهاند. فایلهای ردیابی نشده فایلهای جدیدی هستند که شما آنها را اجرا نکردهاید. کاری که add انجام میدهد این است که به گیت میگوید که این فایل چیزی است که میخواهید آن را انجام دهید و در نهایت آن را از راه دور فشار دهید. بسیاری از مردم گردش کار Git Push را به این صورت دیدند:
git add . <– Try not to do this!
git commit some_message_here
git push
اضافه کردن گیت این است که به معنای واقعی کلمه هر فایلی را که گیت تغییری را شناسایی کرده است اضافه میکند تا برای یک commit تنظیم شود. اگر بسیاری از کدهایی که ایجاد کردهاید واقعاً تولید شده باشند و .gitignore شما به اندازه کافی آنها را پوشش ندهد، خطرناک است. این باعث میشود که تعداد زیادی آشغال به ریموت شما منتقل شود، که دائماً در درخواستهای کشش صدا ایجاد میکند. فقط git add را اجرا کنید. شما همیشه میتوانید فقط با اجرای git add بر روی فایلهای فردی که به آنها علاقه دارید ایمن باشید. در پایان، شما معمولاً فقط روی فایل های موجود کار میکنید، بنابراین به ندرت باید git add را اجرا کنید. در بخش بعدی به تفصیل توضیح داده خواهد شد.
مرتکب شدن
این عملاً تنها دستور git commit است که من از آن استفاده میکنم، و چرا واقعاً به اجرای git add نیاز است.
git commit -am «YOUR_COMMIT_MESSAGE
-am 2 پارامتر خط فرمان را مشخص میکند:
- a (افزودن) – کاری که این امر انجام میدهد این است که تمام تغییراتی که در فایلهای موجود ایجاد کردهاید را میگیرد و آنها را در commit شما بسته بندی میکند. به همین دلیل است که تقریباً هرگز نباید git add را اجرا کنید.
- -m (پیام) – به شما امکان میدهد پیام مرتبط با commit را از خط فرمان پیوست کنید. اگر از این پرچم استفاده نمیکنید، git یک پیام Vim را برای شما باز میکند تا پیام commit خود را تایپ کنید که شخصاً آن را خیلی سنگین میدانم، مخصوصاً زمانی که من تازه شروع به کار کردم. بله، Vim شگفتانگیز است، اما میتواند برای توسعهدهندگان جوان بسیار غیرمعمول باشد.
فشرده کردن
این همان چیزی است که کد شما را روی ریموت (معمولاً GitHub) میبرد. معمولاً فقط این است:
git push
با این حال، فشار در واقع به این صورت است:
git push REMOTE_NAME BRANCH_NAME
بهطور پیشفرض، گیت به هر چیزی که از راه دور در مبدا قرار دارد فشار میآورد. همچنین تمام شاخههای محلی را که با همتایان خود در سمت راه دور مطابقت ندارند، تحت فشار قرار میدهد، همتایان با یک تطابق نام ساده تعیین میشوند. این یادداشتها را برای زمانی که به ریموتهای غیراصلی فشار میدهید و موارد بسیار نادری که شعبه محلی شما با ریموت دیگری که بهروزرسانی میکنید نام ندارد، در نظر داشته باشید.
اگر میخواهید خاص باشید و شاخه خاصی را به یک کنترل از راه دور خاص فشار دهید، میتوانید از موارد زیر استفاده کنید:
git push remote_name my_local_branch_name:remote_branch_nam
برخورد با کد افراد دیگر
رفتن و آوردن
کاری که واکشی انجام میدهد این است که تمام کدهای جدید را از راه دور دریافت میکند تا بتوانید به صورت محلی با آن بازی کنید (بازسازی، انتخاب، بررسی یک شعبه جدید و غیره). برخلاف git pull، با کد محلی شما کاری انجام نمیدهد. شما کاملا تحت کنترل هستید به همین دلیل است که git pull خطرناک است. “git pull” یکی از آن چیزهایی است که آنها در مدرسه به شما یاد میدهند تا شما را با git با حداقل دستورات به خاطر بسپارند (من همیشه در دانشگاه git pull را انجام می دادم). به طور خلاصه، git pull یک واکشی و سپس یک ادغام را انجام میدهد، که به شما کنترل کمتری بر نحوه ادغام کد جدید با کد شما میدهد. در اینجا نحوه انجام واکشی آمده است:
git fetch REMOTE_NAME
بهطور پیشفرض، واکشی از هر چیزی که ریموت اصلی در مخزن گیت شما باشد واکشی میشود.
چیدن گیلاس
بیایید بگوییم که یک کد به ارزش یک commit وجود دارد که میخواهید با آن آزمایش یا کار کنید. با این حال، شعبهای وجود ندارد که بتوانید با آن ادغام/بازسازی کنید تا فقط آن commit را دریافت کنید. این زمانی است که شما چیدن گیلاس را انجام میدهید. بیایید بگوییم که شما واقعاً کدی را که در این کامیت نوشتم میخواهید:
https://github.com/Gear61/PADFriendFinder-Android/commit/d6ea8da972343c954b2e235f85e000cbda73fcf9
هر commit یک شناسه منحصر به فرد دارد. میتوانید از انتهای URL و از خود صفحه وب در بالا سمت راست ببینید که شناسه commit برای commit پیوند داده شده است:
d6ea8da972343c954b2e235f85e000cbda73fcf9
چیدمان گیلاس به این شکل است:
git cherry-pick COMMIT_ID
بنابراین برای اضافه کردن کد من برای آن 2 تست به محیط / شعبه محلی خود، این کار را انجام دهید:
git cherry-pick 1925560490f66c473cd811e3485594484c6900a2
ذخیره کردن
دومین فرمانی که می خواهم به آن بپردازم، stash است. Stash عمدتاً زمانی مرتبط است که در حال ادغام کد هستید. وقتی در این سناریو تغییرات کد غیرمتعهد داشته باشید، گیت از دست شما عصبانی میشود، زیرا نمیداند چگونه تغییرات شما و کدهای دریافتی را در هم بپیچد. کاری که stash انجام میدهد این است که کد کار در حال انجام شما را در مکانی امن پنهان میکند و هر زمان که شد میتوانید آن را برگردانید. در اینجا 3 دستور اصلی برای آن وجود دارد:
git stash — This “hides away” your code
git stash apply — This brings back your most recently “hidden away” code
git stash list — shows you the list of stashes you have locally (yup, you can have multiple stashes, Git is great)
بنابراین، اگر از یک مدل فورکینگ پیروی میکنید، یک جریان رایج به این صورت است (بگذارید بگوییم مخزن اصلی از راه دور “اصلی” است، و شما در حال بهروزرسانی استاد خود در برابر اصلی هستید):
- git fetch main – آخرین تغییرات را از مخزن اصلی دریافت کنید
- git stash – تغییرات محلی خود را به طور موقت کنار بگذارید تا بتوانید ادغام شوید
- git merge remotes/main/master – استاد محلی خود را در برابر مخزن اصلی به روز کنید
- git stash اعمال می شود – تغییرات محلی خود را در بالای شاخه اصلی به روز شده خود قرار دهید و هرگونه تضاد ادغام را حل کنید
شاخه ها
مشخص کنید که در کدام شعبه به همراه همه شعبه های محلی هستید
git branch
بفهمید چه شاخه هایی وجود دارد (هم محلی و هم از راه دور)
git branch -av
-a (all)
-v (verbose)
اگر شعبه ای را از دست دادید، یا باید یک شاخه راه دور را به محلی تبدیل کنید و/یا یک واکشی انجام دهید.
شروع به کار در شاخه دیگری کنید
git checkout BRANCH_NAME
یک شعبه جدید ایجاد کنید
git checkout -b BRANCH_NAME
شعبه جدید شبیه سازی شعبه ای است که در حال حاضر در آن هستید.
ریموت ها
ریموت مکانی است که کد به صورت آنلاین ذخیره میشود. تقریبا برای همه، این یک مخزن GitHub است که با یک URL نشان داده می شود.
اضافه کردن یک کنترل از راه دور
بیایید بگوییم که من روی PAD Friend Finder کار میکنم و میخواهم کدهایی را تغییر دهم که جاناتان نوشته است و در فورک خود فشار داده است که در مخزن اصلی ادغام نشدهاند. برای انجام این کار، باید مخزن گیت محلی خود را از وجود آن آگاه کنم. برای انجام این کار، باید چنگال جاناتان را به عنوان یک کنترل از راه دور اضافه کنم.
اضافه کردن ریموت ها به این صورت است:
git remote add NAME_OF_REMOTE REMOTE_URL
بنابراین برای اینکه شروع به دسترسی به کد در فورک با اضافه کردن آن به عنوان یک کنترل از راه دور کنم، این را اجرا می کنم:
git remote add jonathan git@github.com:jcio001/PADFriendFinder-Android.git
و پس از آن، من این را اجرا میکنم تا تغییرات کد روی آن را که در حال حاضر به صورت محلی ندارم، دریافت کنم:
git fetch jonathan
کنترل از راه دور فعلی شما
گاهی اوقات فراموش می کنید که نام ریموتهایتان چیست. برای آن موقعیتها، شما این کار را انجام دهید:
git remote -v
این فهرستی از تمام ریموتهایی که دارید و آدرسهایی که با آنها مطابقت دارند به شما میدهد.
اگر این مطلب برای شما مفید بود برای حمایت و کمک به دیگران وبلاگ پارمین را به دوستان خود معرفی کنید.
نظرات کاربران