گیت چیست؟ توضیح به زبان آدمیزاد، با مثال‌هایی که خودتان تجربه کرده‌اید
آموزش

گیت چیست؟ توضیح به زبان آدمیزاد، با مثال‌هایی که خودتان تجربه کرده‌اید

اگر پوشه‌ی پروژه‌تان پر است از «فایل-نهایی»، «فایل-نهایی-۲» و «فایل-جدید-اصلاح‌شده»، گیت دقیقاً برای همین ساخته شده. توضیح ساده از صفر، بدون اصطلاح‌بازی

تحریریه‌ی دینا کد
نویسنده
۶ دقیقه مطالعه۱ بازدید
اشتراک گذاری۱
فهرست مطالب
  1. ۱گیت چه می‌کند؟ سه کار ساده
  2. ۲گیت و گیت‌هاب یکی نیستند؛ مهم‌ترین سوال تازه‌کارها
  3. ۳پنج دستوری که ۹۰٪ روزهای شما را می‌سازد
  4. ۴فقط برای برنامه‌نویس‌هاست؟
  5. ۵سوال‌هایی که همه می‌پرسند

گیت یک برنامه است که تاریخچه‌ی پروژه‌ی شما را ضبط می‌کند. هر تغییری که بدهید می‌توانید بگویید «اینجا را ثبت کن» و بعداً، فردا یا حتی سال بعد، دقیقاً به همان لحظه برگردید. چرا مهم است؟ تا حالا اسم فایل‌هایتان را این‌طوری گذاشته‌اید؛ اول پروژه-نهایی.docx، بعد پروژه-نهایی-۲.docx و بعد پروژه-نهایی-جدید-واقعی.docx. گیت همین درد را حل می‌کند؛ به‌جای کپی‌های بی‌شماری که نمی‌دانید کدام درست است، یک تاریخچه‌ی مرتب از هر تغییر نگه می‌دارد، با توضیح اینکه «چرا» تغییر کرده. در این مطلب بدون اصطلاح‌بازی می‌بینید گیت دقیقاً چه می‌کند، با گیت‌هاب چه فرقی دارد و از کجا شروع کنید.

گیت چه می‌کند؟ سه کار ساده

۱. عکس‌های ذهنی از پروژه می‌گیرد. هر بار که به نقطه‌ی خوبی رسیدید یک «کامیت» می‌گیرید؛ مثل ذخیره‌ی بازی. کل پروژه در همان لحظه ثبت می‌شود و برای همیشه قابل‌برگشت است. اسم فایل‌ها دیگر «نهایی ۲» ندارد؛ هر ثبت یک توضیح هم دارد، مثل «فرم ثبت‌نام را اضافه کردم».

۲. هر اشتباه قابل‌برگشت است. کد را خراب کردید؟ دو خط مهم را پاک کردید؟ به کامیت قبلی برمی‌گردید. بدون گیت، «برگشت» یعنی دنبال نسخه‌ی قبلی در سطل بازیافت بگردید و دعا کنید.

۳. کار موازی ممکن می‌شود. می‌خواهید یک ایده‌ی جدید امتحان کنید ولی نمی‌خواهید نسخه‌ی سالم را خراب کنید؟ یک «برنچ» (شاخه) می‌سازید که مثل فتوکپی از پروژه است؛ آن‌جا آزادانه خرابکاری می‌کنید و اگر خوب شد با نسخه‌ی اصلی یکی می‌کنید، اگر نه دورش می‌اندازید و اصلی دست‌نخورده می‌ماند. معنای کامل برنچ و ساختنش را در مطلب branch در گیت چیست و چه‌وقت بسازیمش با همین مثال فتوکپی باز کرده‌ایم.

گیت و گیت‌هاب یکی نیستند؛ مهم‌ترین سوال تازه‌کارها

این دو را همیشه با هم می‌شنوید، ولی دو چیز متفاوتند.

  • گیت برنامه‌ای است که روی کامپیوتر خودتان نصب می‌شود و تاریخچه را همین‌جا نگه می‌دارد. آفلاین کار می‌کند؛ به هیچ سایتی نیاز ندارد.
  • گیت‌هاب سایتی است که تاریخچه‌ی گیت شما را در فضای ابری نگه می‌دارد و با دیگران به اشتراک می‌گذارد. شبیه رابطه‌ی برنامه‌ی نوشتن پیام با تلگرام است؛ پیام را در برنامه می‌نویسید و تلگرام می‌رساند و نگه می‌دارد. برنامه‌ی نوشتن هم بدون تلگرام کار می‌کند.

پس ترتیب درست یادگیری اول گیت است و بعد گیت‌هاب. خیلی‌ها برعکس شروع می‌کنند و وسط رابط کاربری گیت‌هاب گم می‌شوند، بی‌آنکه بدانند زیرش چه خبر است.

پنج دستوری که ۹۰٪ روزهای شما را می‌سازد

در پوشه‌ی پروژه ترمینال را باز کنید و این پنج دستور را به ترتیب بزنید.

bashgit init                     # این پوشه از الان پروژه‌ی گیت‌دار است
git add index.html           # این فایل را برای ثبت آماده کن
git add .                    # همه‌ی تغییرات را آماده کن
git commit -m "صفحه اصلی ساخته شد"   # ثبت کن، با توضیح
git log                      # تاریخچه را نشان بده

همین. یک روز کاملِ کار با گیت معمولاً یعنی چند بار تکرارِ همین حلقه: تغییر بده → add کن → commit کن. بقیه‌ی دستورهای گیت (و تعدادشان زیاد است، حتی حرفه‌ای‌ها هم همه را حفظ نیستند) حول همین حلقه می‌چرخند.

