GitHub برای کاربران ویندوز

در این مقاله میخواهیم به شما ورژن کنترل Git را معرفی کنیم. در این مقاله بحث می شود که چگونه GitHub را به همراه Visual Studio بکار گیریم.

GitHub برای کاربران ویندوز

اگر پروژه تان  فقط بر روی دیسک شما ذخیره شده باشد و دیسک دچار ایراد شود، آنگاه با مشکل بزرگی مواجه خواهید شد. حتی بک آپ هم نمی تواند شما را از این خطر حفظ کند.

برخی توسعه دهندگان فعالیت های زیادی که باعث شلوغی و آشفتگی میشود را در پروژه انجام می دهند و به سختی می توانند جایی که کار کرده اند و آنچه که انجام داده اند را به خاطر بیاورند. سیستم ورژن کنترل (به آن سورس کنترل هم می گویند) می تواند به شما در جلوگیری از این مشکلات کمک کند. و با استفاده از آن می توانید تغییرات، ویو ، تایید کردن و یا رد کردن ادیت ها را بازیابی کرده یا به حالت اول برگردانید. پس، کار گروهی بدون ورژن کنترل غیر ممکن است.

میخواهم به شما ورژن کنترلی که Git نام دارد را معرفی کنیم. در این مقاله بحث می شود که چگونه GitHub را به همراه Visual Studio بکار گیریم.

اکستنشن اصلی  برای Visual Studio ، GitHub Extension نام دارد. این اکستنشن با  Visual Studio 2015و نسخه های بالاتر سازگاری دارد. می توانید vsix  را از  GitHub page یا  Visual Studio gallery دانلود کنید.

می توانید این اکستنشن را در زمان نصب  Visual Studio، نصب کنید:

قبل از اینکه بحث را ادامه دهیم باید با چند اصطلاح آشنا شوید. اگر آنها را می شناسید می توانید از این بخش گذر کنید.

Push -ارسال تغییرات از ریپوزیتوری محلی  به ریپوزیتوری راه دور (مثلا ریپوزیتوری راه دور ما در GitHub واقع شده است).

Fetch -دریافت تغییرات از ریپوزیتوری راه دور به منظور مقایسه و امکان ادغام بعدی.

Merge -ادغام کردن است(مرج کردن است). اعمال تغییرات ساخته شده از ریپوزیتوری دیگر به ریپوزیتوری حاضر. گاهی اوقات مانند ترکیب دو ریپوزیتوری می ماند.

Pull  ترکیب fetching  و merging است. ابتدا لیست تغییرات از ریپوزیتوری راه دور بدست می آید، سپس تغییراتی به ریپوزیتوری حاضر اعمال می شود.

از این رو، اگر کسی در کنار شما تغییراتی در ریپوزیتوری GitHub  انجام دهد، آنگاه شما همواره می توانید دو عمل Fetch و سپس Merge را انجام دهید. از سوی دیگر، می توانید سریعا Pull را اجرا کنید. پس از آن ریپوزیتوری محلیتان، تغییرات انجام شده را نشان می دهد.

پس از نصب اکستنشن GitHub  برای Visual Studio، پنل Team Explorer به این صورت خواهد شد:

اگر پنل Team Explorer در دسترس نبود، آنگاه می توان آن را از طریق منو «View» نشان داد. با اتصال به GitHub  ( بر روی Connect  کلیک کرده..... و باوارد کردن پسوردلاگین کنید) قادریم ریپوزیتوری GitHub  را کلون کنیم (شبیه آن را بسازیم) یا ریپوزیتوری جدیدی ایجاد کنیم (با استفاده از دکمه های Clone  و Create ).

زمانی که کلونینگ (شبیه سازی) در حال انجام است، لیستی از ریپوزیتوری هایی که به آن ها دسترسی دارید نمایش داده می شوند:

زمانی که یک ریپوزیتوری ساخته می شود، می توانید نام آن، توضیحات و لایسنس را انتخاب و وارد نمایید که اجازه استفاده از کد را می دهد:

در این حالت Git  محتویات از پیش تعیین شده ای را که برای پروژه های مختلف است  را نمیپذیرد. و این فایل  .gitignore قرار است تا دایرکتوری ها و فایل های مورد نیازی که باید از ورژن کنترل حذف شوند را نشان دهد.

در حالتی که میخواهید ریپوزیتوری را به شدت مخفی کنید، می توانید آن را به شکل Private مارک نمایید. اینکار به اشتراک پولی نیاز دارد.

GitHub  برای دانش آموزان پیشنهاد ویژه ای دارد، Student Developer Pack ، که شامل تعداد نامحدودی ریپوزیتوری خصوصی است.

