قراره تو این دوره چی یاد بگیرم؟

  • آشنایی کامل با مفهوم و فلسفه سورس کنترل‌ها (Source controls) و دلایل مهندسی نرم افزاری برای استفاده از آن‌ها را یاد خواهید گرفت .
  • بررسی انواع و تاریخچه سورس کنترل‌ها (‌متمرکز، توزیع شده‌) آشنا خواهید شد.
  • تاریخچه گیت و مزیت‌های استفاده از آن را فرا خواهید گرفت.
  • بررسی تغییرات انجام شده روی ریپازیتوری را یاد خواهید گرفت.
  • مفاهیم اولیه در گیت، نظیر نصب و ساخت ریپازیتوری و ... را فرا خواهید گرفت.
  • پیکربندی و تنظیمات در گیت برای معرفی خودمان به گیت را فرا خواهید گرفت.
  • با فاز‌های اساسی گیت آشنا خواهید شد.
  • مبحث Working tree یا Working directory Indexing یا Staging Repository اضافه کردن بخشی از یک فایل به فاز staging را فرا می‌گیرید.
  • یاد خواهید گرفت چطور تاریخچه کار‌ها در گیت را بوسیله commit id بررسی کنید.
  • جابجایی بین کامیت‌های مختلف و سفر در بین کامیت‌های مختلف را فرا می‌گیرید.
  • برگرداندن تغییرات در گیت را یاد خواهید گرفت.
  • ایجاد شاخه‌ها (Branchs) در گیت، فلسفه آن و دلایل مهندسی نرم افزاری برای استفاده از شاخه‌ها را آموزش می‌بینید.
  • ادغام (Merge) کردن شاخه‌‌های (Branchs) مختلف با شاخه اصلی (Master) را فرا خواهید گرفت.
  • چطور فایل‌هایی را برای چشم پوشی (ignore) کردن به گیت معرفی می‌کنیم.
  • تگ زدن برای نسخه‌ها و وژن‌های مختلف پروژه را فرا می‌گیرید.
  • فرا می‌گیرید که چه کسی، در چه تاریخی، چه تغییری را در قسمتی از پروژه انجام داده است؟!
  • با سرویس‌هایی نظیر گیت هاب و گیت لب (GitLab) و Fork کردن پروژه‌ها آشنا می‌شوید.
  • مبحث GUI‌های مختلف برای استفاده از گیت در مقابل git bash را فرا می‌گیرید.
  • خطایابی و دیباگینگ بوسیله گیت را آموزش می‌بینید.

سرفصل های دوره

۲ فصل
۳۶ جلسه
۱۰ ساعت
۱

مقدمات

۴ قسمت
۰۱:۰۷:۰۱

قسمت اول - معرفی دوره و نقشه راه آموزش

رایگان
۱۹:۵۰

قسمت دوم - انواع مختلف سورس کنترل ها

رایگان
۳۱:۲۷

قسمت سوم - معرفی سورس کنترل گیت ( Git )

رایگان
۰۷:۱۲

قسمت چهارم - نصب گیت از سایت Git.scm

رایگان
۰۸:۳۱
۲

آموزش جامع git برای برنامه نویسی حرفه ای

۳۲ قسمت
۰۹:۰۲:۲۲

Git متداول‌ترین سیستم سورس کنترل است. Git نرم افزاری است که به صورت محلی اجرا شده و پرونده‌ها و تاریخچه آن‌ها را در رایانه شما ذخیره می‌کند. اگرچه بدون استفاده از گیت نیز می‌توان برنامه‌نویسی کرد ولی عدم استفاده از آن خطر از بین رفتن اطلاعات و بر باد رفتن تمامی زحمت‌های شما را بالا می‌برد. با استفاده از گیت همچنین می‌توانید از گیت هاب GitHub برای ذخیره یک کپی از پرونده‌ها و سابقه ویرایش آن‌ها استفاده کنید. وجود داشتن جایی که بتوانید تغییرات خود را بارگذاری کرده و تغییرات را از دیگران بارگیری کنید، همکاری با دیگر توسعه‌دهندگان را بسیار آسان می‌کند. Git می‌تواند تغییرات را به طور خودکار ادغام کند، به عنوان مثال دو نفر می‌توانند در قسمت‌های مختلف یک فایل کار کنند و بعدا بدون تغییر کار یکدیگر، آن تغییرات را ادغام کنند! بنابراین صرف نظر از اینکه شما کدی را به تنهایی‌ می‌نویسید یا در قالب یک تیم کار می‌کنید، آموزش جامع Git برای شما مفید خواهد بود.

سورس کنترل چیست؟

یکی از ویژگی‌های مهم مهندس نرم افزار حرفه‌ای دانش استفاده از سورس کنترل‌ها (SCM یا Source control management) و ورژن کنترل‌ها (VCS یا Version control system) است. زیرا که مهم‌ترین دارایی شما در فرآیند تولید نرم افزار، سورس کد نرم افزاری است که در حال توسعه آن هستید، به همین دلیل نگه‌داری از آن و مدیریت درست تغییرات در آن بسیار با اهمیت است. شما با شرکت در این دوره آموزش جامع Git یادخواهید گرفت که چگونه پروژه‌های برنامه‌نوسی خود را با سورس کنترل گیت مدیریت کرده و راندمان کاری خود را بالاتر ببرید.

  • اگر از ابتدای کار تولید نرم افزار از سورس کنترل استفاده نکنید ممکن است در طول توسعه کد، فاجعه رخ دهد!
  • بنابراین یادگیری یکی از سورس کنترل‌ها برای برنامه نویسان حرفه ای از واجبات است!

چرا باید از سورس کنترل استفاده کنیم؟

  • مهم‌ترین دارایی در فرآیند تولید نرم افزار سورس کد شما است.
  • جابجایی بین ورژن‌ها و نسخه‌های مختلف پروژه
  • باگ‌یابی نرم افزار و رفع باگ کد
  • چه کسی، در چه زمانی، چه تغییری را در کد ایجاد کرده است؟
  • مدیریت کد‌های اعضای تیم و ایجاد شاخه ( ‌‌Branch )‌های فرعی در پروژه و ادغام ( Merge ) این شاخه‌ها با کد اصلی بدون کانفلیکت و مشکل
  • و … .
سورس کنترل‌ها مشخص می‌کنند که: چه کسی،‌ چه تغییری، در چه زمانی روی کد ایجاد کرده است.
سورس کنترل‌ها مشخص می‌کنند که چه کسی،‌ چه تغییری، در چه زمانی روی کد ایجاد کرده است.

 

انواع سورس کنترل‌ها:

  1. سورس کنترل‌های Centralized (متمرکز یا مرکزی):

در این نوع از سورس کنترل‌ها، کد همه اعضای تیم روی یک کامپیوتر یا سرور قرار می‌گیرد. برای اشتراک‌گذاری و دریافت کد، هر برنامه نویس باید به آن کامپیوتر یا سرور متصل شود. از معروف‌ترین این سورس کنترل‌ها SVN و TFS را می‌توانیم نام ببریم.

سورس کنترل‌های مرکزی
سورس کنترل‌های مرکزی
  1. سورس کنترل‌های Distributed (غیر متمرکز یا پراکنده):

در این نوع از سورس کنترل‌ها، هر کدام از برنامه نویسان و اعضای تیم تمام سورس کد را روی PC خود دارند و حتی ممکن است تغییرات خود را با یکدیگر به اشتراک بگذارند و یا حتی به اشتراک نگذارند، این شکل از کار اعضای تیم را ملزم به داشتن دیسیپلین خاص برای اشتراک‌گذاری کد ها با یکدیگر می‌کنند.

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

مزیت‌های سورس کنترل‌های Distributed (پراکنده)

  • عدم نیاز به شبکه
  • سرعت بسیار بسیار زیادتر نسبت به مدل مرکزی
  • مشارکت در پروژه ها بدون نیاز به داشتن دسترسی به کامیت‌های برنامه نویسان دیگر
  • کاهش خطر از دست رفتن اطلاعات
  • تمیز‌تر بودن مخزن یا ریپازیتوری اصلی (Master)

سورس کنترل‌های توزیع شده مختلفی وجود دارند نظیر Git، BitKeeper، Darcs، Fossil، Mercurial و … که در این بین گیت، محبوب‌ترین بین آن‌هاست و در این دوره آموزش جامع Git قصد داریم به سطح مطلوبی از مهارت استفاده از این سورس کنترل قدرتمند برسیم.

 گیت (Git) سورس کنترل محبوب!

لینوس توروالدز خالق گیت
لینوس توروالدز

گیت در سال 2005 توسط خالق لینوکس، لینوس توروالدز به وجود آمده و توسعه آن آغاز شد. قبل از استفاده از این سورس کد، تیم لینوکس برای پروژه کرنل لینوکس از سورس کنترل BitKeeper (صاحب این سیستم لری مک ووی) برای نگه داری و مدیریت پروژه استفاده می‌کردند. اما از یک زمانی به بعد، صاحبان این سورس کد، تصمیم گرفتند که این سورس کد را فروشی کنند. همین عامل باعث شد لینوس توروالدز به فکر استفاده از سورس کنترل‌های دیگری برای توسعه پروژه بیفتد. او سرانجام در ماه آوریل ۲۰۰۵ کار روی گیت را آغاز کرد و یکسال بعد از آن (در ماه ژوئن)، گیت توانست مدیریت ریلیز نسخه بعدی لینوکس را بر عهده بگیرید.

 چرا گیت (Git)؟ دلایل محبوبیت آن چیست؟

  • سرعت فوق العاده
  • حجم کم مخزن (Repository)
  • پایداری
  • راحتی کار با شاخه‌ها (Branch)
  • کامیت با جزئیات بیشتر
  • تمیز بودن Working directory با فولدرهای .git
  • نمایش میزان پیشرفت عملیات
  • Feature rich بودن گیت (تنوع زیاد مجموعه دستورات و امکانات)

مطالب مهمی که در دوره آموزش Git فرا می‌گیرید؟!

  • آشنایی کامل با مفهوم و فلسفه سورس کنترل‌ها (Source controls) و دلایل مهندسی نرم افزاری برای استفاده از آن‌ها
  • بررسی انواع و تاریخچه سورس کنترل‌ها (‌متمرکز، توزیع شده‌)
  • تاریخچه گیت و مزیت‌های استفاده از آن را فرا خواهید گرفت.
  • مفاهیم اولیه در گیت، نظیر نصب و ساخت ریپازیتوری و … را فرا خواهید گرفت.
  • پیکربندی و تنظیمات در گیت برای معرفی خودمان به گیت را فرا خواهید گرفت.
  • با فاز‌های اساسی گیت آشنا خواهید شد.
    • Working tree یا Working directory
    • Indexing یا Staging
    • Repository
  • اضافه کردن بخشی از یک فایل به فاز staging را فرا می‌گیرید.
  • یاد خواهید گرفت چطور تاریخچه کار‌ها در گیت را بوسیله commit id بررسی کنید.
  • جابجایی بین کامیت‌های مختلف و سفر در بین کامیت‌های مختلف را فرا می‌گیرید.
  • بررسی تغییرات انجام شده روی ریپازیتوری را یاد خواهید گرفت.
  • برگرداندن تغییرات در گیت را یاد خواهید گرفت.
  • با ایجاد شاخه‌ها (Branchs) در گیت، فلسفه آن و دلایل مهندسی نرم افزاری برای استفاده از شاخه‌ها را آموزش می‌بینید.
  • ادغام (Merge) کردن شاخه‌‌های (Branchs) مختلف با شاخه اصلی (Master) را فرا خواهید گرفت.
  • چطور فایل‌هایی را برای چشم پوشی (ignore) کردن به گیت معرفی می‌کنیم.
  • تگ زدن برای نسخه‌ها و وژن‌های مختلف پروژه را فرا می‌گیرید.
  • فرا می‌گیرید که چه کسی، در چه تاریخی، چه تغییری را در قسمتی از پروژه انجام داده است؟!
  • خطایابی و دیباگینگ بوسیله گیت را آموزش می‌بینید.
  • با سرویس‌هایی نظیر گیت هاب و گیت لب (GitLab) و Fork کردن پروژه‌ها آشنا می‌شوید.
  • GUI‌های مختلف برای استفاده از گیت در مقابل git bash را فرا می‌گیرید.

آموزش جامع Git دانشجویار چه مزیتی دارد؟!

  • در کنار آموزش درسنامه‌ی آموزشی‌، بصورت منظم داکیومنت شده است و در گیتهاب مدرس به آن دسترسی خواهید داشت.
  • تمامی دستورات بصورت عملی با سناریو‌های دنیای واقعی بررسی شده و اصول مهندسی نرم افزار و best practice‌ ها نیز در این دوره مطرح خواهند شد.
  • مباحث دوره از سطح مقدماتی شروع شده و در نهایت با مشاهده این دوره (که در آن سعی شده مطالب به شکل کامل و حرفه‌ای ولی به شکل ساده و مختصر توضیح داده شود) به سطحی خواهید رسید که بتوانید بصورت تیمی با یک تیم نرم افزاری مشارکت کنید یا پروژه‌های فریلنسری خود را مدیریت کنید.

مخاطبین دوره

  • برنامه نویسان و توسعه دهندگان نرم افزار در هر حوزه‌ای ( موبایل، دسکتاپ، وب، امنیت، هوش مصنوعی و … ) که قصد فعالیت و توسعه پروژه‌ها بصورت تیمی را دارند.
  • فریلنسرهایی که قصد دارند از گیت برای مدیریت پروژه‌های شخصی خود استفاده کنند.
  • برنامه نویسانی که علاقه مند به مشارکت در پروژه های open source هستند.
  • افرادی که قصد مدیریت ورژن ها و نسخه هایی از فایل‌ها و مطالب خود را دارند نظیر:
    • مترجمین کتاب
    • نویسندگان کتاب و مولفین
    • افرادی که قصد نگارش تز و یا پایان نامه خود را دارند
    • و … .

پیش نیاز‌های آموزش Git

  • این دوره هیچ پیشنیازی ندارد، صرفا باید با مدرس این دوره همراه شوید.
  • آموزش جامع Git دانشجویار از مقدماتی‌ترین مباحث شروع شده و شما را تا سطحی که بتوانید با یک تیم در یک شرکت نرم افزاری بصورت تیمی روی پروژه‌ها کار کنید پیش خواهد برد.

مدرس دوره کیست؟!

مدرس دوره آموزش جامع گیت
مدرس دوره

مدرس آموزش جامع گیت محمد تقی زاده کارشناس مهندسی کامپیوتر – نرم افزار از دانشگاه گیلان است با سابقه چندین سال برنامه نویسی حرفه‌ای و تخصص در زبان برنامه نویسی پایتون و حوزه توسعه طراحی