از روز اول هم یک عادت بسازید؛ کامیت‌های کوچک با توضیحِ واضح. «تغییرات» عنوان بدی است؛ «چک کردن ایمیل قبل از ثبت‌نام اضافه شد» عنوان خوبی است. شش ماه بعد که دنبال یک تغییر خاص می‌گردید، همین توضیح‌ها هستند که ساعت‌ها وقت‌تان را نجات می‌دهند.

فقط برای برنامه‌نویس‌هاست؟

نه، و این نکته‌ای است که بیشتر مردم جا می‌مانند. هر کاری که فایل تولید می‌کند از تاریخچه سود می‌برد: متن پایان‌نامه، فایل‌های طراحی، اسکریپت‌های تحلیل داده، حتی این مقاله. هر جا احساس کردید «بگذار یک کپی بگیرم قبل از دست‌کاری»، گیت همان‌جاست؛ فقط به‌جای ده کپی، یک تاریخچه‌ی مرتب با برچسب دارید.

تنها جایی که گیت نمی‌درخشد فایل‌های باینری بزرگ‌اند (فیلم خام، فایل‌های فتوشاپ سنگین)؛ گیت هر نسخه را عملاً کامل نگه می‌دارد و مخزن پُرپُر می‌شود. برای متن، و کد که خودش متن است، فوق‌العاده بهینه است.

سوال‌هایی که همه می‌پرسند

کجا یادش بگیرم؟ چقدر طول می‌کشد؟ پنج دستور بالا را در روز اول یاد می‌گیرید. برنچ و حل تعارض (وقتی دو نفر یک خط را تغییر داده‌اند) یک هفته‌ی دیگر اضافه می‌شود. بقیه مسیر یادگیری تدریجی است، و اتفاقاً اینجا روش تعاملی فرق می‌سازد؛ در دوره‌ی گیت و گیت‌هاب دیناکد هر دستور را همان لحظه در مرورگر اجرا می‌کنید، خطا می‌گیرید و اصلاح می‌کنید، بدون نصب چیزی و بدون ترس از خراب‌کردن پروژه‌ی واقعی.

گیت و گیت‌هاب رایگان‌اند؟ هر دو برای استفاده‌ی عادی رایگان‌اند. گیت متن‌باز است؛ گیت‌هاب مخازن عمومی و خصوصی نامحدود رایگان می‌دهد.

چرا همه انقدر از گیت می‌ترسند؟ چون پیام‌های خطایش ترسناک چاپ می‌شوند و بعضی دستورها (reset، revert، restore) اسم‌های به‌هم‌ریخته‌ای دارند که هر سه «برگشتندن» را تداعی می‌کنند ولی کارهای متفاوتی می‌کنند. این موضوع را جداگانه در مطلب تفاوت git reset و revert و restore باز کرده‌ایم. پس نترسید؛ همه‌ی برنامه‌نویس‌ها بارها آن‌ها را غلط زده‌اند و هنوز زنده‌اند.

اگر تیمی نیستم، فقط خودم کار می‌کنم، لازم است؟ بله؛ استفاده‌ی شخصی از گیت شاید رایج‌ترین کاربردش باشد: تاریخچه، برگشت‌پذیری و اطمینان برای پروژه‌های شخصی‌تان. کار تیمی فقط لایه‌ی بعدی همان مهارت است.

قدم بعدی ساده است؛ گیت را نصب کنید، یا اصلاً نصب نکنید و از مرورگر شروع کنید، یک پوشه‌ی آزمایشی بسازید و حلقه‌ی add و commit را سه چهار بار بزنید. وقتی اولین بار با git log تاریخچه‌ی خودتان را دیدید، دیگر سراغ پروژه‌های بی‌تاریخچه برنمی‌گردید.

تحریریه‌ی دینا کد
نویسنده

نظرها

اولین نفری باشید که نظر می‌دهد
برای ثبت نظر وارد شوید

سؤالتان را بپرسید یا تجربه‌تان را بنویسید تا نویسنده‌ی مطلب پاسخ بدهد.

مطالب مرتبط

از همین دسته
diff در گیت چیست و چه‌وقت استفاده می‌شود؟
آموزش

diff در گیت چیست و چه‌وقت استفاده می‌شود؟

git diff دو نسخه از کدها را کنار هم می‌گذارد و خط‌به‌خط نشان می‌دهد چه چیزی عوض شده. یک نگاه به diff قبل از هر add و commit کافی است

تحریریه‌ی دینا کد۷ دقیقه
branch در گیت چیست و چه‌وقت بسازیمش؟
آموزش

branch در گیت چیست و چه‌وقت بسازیمش؟

branch یک اشاره‌گر متحرک به یکی از کامیت‌هاست، نه کپی پوشه‌ی پروژه. با git switch می‌سازی و جابه‌جا می‌شوی، با merge برمی‌گردانی و در پایان پاکش می‌کنی

تحریریه‌ی دینا کد۷ دقیقه
اینترفیس در TypeScript چیست و چه‌وقت به کار می‌آید؟
آموزش

اینترفیس در TypeScript چیست و چه‌وقت به کار می‌آید؟

اینترفیس قراردادِ شکلِ داده در TypeScript است؛ هر شیء‌ای که با آن جا می‌گیرد باید فیلدهای لازم را داشته باشد، وگرنه برنامه اصلاً کامپایل نمی‌شود

تحریریه‌ی دینا کد۴ دقیقه