پس از ایجاد ریپوزیتوری ، باید پروژه را ایجاد کنید. شخصا ما خلاف این را ترجیح می دهیم. ابتدا پروژه را ایجاد نمایید و سپس آن را به Git اضافه نمایید. همچنین می توانید زمان ساخت پروژه، ریپوزیتوری Git را نیز ایجاد کنید. برای انجام اینکار تنها کافی است تیک چک باکس را بزنید.

اگر حین ساخت پروژه فراموش کردید تیک را بزنید می توانید پروژه را در VS باز نمایید، آنگاه آیتم «Add to Source Control» در فایل منو دردسترس خواهد بود.

پس از کلیک کردن بر آن پروژه به  Git version control system اضافه خواهد شد و پوشه لوکال .git در داخل پوشه پروژه ایجاد می شود. در Team Explorer به صورت زیر است:

با سوییچ کردن بین Team Explorer و Solution Explorer ، می توانیم تغییراتی را در پروژه ایجاد نماییم.  پس از ایجاد تغییرات، می توانید تعیین کنید که کدام یک از آنها نقطه بازیابی باشد. برای انجام اینکار به Team Explorer بازگردید و بر روی دکمه ای که به شکل خانه نشان داده شده است کلیک کنید. این دکمه شما را به منو اصلی می برد.

دکمه «Changes» به شما اجازه انجام تغییرات را می دهد (این دکمه برای تعیین کامنتی که تغییرات را توصیف می کند ضروری است). اما تمامی اکشن ها و اقدامات تنها در ریپوزیتوری محلی git  انجام می شوند.

زمان ایجاد یک پروژه، گاهی اوقات اصطلاح « Initial commit» ایجاد می شود، که در آن می توانید عبارتی مانند «این پروژه در سه روز ایجاد شد» را بنویسید. اگر به تازگی پروژه ای ایجاد کرده اید، هنوز تغییراتی در آن وجود ندارد. و اگر در آن تغییراتی وجود نداشته باشد، آنگاه کامیتی ایجاد نخواهد شد.خطی به همراه یک متن اضافه می کنیم، سپس در کامنت ها تلاش می کنیم آن را به صورت خلاصه اما به وضوح هرچه بیشتر توضیح دهیم:

می توانید تغییراتی که ایجاد کرده اید را بررسی کنید. به منظور انجام اینکار، بر روی فایل مورد نظر کلیک کنید تا منو محتوا (context menu) نشان داده شود و گزینه «Compare with Unmodified…» را انتخاب نمایید.

این مقایسه را بدست خواهیم آورد:

در این حالت تنها 2 خط کد اضافه شده است. با استفاده از همان منو محتوا(context menu) ، تمامی تغییراتی که انجام شده است می تواند از اخرین کامیت لغو شود که این ویژگی بسیار کاربردی است.

حال با کلیک بر روی دکمه خانه به منو اصلی بر می گردیم. به منظور ارسال تغییرات به GitHub، باید بر روی دکمه «Sync» کلیک کنید.

از آنجا که پروژه ما هنوز در GitHub منتشر(پابلیش) نشده است، می خواهیم اینکار را انجام دهیم:

به هر حال،  .git را نه تنها می توان در GitHub  منتشر کرد، بلکه می توان آن را در Visual Studio Team Services پابلیش کرد. اگر پروژه را زودتر پابلیش کنیم، آنگاه این کامیت ما در لیست outgoing fixes  قرار خواهد گرفت:

کلیک بر روی Push  تغییرات را به ریپوزیتوری قرار گرفته در سرور GitHub  ارسال خواهد کرد. پس از ایجاد چند تغییر آزمایشی از طریق مرورگر در ریپوزیتوری قرار گرفته در GitHub  (بله اینکار امکان پذیر است) می خواهیم به sync  برگردیم و بر روی Fetch کلیک می کنیم:

در اینجا شما با دبل کلیک کردن می توانید اطلاعاتی در مورد کامیت بدست بیاورید:

با کلیک کردن بر روی فایل می توانید تغییرات را ببینید:

در پنجره سنکرون سازی (synchronization)، می توانید تاریخچه را ببینید:

تاریخچه را می توان به شکلی ساده و با جزئیات دقیق مشاهده کرد:

حال تصور کنید در یک تیم فعالیت می کنید، و فردی دیگر تغییراتی را در ریپوزیتوری محلی ایجاد کرده و آن تغییرات را به GitHub ارسال نموده است. شما نیز تغییراتی در همان صفحه و در همان خط انجام داده اید، در این حالت وقتی با GitHub سنکرون می شوید، با مشکلی مواجه خواهید شد:

کلیک کردن روی Conflicts  پنجره زیر را نشان می دهد، این قسمتی است که می توانید بر روی فایل به منظور بازکردن منو برای دکمه Merge  کلیک کنید.