سرفصل‌های آموزش جامع Git دانشجویار

  1. معرفی دوره آموزش جامع Git و نقشه راه آموزش
    • سورس کنترل چیست؟
    • دلیل استفاده از سورس کنترل‌ها در تولید نرم افزار حرفه‌ای
    • این دوره مناسب چه افرادی است؟
    • رویکرد و مزیت این دوره
    • معرفی مدرس
    • بررسی سیر و روند درسنامه و آموزش
  2.  انواع مختلف سورس کنترل‌ها
    • سورس کنترل‌های اولیه‌، فایل و فولدری (دنیای پیش از سورس کنترل‌ها)
    • بزرگترین چالش مدل فایل و فولدری؟
    • سورس کنترل‌ها محلی (SC Local)
    • چالش‌های سورس کنترل‌های محلی یا Local
    • سورس کنترل‌های متمرکز (Centralized SC)
    • سورس کنترل‌های مشهور متمرکز
    • چالش بزرگ سورس کنترل‌های متمرکز
    • سورس کنترل‌های توزیع شده (Distributed)
    • مزیت‌های سورس کنترل‌های توزیع شده
    • سورس کنترل‌های مشهور توزیع شده
    • معرفی سورس کنترل‌های مختلف در طول تاریخ
  3. معرفی سورس کنترل گیت (Git)
    • بررسی تاریخچه گیت
    • دلیل نامگذاری گیت (Git) چه بود؟
    • مزیت‌های استفاده از گیت
  4. نصب گیت از سایت Git-scm
    • نصب در سیستم عامل ویندوز 
    • نصب گیت در توزیع‌های مختلف لینوکس
    • نصب در سیستم عامل مک
  5. اولین قدم: معرفی خود به گیت
    • سطوح تنظیمات در گیت (Local, Global, System)
    • بررسی دستور git config
  6. گیت چگونه فایل‌های ما را Track می‌کند؟
    • بررسی سه فاز اصلی پروژه‌ها در گیت
      • Working tree / Working Dir
      • Index / Staging
      • Repository
    • معرفی اولیه دستورات init ، clone ، add و commit
  7. چگونه Repository ایجاد کنیم؟
    • ریپازیتوری (Repository) یا مخزن چیست؟
    • بررسی دستور git init
    • بررسی دستور git clone
  8. گیت چگونه کار می‌کند؟ (ساختار داخلی گیت)
    • فولدر .git حاوی چیست ؟ (بررسی دقیق پشت صحنه)
    • چشم انداز کلی و بررسی اصطلاحات مهم
    • ساختار داخلی گیت؟ (Git internal structure)
  9. بررسی عملی و دقیق‌تر فازهای گیت
    • بررسی دستور git add
    • بررسی دستور git commit 
    • بررسی دستور git status: برای بررسی وضعیت ریپازیتوری در گیت
    • بررسی دستور git commit –amend : چگونه یک کامیت را اصلاح کنیم؟!
  10. تاریخچه کارها در گیت بوسیله commit id
    • بررسی دستور git log 
    • بررسی دستور git show
    • بررسی دستور git reflog
  11. چگونه برای دستورهای گیت نام مستعار بسازیم؟! 
    • بررسی تنظیمات alias
  12. چگونه از راهنمای گیت استفاده کنیم ؟!
    • بررسی دستور git help
  13. اضافه کردن بخشی از یک فایل به فاز staging
    • بررسی دستور git add –patch
  14. بررسی تغییرات انجام شده روی ریپازیتوری 
    • بررسی دستور git diff
  15. سفر در زمان‌ !!! (جابجایی بین کامیت های مختلف)
    • نحوه ذخیره سازی کامیت ها در گیت چگونه است؟
      • ذخیره سازی به روش لیست پیوندی
      • ذخیره سازی به روش درخت
    • بررسی دستور git checkout 
    • بررسی دستور git restore : انتقالworking tree و staging به نقطه ای خاص
  16. بازنشانی و ریست کردن تغییرات
    • بررسی کامل دستور git reset
    • git reset –soft
    • git reset –mixed
    • git reset –hard
  17. بی اثر کردن تغییرات کامیت شده (چگونه Undo کنیم؟!)
    • بررسی کامل دستور git revert
  18. شاخه‌ها یا برنچ‌ها ( Branch ) در گیت
    • چرا باید از برنچ‌ها استفاده کنیم؟! (دلایل مهندسی نرم افزار)
    • بررسی دستور git branch
  19. ادغام یا Merge کردن برنچ‌ها ( Branch ) در گیت
    • بررسی دستور git merge
    • بررسی Best practice ها برای merge کردن در گیت
  20. Rebase کردن در مقابل Merge کردن!
    • مفهوم Reabse کردن یک شاخه چیست؟!
    • مثال هایی برای درک بهتر
    • مثال عملی 
    • بررسی دستور git rebase
    • مراحل rebase کردن یک شاخه
    • نکاتی مهم برای ریبیس کردن و جلوگیری و از فاجعه و رستگار شدن!
  21. رفع مشکل کانفلیکت یا conflict در merge کردن
    • بررسی مفهوم کانفلیکت (چه موقع رخ میدهد ؟!)
    • چگونه کانفلیکت را رفع کنیم؟!
  22. ذخیره کردن موقتی تغییرات در گیت (Git)
    • چه زمانی در پروژه این سناریو پیش می آید؟!
    • چه فایل‌هایی stash می‌شوند؟!
    • بازگردانی تغییرات stash شده
    • یادآوری از مفهوم پشته (Stack)
    • بررسی دستور git stash
  23. کپی کردن یک کامیت از یک برنچ دیگر روی برنچ درست
    • بررسی دستور git cherry-pick
  24. نادیده گرفتن فایل‌ها و دایرکتوری‌ها در Git
    • چه فایل‌هایی را باید نادیده بگیریم؟!
    • الگوهای فایل gitignore.
    • الگوهای wildcard و …
    • بررسی فایل .gitignore
  25. تگ زدن برای نسخه‌ها و وژن‌های مختلف پروژه
    • بررسی دستور git tag
  26. چه کسی، در چه تاریخی، چه تغییری را در قسمتی از پروژه انجام داده است؟!
    • بررسی دستور git blame
  27. خطایابی و دیباگینگ بوسیله گیت
    • بررسی دستور git bisect
  28. آموزش کار با گیت هاب (شروع کار در گیت هاب و معرفی بخش‌های مختلف)
    • معرفی سرویس گیت هاب
    • ساخت اکانت در گیت هاب
    • شخصی سازی اکانت گیت هاب
    • ایجاد و مدیریت پروژه (مخزن‌ها) در گیت هاب
    • حذف مخزن در گیت هاب
    • اضافه کردن تغییرات از داخل گیت هاب و از روی سیستم local
    • Code
    • Download Zip
    • Clone repository
    • Go to file
    • Add file
    • Actions
    • Projects
    • Wiki
    • Security
    • Insight
    • Settings
    • Star
    • Search در گیت هاب
    • و….
  29. کار با ریموت‌ها در گیت (Git remote)
    • بررسی کامل دستور git remote
    • چگونه ریموت جدید اضافه و حذف کنیم؟!
    • چگونه نام ریموت ها را تغییر دهیم؟!
    • دریافت و نمایش اطلاعات ریموت
    • دیپلوی مخزن (ریپازیتوری)ها در گیت هاب
      • بررسی کامل دستور push: اضافه کردن و push کردن برنچ‌ها، تگ‌ها در گیت هاب
    • واکشی تغییرات ایجاد شده روی مخرن (ریپازیتوری)
      • بررسی کامل دستور fetch :‌ واکشی تغییرات روی یک برنچ جدید
      • بررسی کامل دستور pull : واکشی و ادغام تغییرات (fetch and merge)
  30.  داکیومنت‌ها و فایل‌های Readme در گیت هاب
    • فایل readme.md برای ریپو‌ها چگونه ساخته می‌شوند؟!
  31. مشارکت در پروژه‌ها (چگونه پروژه‌ها را Fork کنیم؟!)
    • Fork کردن پروژه‌ها
  32. چگونه با صاحب پروژه گفتگو ایجاد کنیم (Issue در گیت هاب)
    • بررسی Issue‌ها در گیت هاب
  33.  چگونه صفحه‌ی اول گیت هاب خود را شخصی سازی کنیم؟!
    • ریپازیتوری به نام کاربری خود ایجاد کنید!
  34. چگونه از سرویس هاستینگ (میزبانی) رایگان گیت هاب استفاده کنیم؟!
    • بررسی سرویس Github pages
  35. GUI های مختلف برای استفاده از گیت در مقابل git bash
  36. مشارکت دانشجویان در دوره
    • معرفی صفحه گیتهاب دوره 
    • معرفی داکیومنتیشن دوره ، شامل تمام دستورات گیت بررسی شده
    • نحوه همکاری دانشجویان در دوره و توسعه داکیومنتیشن 

 

