شخصی سازی گیت و رهایی از nano!

شخصی سازی گیت و رهایی از nano!


اگر اتفاقی یه کامیت رو بدون مشخص کردن پیام بخواید انجام بدید گیت به صورت پیشفرض ادیتور nano رو براتون باز میکنه تا یه پیام مشخص کنید.(شاید برای بعضی ها ادیتور vim رو باز کنه). مشکل اینه که من نمیدونم چطور از nano باید خارج بشم 🙂 بازم صد رحمت به vim که تو اینترنت مستقیم نوشتن چطور باید ازش خارج بشی. nano یه چیز عجیب غریبیه که تو ‌ذهن آدم نمیمونه. یک سال بعد از اولین آشنایی من با گیت بالاخره یکی پیدا شد که بهم توضیح بده چطور این رو تغییر بدم.در ادامه نگاهی به کاربردی ترین کانفیگ های گیت میندازیم.قبل از اینکه وارد بحث بشیم باید یه چیزی رو بدونیم. گیت رو میشه در سه سطح تنظیم کرد:سطح system: برای همه کاربر(user) های کامپیوتر و همه ریپوزیتوری های اونها.سطح global: برای همه ریپوزیتوری های کاربر فعلیسطح local: فقط برای یک ریپوزیتوری.در نتیجه میتونیم چند تا ریپوزیتوری داشته باشیم که تنظیمات مختلفی داشته باشند. یا حتی رو سیستم مون چند کاربر داشته باشیم و هر کدوم تنظیمات مختلفی داشته باشند. مثل اسم!تو این مطلب همه تنظیمات در سطح global هستند و با global– مشخص میشن. ولی میتونید از هر کدوم از سطوح که خواستید استفاده کنید. برای سطح system به جای global– از system– و برای سطح local از local– استفاده کنید.وقتی با دستور git log به تاریخچه کامیت ها نگاه میکنیم میبینیم که کنار هر کامیت اسم و ایمیل فردی که اون کامیت رو انجام داده نوشته شده. در نتیجه اگر یه نفر تو یه پروژه بزرگ گند زد به راحتی میشه یقش رو گرفت:)ترمینال تون رو باز کنید و اسم و ایمیل تون رو به گیت بدید:git config –global user.name &quotArman&quot
git config –global user.email [email protected]&quotهمونطور که میبینید این تنظیمات رو در سطح global انجام دادیم و خب منطقیه چون فقط کاربر فعلی این اسم و ایمیل رو داره.اگر اشتباه نکنم اگر این تنظیمات رو انجام نداده باشید و بخواید یه کامیت انجام بدید گیت ازتون میخواد که خودتون رو معرفی کنید و دو دستور بالا رو بزنید. الان دلیلش رو میدونید.وقتی کامیتی رو بدون مشخص کردن پیام انجام میدید گیت ادیتور پیشفرض رو باز میکنه تا پیام رو اونجا بنویسید.برای اینکه ادیتور پیشفرض رو به ویم تغییر بدید:git config –global core.editor vimو اگر بخواید اون رو به vs code تغییر بدید:git config –global core.editor &quotcode –wait&quotوقتی توی پوشه ای هستید و دستور code رو بزنید همونجا vscode براتون باز میشه. در واقع باید دستوری که منجر به باز شدن ادیتور میشه رو بهش بگیم. wait– به ترمینال میگه که تا وقتی کارمون با vscode تموم نشده صبر کن! وقتی vscode رو بستیم ترمینال به حالت اول برمیگرده و میتونیم توش دستور بنویسیم.میتونید از wait– رو ننویسید.برای اینکه تغییرات یک فایل رو بررسی کنیم از دستور git diff استفاده میکنیم. نتیجه چیزی شبیه به این هست:سینتکس خاصی داره و زیاد هم سخت نیست ولی بهترین راه هم نیست. vs code به صورت پیشفرض این امکان رو داره که این نوشته های عجیب غریب رو به شکل بهتری بهمون نشون بده:خیلی راحت تر میتونیم بفهمیم کجای فایله تغییر پیدا کرده. اینطور نیست؟git config –global diff.tool vscodeدستور بالا vscode رو به عنوان difftool پیشفرض تنظیم میکنه. حالا باید بهش بگیم چطور vscode رو بالا بیاره:git config –global difftool.vscode.cmd &quotcode –wait –diff $LOCAL $REMOTE&quotدر اینجا diff– به vscode میگه که ما میخوایم ازت برای مقایسه کردن دو تا فایل استفاده کنیم. LOCAL$ و REMOTE$ در واقع دو تا جای خالی هستند که گیت اون رو برامون پر میکنه و لازم نیست نگرانش باشیم (بالاخره باید به vscode بگیم کدوم دو فایل رو میخوایم با هم مقایسه کنیم). حواستون باشه که تو ترمینال برای تعریف کردن متغیر از $ استفاده میکنیم ولی ما به خاطر این نمیخوایمش. پس یک قبل از اون میگذاریم تا سو تفاهمات برطرف بشه.از این به بعد به جای دستور git diff میتونید از git difftool استفاده کنید تا vscode رو باز کنه و زندگی تون زیباتر بشه.توجه کنید که میتونید از ارگیومنت های diff هم توی difftool استفاده کنید. مثلا:git difftool –stagedروش سنتی برای برطرف کردن کانفلیکت ها اینه که فایلی که کانفلیکت داره رو با یک ادیتور باز کنیم و به صورت دستی اون رو برطرف کنیم. ولی ابزار های گرافیکی هم میتونند این کار رو برامون راحت تر کنند. مثلا p4merge.بعد از اینکه نصبش کردید این دستور رو بزنید (البته از هر ابزار دیگه ای میتونید استفاده کنید و مراحل مثل هم هست):git config –global merge.tool p4merge
git config –global mergetool.p4merge.path &quot_path_&quotاینجا باید به جای _path_ آدرس کامل محلی که ابزار مورد نظر توش نصب شده رو بنویسید. مثلا برای ویندوز میتونه چیزی شبیه این باشه:git config –global mergetool.p4merge.path &quotC:Program Files…&quotاز این به بعد وقتی با یک کانفلیکت مواجه شدید کافیه دستور زیر رو بزنید تا ابزار مورد نظر باز بشه و کانفلیکت رو راحت تر برطرف کنید:git mergetoolمیتونید برای دستور هایی که زیاد استفاده میکنید یک سری میانبر تعریف کنید. مثلا دستور:git status -sکه خیلی ازش استفاده میکنم. میخوام یه میانبر براش تعریف کنم:git config –global alias.gss &quotgit status -s&quotحالا با زدن دستور gss انگار git status -s رو زدم.یه چیز رو فقط بهتون نگفتم و اون هم اینه که تنظیمات توی یه فایل ذخیره میشن.فایل path]/etc/gitconfig] برای تنظیمات سطح system.فایل .config/git/config/~ برای تنظیمات سطح global.و فایل git/config. برای تنظیمات سطح local.این فایل ها به ترتیب همدیگر رو بازنویسی میکنند. یعنی اگر یک تنظیم خاص هم توی سطح global و هم سطح local تعریف شده باشه، گیت از اون که توی local هست استفاده میکنه.با دستور های زیر میتونید اون فایل ها رو به ترتیب با ادیتور پیشفرض ببینید و حتی اون رو تغییر بدید:git config –system -e
git config –global -e
git config –local -eهنوز خیلی چیز ها هست که میتونید شخصی سازی کنید و اینجا میتونید همه اون هارو ببینید. ولی خب اینها به نظرم کاربردی تر بودند. اگر منبع این آموزش رو معرفی نکنم در حقش اچحاف میشه:). واقعا اون رو توصیه میکنم.https://codewithmosh.com/p/the-ultimate-git-course

منبع

Author: admin

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *