این روزها اکثر برنامه نویسان برای مدیریت سورس کد از گیت استفاده میکنند، و با اینکه اغلب ابزار گیت به همراه IDE نصب میشود، اما خیلی وقت ها هم نیاز داریم به دلایلی برنامه setup گیت را دانلود و جداگانه نصب نماییم. اما نصب کلاینت گیت برای ویندوز هم دارای گزینه هایی برای نصب است که شاید برای همه خیلی ملموس نباشد و با استفاده از گزینه های پیش فرض هم همیشه کار راحت و بدون دردسر پیش نمیرود و گاهی مجبور میشویم این گزینه ها را تغییر دهیم.
پس در اینجا میخواهیم نگاهی بیندازیم به مراحل نصب git for windows و گزینه های موجود برای نصب را کمی دقیق تر نگاه کنیم. تا بتوانیم با نصب درست و مطابق با نیازمان در آینده کمتر دچار مشکل با این ابزار پرکابرد شویم.
بعد از دانلود برنامه نصب از وب سایت گیت و شروع نصب در اولین مرحله باید لایسنس را بپذیریم، این لایسنس GPL هست و در واقع برعکس بیشتر لایسنسها که محدودیت هایی برای استفاده و نحوه استفاده قائل میشوند این لایسنس برای این است که کسی نتواند استفاده شما از این نرم افزار را محدود کند.
که خیلی هم خوب هست پس می پذیریم.
آدرس نصب از آن قسمتهاییست که معمولن گزینه پیش فرض در Program Files گزینه مناسبیست پس به مرحله بعدی میرویم.
- اولی که قرار دادن آیکن گیت در دسکتاپ هست که خیلی کار خاصی نیست، و مثلن در مورد خود من، خیلی کم پیش می آید که از دسکتاپ برای باز کردن اپلیکیشنی استفاده کنم و معمولن از استارت استفاده میکنم. یکی از دلایلش هم این است که اغلب چندین پنجره باز دارم و خوب اگر بخواهم از آیکن های دسکتاپ استفاده کنم باید همه را مینیمایز کنم تا به دسکتاپ برسم درحالی که با یک دکمه کیبورد منوی استارت ظاهر میشود و هر اپلیکیشنی که لازم باشد را پیدا میکنم.
- مورد بعدی یکپارچگی با ویندوز اکسپلورر هست که این مورد هم معمولن به کار نمی آید. چرا که معمولن وقتی از یک IDE استفاده میکنیم هم رابط کاربری بهتری ارائه میکنند و هم از نظر کاربرد راحتتر هستند این هم اشاره کنم که GUI گیت فارسی را هم ساپورت نمیکند. و اگر بخواهیم با متنی کار کنیم که در آن محتوای فارسی هم هست خیلی مناسب نخواهد بود.
- git bash هم ارزش خاصی نسبت به CMD ویندوز برایمان ایجاد نمی کند البته شاید برای لینوکس کارها گزینه خوبی باشد و بیشتر از bash خوششان بیاید ولی برای کسانی که با ویندوز کار میکنند لطف خاصی ندارد.
- Git LFS(Large File Support) که همانطور که از اسمش پیداست برای پشتیبانی از فایلهای بزرگ است و کارکردش به این صورت است که فایل های بزرگ را در گیت با اشاره گرهای متنی جایگزین میکند و فایل هایی مثل فایل های صوتی، ویدئویی، دیتاست ها و فایلهای گرافیکی میتوانند در ذخیره سازهای ابری ذخیره شوند و یک اشاره گر از سورس داشته باشد. در صورتی که با این نوع فایلها سر و کار داریم میتوانیم این گزینه را فعال کنیم.
- Associate .git configuration files with the default text editor
خوب این گزینه فایل های .git را با ویرایشگر پیش فرض ویندوز مرتبط میکند که انتخاب خوبی هست چرا که به این معنیست که فایلهای .git که تنظیمات مرتبط با گیت هستند با دابل کلیک با نوت پد باز میشوند و میتوان آنهارا ویرایش کرد.
- Associate .sh files to be run with bash
این گزینه هم فایلهای .sh را با bash مرتبط میکند که خوب منطقیست چون .sh اصلن فایلهای bash هستند
- Check daily for Git for Windows updates
آن قدرها اتفاقی خاصی در گیت رخ نمیدهد که هر روز منتظر به روزرسانی جدید باشیم.
- Add a Git Bash Profile to Windows Terminal
این هم گزینه مناسبیست که Git Bash را به ترمینال جدید ویندوز که خاصیت ترسپرنت هم دارد اضافه میکند و در برخی موارد ممکن است به کار بیاید و داشتن این مورد در جعبه ابزار به ویژه در ترمینال ویندوز خالی از لطف نیست.
با این اوصاف گزینه های انتخابی ما مانند تصویر زیر خواهند بود.
مرحله بعد انتخاب فولدر در start منوی ویندوز است، هرچند معمولن گیت را از اینجا اجرا نمیکنیم با این حال گزینه مناسبی است و دسترسی به گیت را آسان میکند.
اما مرحله بعد انتخاب ویرایشگر است و ویرایشگر پیش فرض گیت نیز VIM است که همانطور که میدانیم فرآیند خاصی که خارج شدن از Vim داره دستمایه طنزپردازیهای بسیاری در حوزه برنامه نویسی است.
اما اگر خارج شدنش را بلد باشیم(که با تایپ دونقطه : وارد محیط کامند Vim میشویم و با تایپ q و بعد زدن کلید Enter میتوانیم از محیط آن خارج شویم، اگه بخوایم تغییراتمان ذخیره شود هم به جای q، تایپ میکنیم wq😊) یکی از خوبیهای Vim این است که در محیط ترمینال اجرا میشود. مثلن وقتی که میخواهیم تغییراتی را کامیت کنیم باید یک کامنت وارد کنیم که وارد کردن این کامنت در همان خط فرمان(Command Line) کار راحتتریست تا اینکه یک پنجره دیگر مثل notepad یا Notepad++ باز شود و آنجا تغییراتمان را اعمال کنیم و بعد ذخیره نماییم. اما اگر میپرسید "چرا باید در Command Line با گیت کار کنیم باید عرض کنم که خیلی از امکانات گیت از طریق کامند لاین در دسترس هستند و معمولن رابطهای گرافیکی که برای گیت درست شدهاند سلیقه ای پیاده سازی شده اند و مواردی با نام های دیگری نسب به نام های خود گیت به کار برده شده اند و در کل اگر بخواهیم از گیت بیشتر از fetch، pull، push و کامیت ساده استفاده کنیم اغلب به دستورات کامندلاین نیاز پیدا میکنیم به ویژه موقعی که یک اشتباه انجام شده و میخواهیم آن را درست کنیم، مثل حذف شدن ناخواسته یک شاخه (Branch) ادغام نشده و از این دست. برای اینجا یک ویرایشگر ساده مثل همان Vim گزینه مناسبیست. در درجه دوم هم نوت پد را توصیه میکنم چرا که معمولن در این موارد کار پیچیده ای نمیخواهیم انجام دهیم و برای یک کار پیچیده مثل رفع تداخل ها (Conflict) هم یک ویرایشگر پیشرفته تر لازم خواهیم داشت که موقع رفع تداخل ها میتوانیم انتخاب کنیم.
در مرحله بعد هم نام شاخه (Branch) اصلی را میتوانیم انتخاب کنیم که به صورت کلاسیک همیشه Master بوده است ولی الان بیشتر بعد از جریان black lives matter و همینطور جامع تر بودن مفهوم main در فرآیندهای کاری حال حاضر و نحوه ای که از گیت استفاده میشود بیشتر مورد توجه قرار گرفته و گیت هاب هم به استفاده از main روی آورده، پس اینجا میتوانیم main را انتخاب کنیم ولی در کل موضوع خیلی مهمی نیست. البته trunk و development هم برای نام برنچ اولیه متداول هستند ولی main درحال حاضر طرفداران بیشتری دارد. و واقعیت هم این است که رابطه برنچ ها در فرآیندهای متداول در گیت دیگر به صورت master/slave نیست.
مرحله بعد هم تنظیم Path در ویندوز است که چند گزینه برای آن داریم اول اینکه git فقط در bash تعریف شود و Paths ویندوز دست نخورده بماند. اما بهتر است گیت در ابزارهای مختلف به راحتی در دسترس باشد. بعضی اوقات در powershell لازم میشود و بعضی وقتها در cmd، دست خوردن path هم مشکلی ایجاد نمیکند پس همان گزینه دوم گزینه مناسبیست، اما گزینه سوم هم برعکس گزینه اول میخواهد همه چیز را دستکاری کند و خودش هم اخطار داده که کامندها و ابزار ویندوز مثل find و sort با معادل یونیکسی آنها جایگزین میشوند که گزینه جالبی به نظر نمی آیند مگر اینکه لینوکسی باشید که اگر لینوکسی باشید هم که دیگر دلیل نصب گیت فور ویندوز چیست؟! 😉 .
در مرحله بعد هم تعیین میکنیم که گیت از ssh.exe که به همراه دارد استفاده کند یا از یک ssh کلاینت دیگر که در Path قرار گرفته است. معمولن در ویندوز برای ssh از bitwise ssh استفاده میکنیم ولی دلیلی ندارد گیت را هم مجبور کنیم از آن استفاده کند همان ssh خودش را استفاده کند بهتر است.
مرحله بعد انتخاب SSL هست که انتخاب نسبتن مهمیست. گزینه اول این است که از OpenSSL که یک کتابخانه خیلی معروف برای SSL هست استفاده شود یا از پیش فرض ویندوز که نامش windows secure channel هست. اهمیت این موضوع زمانی مشخص میشود که بخواهید از یک CA (Certificate Authority) شرکتی استفاده کنید اگر گزینه اول را انتخاب کرده باشیم حتا در صورتی که ویندوز CA شرکت را به عنوان معتبر بشناسد ولی چون گزینه اول با trustedهای خودش چک میکند کانکشن اس اس ال را نامعتبر تشخیص میدهد و ممکن است موقع استفاده از گیت به این خطا بر بخوریم
SSL Certificate problem: unable to get local issuer certificate.
البته با این دستور میتوانیم بعد از نصب گیت هم این تنظیم را تغییر بدهیم
git config --global http.sslbackend schannel
و مشکل را رفع کنیم ولی خوب همین الان این تنظیم را انجام بدهیم بعدن در وقت سرچ کردن در Stackoverflow نجاتمان میدهد و کمتر به خودمان و گیت ناسزا خواهیم گفت.
مرحله بعد line ending هست که در محیطهایی که برنامه نویسان از سیستم عامل های متفاوتی استفاده میکنند اهمیت ویژه دارد چرا که هر سیستم عامل ساختار خودش را برای تعیین آخر خط دارد
- Windows - Lines end with both a <CR> followed by a <LF> character
- Linux - Lines end with only a <LF> character
- Macintosh (Mac OSX) - Lines end with only a <LF> character
- Macintosh (old) - Lines end with only a <CR> character
اگر اینجا مشکلی ایجاد شود به Conflictها عجیب و غریب برمیخوریم پس بهتر است از همان گزینه پیش فرض ویندوز استفاده کنیم که گزینه اول هست.
در مرحله بعدی دو انتخاب داریم برای ترمینالی که گیت از آن استفاده میکند یکی MinTTY هست که همانطور که در همین مرحله توضیح داده شده است برخلاف cmd یونیکد را ساپورت میکند، و اسکرول به عقب هم مثل cmd محدود نیست. در نتیجه گزینه مناسبتری به نظر میرسد (هرچند نمیدونم کجا بازش میکنه)
در این مرحله نیز باید رفتار پیش فرض موقع pull کردن را مشخص کنیم. به خاطر اینکه کنترل بیشتری روی کامیتها داشته باشیم و کامیتی که انتظارش را نداریم موقع pull کردن اضافه شود و تاریخچه را شلوغ کند، بهترین گزینه به نظر گزینه آخر است که اگر میشد fast-forward میکند اگر نشد هم که خطا میدهد تا رسیدگی کنیم و ببینیم داستان چیست. البته rebase هم گزینه جذابیست شاید بعدن نظرم در موردش عوض شد.
مرحله بعدی انتخاب credential manager هست که میتوانیم استفاده کنیم یا استفاده نکنیم که خوب none گزینه مناسبی به نظر نمیاد چرا که هیچ کس نمیخواد هر بار که چیزی را از ریموت pull یا push میکند دوباره نام کاربری و گذرواژه اش را وارد کند. خوب پس از آن استفاده میکنیم و گزینه Git Credential Manager را انتخاب میکنیم که به نام GCM هم شناخته میشود و اگر در تنظیمات ویژوال استادیو هم خواستید تغییرش دهید با همین نام GCM پیدایش میکنید.
این مرحله هم که فعال سازی کش و لینکهای سمبلیک هستند که فعال سازی کش روی پرفورمنس تاثیر به سزایی دارد برای همین فعالش میکنیم. سمبلیک لینک هم اگر فعال کنیم برای ریپوهایی که جدید ایجاد میکنیم فعال میشود فقط و کاری به ریپوهای قبلی ندارد.
https://github.com/git-for-windows/git/wiki/Symbolic-Links
مرحله بعد هم که فعال سازی استفاده از امکانات آزمایشی هست که در اینجا دو مورد داریم. اولی استفاده از شبه کنسول ها هست که گویا هنوز دارای باگ است و برای ........هست
دومی هم مانیتور فایل سیستم هست که سعی دارد پیدا کردن وضعیت فعلی گیت را راحتتر کند. که خوب خیلی به کار ما نمیان و وقتی از حالت آزمایشی خارج شدند شاید یک گوشه چشمی به آن انداختیم
همانطور هم که در تصویر میبینیم مرحله بعد نصب هست و میرویم که نصب انجام شود و پیام نهایی تکمیل نصب را ببینیم.
حالا یک گیت داریم که میتوانیم شروع کنیم به کار کردن با آن و در یک محیط با چند برنامه نویس همکاری داشته باشیم.
برای امتحان آن هم میتوانید کامند لاین را باز کرده و دستور
Git –-version را اجرا کنید که خیالتان راحت شود که گیت به طور کامل نصب شده است.
و برای انجام پروژه ها آماده هستید.