توضیحات بیشتر

مدرس

محمد تقی زاده

محمد تقی زاده مدرس

سابقه بیش از پنج سال برنامه نویسی حرفه ای با زبان های برنامه نویسی مختلف و البته علاقه مند به پایتون ، توسعه ی بک اند و هوش مصنوعی (کارشناس مهندسی نرم افزار)

حوزه های مطالعاتی :
- هوش مصنوعی
- معماری های نرم افزار ، معماری تمیز ، کد نویسی تمیز
- تدریس و علم فن بیان
- علم فلسفه و عرفان
- تاریخ ایران و ملل دیگه

علاقه مندی ها :
- بررسی کدهای برنامه نویس های دیگر
- پینگ پنگ
- فیلم های کلاسیک
- موسیقی
- گوش دادن به پادکست

برخی از حوزه های فعالیت :
- برنامه نویسی Python
- طراحی سایت (Backend) با پایتون
- برنامه نویسی Java و توسعه دسکتاپ اپلیکیشن ها
- برنامه نویسی PHP
- برنامه نویسی Android (تا حدودی :) )

یوتیوب چنل : youtube.com/c/MohammadTaghizadeh
گیتهاب : github.com/M-Taghizadeh
اینستاگرام : instagram.com/taghizadeh.me
رزومه لینکدین : linkedin.com/in/mtaghizadeh