حال می توانیم تغییراتی که میخواهید در نسخه نهایی باقی بماند را انتخاب کنیم. در تصویر زیر، نسخه نهایی در انتها نشان داده شده است، در اینجا نیز می توانید کد را ویرایش کنید:

پس از ایجاد تغییرات، باید بر روی Accept Merge کلیک کنید (گوشه سمت چپ بالا)، سپس کامیت را ایجاد نمایید:

صفحه اکستنشن در GitHub.

Github Desktop and PowerShell environment for Git

Github Desktop یک ابزار کاملا مستقل است و ربطی به ویژوال استودیو ندارد

این ابزار برای کاربران مک و ویندوز در دسترس است و به همراه خط فرمان Git Shell می آید ، در واقع میتوان گفت این PowerShell با مجموعه ای از اسکریپت ها برای ادغام با Git است  و آن را PowerShell environment برای Git می نامند و به اختصار به آن posh-git نیز گویند

در صفحه GitHub پروژه posh-git، شما می توانید دستورالعمل مختصری در مورد چگونگی تنظیم خط فرمان برای Git به صورت دستی را پیدا کنید

در مورد رابط ابزار(utility interface) و نحوه کار با آن صحبت خواهیم کرد البته کار با آن خیلی سخت نیست و شما میتوانید خودتان نحوه کار با آن را یاد بگیرید

حال به سراغ خط فرمان برویم ، بر خلاف GUI ،خط فرمان به عنوان یک قائده ویژگی های بسیار بیشتری را فراهم میکند اما در این جا ما فقط به دستورات اصلی و پایه ای می پردازیم

برای این که مطمئن شوید که Git وجود دارد و  برای مشاهده تنظیمات پیکربندی ، می توانید دستور زیر را اجرا کنید

git config -list

به منظور کلون کردن ریپوزیتوری ، می توانید دستور زیر را اجرا کنید

git clone https://github.com/programmersommer/Barcode_Scanner_UWP.git BarcodeScanner

بعد از اجرای این دستور ، فولدر به همراه پروژه در همان دایرکتوری ظاهر میشود

علاوه بر http:// و https:// ، هر دو پروتکل های SSH و git:// پشتیبانی می شوند

اگر با استفاده از دستور cd به فولدر پروژه بروید ، خط فرمان تغییر پیدا میکند

استتوس بار(نوار وضعیت)  PowerShell ، متن posh~git را نمایش میدهد که بدین معنی است که شما درمحیط  PowerShell برای Git  هستید و شما میتوانید با اجرای دستور git status  متوجه شوید که آیا نیازی به همگام سازی (synchronize) ریپوزیتوری لوکال دارید یا خیر .

از محبوب ترین فرمان ها ، برای رابط اکستنشن ویژوال استودیو، که آن ها را از قبل در نظر گرفته ایم میتوان به git fetch  ، git merge ، git push اشاره کرد .

اگر به دایرکتوری بروید (ممکن است نام دایرکتوری PortableGit_xxx تا حدودی متفاوت باشد) :

C:\Users\{user_name}\AppData\Local\GitHub\PortableGit_284a859b0e6deba86edc624fef1e4db2aa8241a9\usr\bin

شما در آنجا بسیاری از فایل های اجرایی که فرمان ها را شبیه سازی میکنند را خواهید دید. همان طور که قبلا گفته شد  می توانید از git help استفاده کنید

برویم چند فرمان دیگر را امتحان کنیم :

برای مثال ، اگر یک فایل جدید در دایرکتوری پروژه ظاهر شود ، git status command به شکل زیر درخواهد آمد

پس شما باید با استفاده از فرمان  git add index.html فایل را اضافه کنید و با دستور git commit تغییرات را تایید کنید.این فرمان ویرایشگر متنی را که بطور پیش فرض نصب شده است را باز میکند . در ویرایشگر ، شما باید در خط اول متنی را که تغییرات را شرح می دهد را وارد کنید . اگر خط را با نماد # شروع کنید ، اون کامنت خواهد شد .کامنت ها را می توانید در خطوط زیر باقی بگذارید.

اگر هیچ متنی برای کامیت ننوشته اید،دیگر کامیت منتقل نخواهد شد . شما می توانید متن کامیت را مستقیما در خط فرمان  با استفاده از پارامتر –m مشخص کنید .برای مثال  git commit –m “File index.html added”

حال شما میتوانید از git push برای ارسال تغییرات به ریپوزیتوری Github استفاده کنید (البته اگر ریپوزیتوری متعلق به خودتان باشد ).

شما میتوانید با ایجاد یک fork/copy  از ریپوزیتوری -Fork ، از یک ریپوزیتوری دیگر برای کامپیوتر خودتان کپی داشته باشید

پس از انجام برخی تغییرات ، شما میتوانید با ایجاد یک pull request ، آن را به نویسنده ریپوزیتوری اصلی نشان دهید