Visual Studio and GitHub

Visual Studio and GitHubآیا تا به حال آرزو کرده اید که بتوانید به نسخه ای که قبلاً کار می کرد کد خود را بازگردانید؟ آیا می بینید که به صورت دستی کپی هایی از کد خود را در مکان های مختلف به عنوان پشتیبان ذخیره می کنید؟ خوب، پاسخ کنترل نسخه(version control) است.Git پرکاربردترین سیستم کنترل نسخه مدرن است. با Git می‌توانید تغییرات کدی را که در طول زمان ایجاد می‌کنید ردیابی کنید و می‌توانید به نسخه‌های خاصی برگردید. بنابراین چه یک توسعه‌دهنده حرفه‌ای باشید و چه در حال یادگیری نحوه کدنویسی، تجربه Git Visual Studio می‌تواند برای شما بسیار مفید باشد.ویژوال استودیو یک محیط توسعه یکپارچه (IDE) است که بسیاری از توسعه دهندگان نرم افزار در سراسر جهان از آن استفاده می کنند. GitHub یک پلت فرم میزبانی کد(پشتیبان گیری از کد) برای کنترل نسخه(version control) و همکاری است. این امکان را به شما و دیگران می دهد که از هر کجا روی پروژه ها با هم کار کنید. ویژوال استودیو یک تجربه یکپارچه با GitHub را ارائه می دهد، بنابراین مدیریت پروژه ها از داخل ویرایشگر کد برای شما آسان تر است.این یک تجربه ساده و تمیز از Git است!فرض کنید با استفاده از Visual Studio به یک تیم توسعه نرم افزار جدید ملحق شده اید که بروی یک پروژه Asp.Net Core کار می کنند. برخی از اعضای تیم برای استفاده از Git از خط فرمان(command line) راحت هستند. دیگران به کار در خط فرمان اعتماد کمتری دارند و تجربه بصری تر و یکپارچه تر را ترجیح می دهند.این ابزار مایکروسافت ممکن است به توسعه دهندگان کمک کند تا بدون نگرانی و بدون اشتباه از داخل ویژوال استودیو کار کنند.در این ماژول، از ادغام GitHub در ویژوال استودیو برای ورود به GitHub، ایجاد یک مخزن(repository) جدید و commits استفاده خواهید کرد. و همه این کارها را بدون خروج از IDE انجام خواهید داد.یک مخزن(repository) معمولاً برای سازماندهی یک پروژه واحد استفاده می شود. مخازن می‌توانند شامل پوشه‌ها و فایل‌ها و ... باشند(هر چیزی که پروژه شما نیاز دارد.) که با یک آدرس URL منحصربه‌فرد، قابل دسترسی است. دستور commit یک snapshot از تغییرات مرحله‌ای پروژه می‌گیرد. Committed snapshots را می توان به عنوان نسخه های "ایمن" یک پروژه در نظر گرفت - Git هرگز آنها را تغییر نمی دهد مگر اینکه شما صریحاً از آن درخواست کنید. به عبارتی دیگر به هر تغییر ایجاد شده یک commit میگویند.هر Commit جزئیات مربوط به تغییرات ایجاد شده روی پروژه را اعلام می‌کند. این commit ها به افراد عضو یک پروژه کمک می‌کنند تا دریابند چرا روی هر پروژه تغییر ایجاد شده است و این تغییر مربوط به چه زمانی است.هر زمان که یه Commit انجام میدید (یا وضعیت اون لحظه از پروژه اتون رو ذخیره می کنید)، git یه تصویر از وضعیت تمام فایل های پروژه در اون لحظه میگیره و لینک دسترسی به این تصویر رو ذخیره میکنه. یه این تصویر Snapshot می گوییم .هر snapshot رو میشه معادل یه commit در git در نظر گرفت.برای بهبود عملکرد، git همه فایل ها رو دوباره ذخیره نمیکند، و اگه فایل تغییری نکرده باشد فقط یه لینک به آخرین وضعیت ذخیره شده آن فایل را نگهداری میکند.قبل از انجام هر کاری با GitHub، باید مطمئن شوید که احراز هویت شده اید. GitHub باید بداند شما چه کسی هستید تا بتواند به شما امکان دسترسی به مخازن(repository) مربوطه را بدهد.یکی از مزایای استفاده از ویژوال استودیو برای کار با GitHub این است که IDE تمام تنظیمات احراز هویت را برای شما انجام می دهد.اگر از قبل یک حساب GitHub ندارید،یک اکانت در github.com ایجاد نمائید.کلون(Clone) یک Git repository در Visual Studioویژوال استودیو Clone کردن یک repository را مستقیماً از IDE آسان می کند. می‌توانید بصورت remote با ارائه‌دهنده خدمات Git مورد نظرتان، مانند GitHub یا Azure DevOps کار کنید.تعریف : Git Clone یا Cloning در Git چیست؟ به معنای ایجاد یک کپی یکسان از یک repository از راه دور Git برای ماشین محلی است(local machine/همان سیستم شما!).وقتی یک repository را clone می کنیم، همه فایل ها در local machine دانلود می شوند اما مخزن git راه دور(GitHub) بدون تغییر باقی می ماند. ایجاد تغییرات به مخزن محلی شما (مخزن کلون شده) به هیچ وجه بر مخزن راه دوری که کلون کرده اید تأثیر نمی گذارد. این تغییرات ایجاد شده در ماشین محلی را می توان هر زمان که کاربر بخواهد با مخزن راه دور همگام سازی(sync) کرد.چرا یک Repository را Clone می کنیم؟بمنظور مشارکت در پروژه‌های سازمانی : یک سیستم متمرکز، برای سازمان‌هایی لازم است که در آن چند نفر بر روی یک codebase کار می‌کنند. clone به ما کمک می کند تا به این موضوع برسیم. با clone ، افراد می‌توانند کد پروژه را ویرایش کنند تا مشکلی را برطرف کنند یا تغییراتی مانند یک ویژگی اضافی یا توسعه‌یافته را ارائه دهند. این قطعا به تولید نرم افزار بهتر در زمان کمتر با همکاری بیشتر کمک می کند.در توسعه نرم افزار، codebase مجموعه ای از source code است که برای ساختن یک سیستم نرم افزاری، برنامه کاربردی یا جزء نرم افزاری خاص استفاده می شود.یک codebase معمولاً در یک سیستم کنترل نسخه(مانند GitHub) ذخیره می شود. اما Cloning در Git چگونه کار می کند؟مخزنی که برای همکاری به صورت آنلاین آپلود می شود، مخزن Upstream یا مخزن مرکزی(centeral repository) نامیده می شود.یک مخزن مرکزی نشان می دهد که تمام تغییرات از همه مشارکت کنندگان(توسعه دهندگان/افراد همکار در پروژه) فقط به این مخزن منتقل شده است. بنابراین، این به روزترین نمونه مخزن خود است. گاهی اوقات این مخزن اصلی(original repository) نیز نامیده می شود.تصویری که در بالا ارائه شده است، مفهوم Cloning را کاملاً روشن می‌کند.با توجه به تصویر بالا، فرآیند Cloning در این مراحل انجام می شود:Clone کردن یک repository : کاربر از مخزن upstream در GitHub شروع می کند. این فرآیند از Cloning شروع می شود، زمانی که آنها مخزن را در ماشین محلی خود clone می کنند. حالا آنها کپی دقیق فایل های پروژه را روی سیستم خود دارند تا تغییرات را اعمال کنند.تغییرات مورد نظر را ایجاد کنید: پس از Cloning ، مشارکت کنندگان(توسعه دهندگان) سهم خود را به مخزن ارائه می کنند. push کردن تغییرات: هنگامی که تغییرات انجام شد می توان تغییرات را به مخزن بالادستی منتقل کرد.توجه: مالک(Owner) مخزن می‌تواند تغییرات مستقیم را در مخزن مرکزی مجاز/غیر مجاز کند، اعلان‌های مختلفی را تنظیم کند (اعلان برای هر تغییری که به مخزن مرکزی، push می‌شود) کلون(clone) کردن یک مخزن Git در Visual Studio 2022 ویژوال استودیو را باز کنیداز منوی Git گزینه Clone Repository را انتخاب کنید.Clone Repository3. در پنجره Clone a Repository، در بخش Enter a Git Repository URL، آدرس repository مورد نظر خود را در کادر Repository location اضافه کنید.بعد، در بخش Path، می‌توانید مسیر پیش‌فرض فایل‌های خود را انتخاب کنیدسپس در قسمت Browse a repository، گزینه GitHub را انتخاب نمائید.4. در پنجره Open from GitHub، می توانید اطلاعات حساب GitHub خود را تأیید کنید یا می توانید آن را اضافه کنید. برای انجام این کار، Sign in را از منوی کشویی انتخاب کنید.اگر برای اولین بار از ویژوال استودیو وارد GitHub می‌شوید، یک اخطار Authorize Visual Studio ظاهر می‌شود. گزینه های مورد نظر خود را انتخاب کنید و سپس Authorize github را انتخاب کنید.در مرحله بعد، یک پنجره تأیید مجوز را خواهید دید. رمز عبور خود را وارد کرده و سپس Confirm password را انتخاب کنید.پس از اینکه حساب GitHub خود را با ویژوال استودیو پیوند دادید، یک اعلان موفقیت ظاهر می شود.5.پس از ورود به سیستم، ویژوال استودیو به Clone a Repository برمی‌گردد، جایی که پنجره Open from GitHub تمام مخازنی را که به آنها دسترسی دارید فهرست می‌کند. موردی را که می خواهید انتخاب کنید و سپس Clone را انتخاب کنید.اگر لیستی از مخازن ظاهر نشد، مکان مخزن خود(url) را وارد کنید و سپس Clone را انتخاب کنید.6.بعد، ویژوال استودیو لیستی از solution(ها) را در مخزن ارائه می دهد. solution ی را که می خواهید بارگیری کنید یا نمای پوشه را در Solution Explorer ، انتخاب کنید.از منوی Git می‌توانید نمای پیش‌فرض Folder View را به Solution View تغییر دهید. برای انجام این کار. Settings > Source Control > Git Global Settings > Automatically load the solution when opening a Git repository .بازکردن مخزن محلی موجود پس از اینکه یک مخزن را clone کردید یا یک مخزن ایجاد کردید، ویژوال استودیو مخزن Git را شناسایی کرده و آن را به لیست مخازن محلی شما در منوی Git > Local Repositories اضافه می کند. از آنجا، می توانید به سرعت به مخازن Git خود دسترسی داشته باشید و بین آنها جابجا شوید.ایجاد GitHub Repositoryیک مخزن از راه دور در سرور GitHub است. این کاملا واضح است زیرا GitHub یک سرویس میزبانی وب برای مخزن Git است. ایجاد مخزن GitHub مزایای زیادی به ما می دهد که در ابتدای مطلب به آن اشاره شد.یک مخزن شبیه یک پوشه است و یک مخزن GitHub به پوشه ای تبدیل می شود که به صورت آنلاین در فضای ابری برای دانلود، دسترسی و مشارکت افراد/تیم توسعه در دسترس است. این پوشه حاوی فایل های کد پروژه است که اکنون می تواند توسط اشخاص دیگر استفاده شود.به عنوان مثال، شما در حال کار بر روی پروژه ای هستید و شخصی می خواهد در پروژه شما مشارکت کند، مخزن GitHub خود را با او به اشتراک می گذارید. یا روی پروژه شخص دیگری کار می کنید و شخصی به همان پروژه علاقه مند می شود، مخازن بین افراد علاقه مند به اشتراک گذاشته می شود.انتشار دادن(pushing) تغییرات بسیار آسان می شود زیرا توسعه دهنده فقط باید تغییرات را push کند و نه فایل کامل را. یک مخزن GitHub نقش حیاتی در میان توسعه دهندگان برای توسعه چیزی آسان و در دسترس قرار دادن آن در سراسر جهان ایفا می کند. ممکن است به نظر برسد که ایجاد چیزی به این مهمی بسیار سخت است. اما، برعکس، ایجاد یک مخزن جدید و پیوند دادن آن به مخزن محلی خود بسیار آسان است. قبل از ایجاد مخزن، بیایید انواع مخازن موجود در GitHub را ببینیم.انواع repository در GitHubGitHub دو نوع repository را در اختیار کاربر قرار می دهد Public repositoryPrivate Repositoryمخزن عمومی در GitHub چیست؟یک مخزن عمومی در GitHub مخزنی است که برای همه عمومی است. یک مخزن عمومی GitHub برای همه قابل مشاهده خواهد بود. هر کسی می تواند آن را در GitHub با جستجو، ببیند. عمومی کردن مخزن خطر ارائه کد شما به همه را خواهد داشت. از آنجایی که هر کسی می تواند مخزن را ببیند، هر کسی می تواند کد را دانلود کرده و در پروژه خود استفاده کند.مخزن خصوصی در GitHub چیست؟یک مخزن خصوصی در GitHub مخزنی است که فقط برای تعداد کمی از افراد مجاز قابل مشاهده است. مخازن خصوصی قابل مشاهده نیستند مگر اینکه از شما برای مشارکت دعوت شود. مخازن خصوصی معمولاً توسط سازمان ها و تیم هایی استفاده می شود که هیچ گونه دخالت خارجی نمی خواهند و همچنان می خواهند کد را در تیم توسعه دهند. این در مواردی که اعضای تیم از نظر جغرافیایی در یک مکان واحد قرار ندارند بسیار مفید است. یک کاربر اختیار کامل دارد که تصمیم بگیرد چه کسی می تواند به تیم ملحق شود و افراد دیگر را رد کند. یک کاربر همچنین می تواند هر زمان که بخواهد نمایان بودن مخزن خود را برای عموم تغییر دهد. ایجاد یک مخزن(repository) جدید برروی GitHub با استفاده از Visual Studio1. ویژوال استودیو را باز کنید و سپس Create a new project را انتخاب کنید.اگر قبلاً پروژه ای در ویژوال استودیو برای افزودن به مخزن ندارید، می توانید به سرعت یک C# console جدید ایجاد کنید و نام آن را MyNewApp بگذارید. ویژوال استودیو برنامه جدید شما را با کد "Hello, World!" پیش فرض پر می کند. 2.از منوی Git گزینه Create Git Repository را انتخاب کنید.3. در پنجره Create a Git Repository، در زیر بخش Push to a new remote گزینه GitHub را انتخاب کنید4. در پنجره Create a new repository GitHub بخش Create a Git repository، نام مخزن (Repository name) مورد نظر برای ایجاد را وارد کنید.اگر هنوز به حساب GitHub خود وارد نشده اید، می توانید از این صفحه(تصویر فوق) نیز این کار را انجام دهید.5.پس از ورود به سیستم و وارد کردن اطلاعات مخزن، دکمه Create and Push را انتخاب کنید تا مخزن خود را ایجاد کنید و برنامه خود را اضافه کنید.و اما Branch در Git چیست؟و اما Branch در گیت شبیه شاخه یک درخت است. یک شاخه درخت به قسمت مرکزی درخت به نام تنه متصل می شود. در حالی که شاخه ها می توانند گسترش پیدا کنند و بیفتند، تنه درخت فشرده می ماند و تنها بخشی است که می توانیم بگوییم درخت زنده و ایستاده است. به طور مشابه، Branch در Git راهی برای ادامه توسعه و کدنویسی یک ویژگی یا اصلاح جدید در نرم افزار است و هنوز بر بخش اصلی پروژه تأثیر نمی گذارد. همچنین می توان گفت که Branch ها خط توسعه دیگری را در پروژه ایجاد می کنند. شاخه اصلی یا پیش فرض در Git master branch (شبیه به تنه درخت) است. به محض ایجاد مخزن، master branch (یا شاخه اصلی/پیش فرض) نیز ایجاد می شود.بیایید آن را به شکلی دیگر بررسی کنیم.فرض کنید شما اطلاعی از وجود Branch ندارید و تا این لحظه روی پروژه ای کار می کردید که مشتری راضی بود.اکنون، شما تصمیم می گیرید یک ویژگی را توسعه دهید و شروع به توسعه آن بر روی همان کد ( که با commit های آبی رنگ مشخص می شود) کنید.شما این را به مشتری خود نشان می دهید.در این بین، تصمیم می گیرید ویژگی دیگری (مثلا xyz) توسعه دهید و منتظر تایید مشتری باشید (xyz با commit های قهوه ای نشان داده می شود).مشتری ویژگی آبی را تایید نمی کند ( commit آبی ) و درخواست حذف آن را می کند (که با رنگ خاکستری نشان داده می شود).اکنون، از آنجایی که شما از روش توسعه خطی پیروی می‌کردید، باید کد کامل را حذف کنید و فرآیند پیچیده تنظیمات و حذف اشکالات را به طور مکرر انجام دهید تا به موارد زیر برسید:توسعه پروژه از طریق Branchاجازه دهید همان سناریو را با استفاده از تکنیک Branch Git ببینیم.تا این لحظه روی پروژه ای کار می کردید که مشتری راضی بود.پس از آن تصمیم می گیرید یک ویژگی توسعه دهید و یک شاخه جدید به نام feature برای همین منظور ایجاد کنید و شروع به کار روی آن کنید.شما این را به مشتری خود نشان می دهید.در این بین، تصمیم می گیرید ویژگی دیگری را توسعه دهید و منتظر تایید مشتری باشید.مشتری این ویژگی را تایید نمی کند و درخواست حذف آن را می کند.اکنون، از آنجایی که استراتژی Branch را دنبال می‌کردید، باید Branch را حذف کنید و تمام کدهای باقی‌مانده به همان شکلی که هستند باقی می‌مانند. ویژگی جدید را می توان به راحتی به master branch اضافه کرد تا به موارد زیر دست یابد.متوجه شدید که branch ها به شما این آزادی را می دهند که به طور مستقل روی ماژول های مختلف کار کنید (البته نه لزوما) و پس از اتمام توسعه، ماژول ها را ادغام(merge) کنید. ممکن است فرآیند دست و پا گیر به نظر برسد، اما branch های git سریع ایجاد و از بین می روند. فقط یک دستور ساده می تواند این فرآیندها را انجام دهد و با توجه به اندازه ای که می گیرند بسیار مفید هستند. branch های Git به تیمی که در نقاط مختلف جهان هستند کمک می‌کنند تا به‌طور مستقل روی ویژگی‌های مستقل کار کنند که در نهایت با هم ترکیب می‌شوند تا یک پروژه عالی تولید کنند. علاوه بر این، branch ها بسیار انعطاف پذیر هستند.تصویر واقعی از یک Branch در Gitبرای درک مفهوم Git، بیایید یک صحنه واقعی را در نظر بگیریم و درک کنیم که وقتی از Git استفاده می کنیم، کار روی یک پروژه چقدر راحت است.بیایید فرض کنیم که شما به همراه دوست خود روی یک پروژه کار می کنید. شما هر دو بروی دو ویژگی متفاوت کار می کنید و از این رو روی دو branch متفاوت کار می کنید. ما می توانیم آن را در تصویر زیر مشاهده کنیم.هنگامی که هر دوی شما کار روی ویژگی های خاص خود را تمام کردید، این branch های ویژگی در شاخه اصلی ادغام شدند و در کد پایدار اصلی(main stable code) پذیرفته شدند.بعداً، شما شروع به کار روی یک branch متفاوت و یک ویژگی متمایز می کنید. اما، بنا به دلایلی، این بار این ویژگی مورد نیاز نیست. بنابراین main master branch شامل آن نمی شود. شاخه زیر به رنگ خاکستری نشان می دهد که باید بدون ادغام شدن حذف شود.مدتی بعد، یک اصلاح فوری درخواست می شود که باید سریعا به آن رسیدگی شود. تیم آن را برطرف می کند و آن را در Master ادغام می کند.اگر با روش توسعه خطی کار می‌کردید، فرآیند بسیار پیچیده‌ای می بود !!! ایجاد Git Branch در Visual Studioاین اولین مرحله در فرآیند است، شما می توانید از یک branch پیش فرض شروع کنید یا یک branch جدید برای توسعه ایجاد کنید.ایجاد یک branch جدید در ویژوال استودیو آسان است. تنها کاری که باید انجام دهید این است که آن را از یک branch موجود پایه گذاری کنید.1.برای شروع، مطمئن شوید که یک repository از قبل ایجاد شده یا clone شده را باز کرده اید.از منوی Git> New Branch را انتخاب کنید.2.در dialog box ایجاد branch جدید، نام branch را وارد کنید.3.در بخش Based on ، از لیست کشویی انتخاب کنید که آیا می خواهید branch جدید خود را از یک local branch موجود یا یک remote branch پایه گذاری کنید.نکته : branch ها می توانند از طریق مخزن راه دور GitHub به طور مستقیم یا از طریق Git در سیستم محلی ما ایجاد شوند. اگرچه در سناریوهای دنیای واقعی، ایجاد branch ها به طور مستقیم از طریق GitHub انتخاب اصلی برای ایجاد branch ها نیست. مهمترین انتخاب توسعه دهندگان ایجاد branch در Git و ماشین محلی و push کردن این تغییرات به مخزن راه دور در GitHub است.4. چک باکس Checkout که به طور پیش‌فرض فعال است، به‌طور خودکار به branchی که تازه ایجاد شده است تغییر می‌کند. اگر می خواهید در branch فعلی بمانید، این گزینه را تغییر دهید.ایجاد Git commit در Visual Studio در تاریخ تنها نقاطی از آن ثبت و ضبط می شود و در Git نیز همینطور است. در Git تاریخچه، از Commit ها تشکیل شده که هر Commit مانند یک گره یا نقطه می ماند که تغییرات در فایلها، کاربر تغییر دهنده و پیامی از سوی تغییر دهنده به همراه دیگر meta داده ها را نگه می دارد. با استفاده از این اطلاعات ثبت شده در هر Commit برنامه Git به شما اجازه می دهد که تغییرات را بازگردانی کنید و به آن حالتی که Commit در آن موقع ثبت شده است باز گردید.خوب Git تغییرات فایل موجود در repository شما را در حین کار ردیابی می کند و فایل های موجود در repository شما را به سه دسته تقسیم می کند.فایل‌های اصلاح نشده(Unmodified files): این فایل‌ها از زمان آخرین commit شما تغییری نکرده‌اند.فایل‌های اصلاح‌شده(Modified files): این فایل‌ها از آخرین commit شما تغییراتی داشته‌اند، اما هنوز آنها را برای commit بعدی مرحله‌بندی نکرده‌اید.فایل های مرحله بندی شده(Staged files): این فایل ها دارای تغییراتی هستند که به commit بعدی اضافه می شوند.همانطور که کار خود را انجام می دهید، ویژوال استودیو تغییرات فایل در پروژه شما را در بخش Changes در پنجره Git Changes پیگیری می کند.برای مرحله بندی تغییرات در زمانی که آماده هستید، دکمه + (plus) را روی هر فایلی که می خواهید مرحله بندی کنید انتخاب کنید یا روی یک فایل کلیک راست کرده و سپس Stage را انتخاب کنید. همچنین با استفاده از دکمه stage all + (plus) در بالای قسمت Changes می توانید تمام فایل های اصلاح شده خود را با یک کلیک مرحله بندی کنید.هنگامی که تغییری را انجام می دهید، ویژوال استودیو یک بخش Staged Changes ایجاد می کند. فقط تغییرات در قسمت Staged Changes به commit بعدی اضافه می شود که با انتخاب Commit Staged می توانید این کار را انجام دهید. همچنین می توان با کلیک کردن روی دکمه – (منهای) تغییرات را حذف کرد. همچنین می توانید با پرش از قسمت مرحله بندی، فایل های اصلاح شده خود را مرحله بندی نکنید. در این حالت، ویژوال استودیو به شما این امکان را می دهد که تغییرات خود را مستقیماً بدون نیاز به مرحله بندی انجام دهید. فقط پیام commit خود را وارد کنید و سپس Commit All را انتخاب کنید. ویژوال استودیو همچنین با استفاده از میانبرهای Commit All و Push and Commit All و Sync، commit و همگام سازی را با یک کلیک آسان می کند. وقتی روی هر فایلی در بخش تغییرات و تغییرات مرحله‌ای دوبار کلیک می‌کنید، می‌توانید یک مقایسه خط به خط با نسخه اصلاح نشده فایل را ببینید.هنگامی که روی یک Commit دوبار کلیک می کنید، ویژوال استودیو جزئیات آن را در یک پنجره ابزار جداگانه باز می کند. از اینجا می توانید commit را برگردانید، commit را بازنشانی کنید، پیام commit را اصلاح کنید یا یک برچسب روی commit ایجاد کنید. هنگامی که روی یک فایل تغییر یافته در commit کلیک می کنید، ویژوال استودیو نمای Diff کنار هم از commit و والد آن را باز می کند.انتشار Push از Visual Studio به یک remote branchحال وقت انتشار تغییرات در فضای ابری GitHub است. معمولاً به عنوان origin/main یا origin/master شناخته می‌شود.مطمئن شوید که فایلی برای کار روی آن باز دارید که در مخزن قبلی ایجاد شده یا clone شده است.تغییری در فایل ایجاد کنید، آن را ذخیره کنید، تب Git Changes را انتخاب کنید و سپس تغییر را انجام دهید.در پنجره Git Changes به متنی که شامل تعداد commit های ورودی و خروجی است توجه کنید. در مثال زیر، "outgoing" تعداد commit هایی را نشان می دهد که هنوز به remote منتشر(push) نشده اند، در حالی که "incoming" نشان دهنده commit هایی است که fetch شده اند اما هنوز آنچه در remote است برروی مخرن محلی ما برورزسانی و مطابقت داده نشده اند به عبارتی pull نشده اند.برای push کردن به remote، دکمه Push را از منوی Git انتخاب کنید.استفاده از git fetch، pull، sync برای کنترل نسخه در ویژوال استودیو ویژوال استودیو به شما کمک می کند تا local branch خود را از طریق عملیات دانلود (fetch و pull) و آپلود (push) با remote branch خود هماهنگ کنید.با استفاده از منوی Git در Visual Studio 2022 می توانید fetch, pullو sync(همگام‌سازی) کنید.بیایید ببینیم هر کدام از آنها چه کاربردی دارند.From left to right, the button controls include Fetch, Pull, Push, and Sync.tch, pull,push و syncمی توانید از دکمه "..." در تصویر بالا برای تنظیم دقیق عملیات Fetch، Pull، Push و Sync خود استفاده کنید.دستور Git Fetchدستور Git fetch به کاربر کمک می کند تا commit ها، refs و فایل ها را از مخزن راه دور به local repository دانلود کند. به عبارت دیگر، اجرای این دستور به شما کمک می کند تا تمام به روز رسانی های موجود در remote repository را مشاهده کنید. ممکن است فکر کنید، اگر نخواهید تغییرات را حفظ کنید چه؟ خوب، این دستور به هیچ وجه به مخزن کاری شما آسیب نمی رساند.تعریف : ref یک روش غیر مستقیم برای ارجاع به یک commit است. می توانید آن را به عنوان یک نام مستعار کاربر پسند برای یک هش commit در نظر بگیرید. این مکانیسم داخلی Git برای نمایش branch ها و تگ ها است. Ref ها به عنوان فایل های متنی معمولی در دایرکتوری git/refs ذخیره می شوندخوب Git fetch راهی عالی برای ایستادن در مکانی است که از آنجا می‌توانید تغییرات را ببینید و تصمیم بگیرید که آیا می‌خواهید آنها را حفظ کنید یا آنها را دور بیندازید. fetch بررسی می کند که آیا commit از راه دور وجود دارد که باید در تغییرات محلی خود بگنجانید. اگر موردی را مشاهده کردید، ابتدا pull کنید تا از هرگونه تضاد ادغام بالادستی جلوگیری کنید.هنگامی که یک branch را fetchمی کنید، پنجره Git Changes دارای یک نشانگر در زیر پنجره بازشوی branch است که تعداد commit های pull نشده از branch راه دور را نشان می دهد. این نشانگر تعداد commit های محلی push نشده را نیز به شما نشان می دهد.همچنین به عنوان لینکی عمل می کند تا شما را به تاریخچه commit آن شاخه در پنجره Git Repository هدایت کند. اکنون در بالای تاریخ جزئیات این commit های ورودی و خروجی نمایش داده می شود. از اینجا، شما همچنین می توانید تصمیم بگیرید که commit ها را pull یا push کنید.دستور Pullدستور git pull برای fetch و دانلود محتوا از یک مخزن راه دور و به روز رسانی فوری مخزن محلی برای مطابقت با آن محتوا استفاده می شود. پس از دانلود محتوا، git pull وارد یک گردش کار ادغام می شود. یک commit جدید ایجاد می شود و HEAD به روز می شود تا به commit جدید اشاره کند.همیشه قبل از push کردن pull کنید. هنگامی که اول pull می کنید ، می توانید از تضادهای ادغام بالادستی جلوگیری کنید.دستور Pushهنگامی که commit ها را ایجاد می کنید، ذاتاً local snapshots کد خود را ذخیره کرده اید. از Push برای انتشار دادن commit ها به GitHub استفاده کنید، جایی که می توانید آنها را به عنوان پشتیبان ذخیره کنید یا کد خود را با دیگران به اشتراک بگذارید.اما، همانطور که قبلا ذکر شد، همیشه قبل از push کردن ، pull کنید. به عنوان یک محافظ ایمن، ویژوال استودیو به شما اجازه نمی دهد که اگر local branch شما پشت remote branch باشد، commit ها را انجام دهید. اگر بخواهید push کنید از شما خواهد خواست قبل از آن، pull کنید.دستور Sync (همگام سازی)از این دستور برای pull و push همزمان استفاده کنید.آیا تا این بخش از مطالب از خود پرسیدید که تفاوت git و GitHub چیست ؟آیا آنها به یک معنا هستند؟خیر، git یک ابزار کنترل نسخه توزیع شده است که می تواند تاریخچه source code پروژه در حال توسعه را مدیریت کند، در حالی که GitHub یک پلت فرم مبتنی بر cloud است که حول ابزار Git ساخته شده است. Git ابزاری است که توسعه‌دهنده به صورت local بروی سیستم خود نصب می‌کند، در حالی که GitHub یک سرویس آنلاین است که کدهای ارسال شده از کامپیوترهایی که ابزار Git را به آن ارسال می‌کنند ذخیره می‌کند. تفاوت اصلی بین Git و GitHub این است که Git یک ابزار open-source است که توسعه دهندگان به صورت local برای مدیریت source code نصب می کنند، در حالی که GitHub یک سرویس آنلاین است که توسعه دهندگانی که از Git استفاده می کنند می توانند به آن متصل شوند و منابع را آپلود یا دانلود کنند.به طور کل شما از GitHub می تونید به عنوان یک Remote Repository استفاده کنید که روی یک سرور دیگر قرار دارد.شما برای استفاده از Git لزوما نیازی به GitHub ندارید(Bitbucket - GitLab - Google Cloud Source Repositories - Phabricator - RhodeCode از جمله سرویس هایی با عملکرد مشابه هستند).آیا در مورد Azure DevOps چیزی شنیده اید؟بیشتر بخوانید : قسمت دوم از این مبحث بیشتر بخوانید : نقشه راه توسعه دهندگان Asp.NET Core