Forwarded from PhiloLearn | فیلولرن
گیت (Git) یک سیستم کنترل ورژن (Version Control System) هستش که لینوس توروالدز، خالق لینوکس، در سال ۲۰۰۵ اون رو توسعه داد. 🚀 توروالدز این سیستم رو برای مدیریت بهتر کد لینوکس ساخت، چون سیستمهای قبلی جوابگوی نیازهای تیمش نبودن. 😅
گیت به برنامهنویسها اجازه میده تغییرات کدشون رو تو فایلها ثبت و ردگیری کنن. 📂 هر تغییری که ثبت میشه یه «کامیت» (Commit) هستش که شامل یه تایماستمپ 🕰، نویسنده ✍️ و پیام توضیحی میشه. این سیستم باعث میشه بشه به راحتی فهمید چه کسی، چه تغییری رو، کی و چرا ایجاد کرده. 🤔
یکی از ویژگیهای اصلی گیت، برنچها (Branch) هستن. 🌿 برنچها به تیمها اجازه میدن روی فیچرهای مختلف به صورت موازی کار کنن. مثلاً یه برنچ برای فیکس باگها 🐞، یکی برای فیچرهای جدید ✨ و یکی هم برای تست. وقتی کار روی یه برنچ تموم میشه، میشه اون رو با برنچ اصلی (معمولاً main یا master) مرج کرد. 🔀
گیت از مدل Distributed استفاده میکنه، یعنی هر برنامهنویس یه کپی کامل از ریپوزیتوری (Repository) رو روی سیستم خودش داره. 💻 این باعث میشه حتی بدون اینترنت هم بشه کار کرد و تغییرات رو ثبت کرد. 🌍 بعداً وقتی به اینترنت وصل شدی، میتونی تغییراتت رو با ریموت (مثل گیتهاب یا گیتلب) سینک کنی. 🔄
دستورهای پایهای گیت که هر برنامهنویسی باید بلد باشه:
git init: شروع یه ریپوزیتوری جدید 🎉
git clone: کپی کردن یه ریپوزیتوری از ریموت 📥
git add: اضافه کردن فایلها به استیج 📝
git commit: ثبت تغییرات ✅
git push: آپلود تغییرات به ریموت ⬆️
git pull: دریافت آخرین تغییرات از ریموت ⬇️
git checkout: سوییچ بین برنچها 🔄
git merge: ترکیب دو برنچ 🔗
گیت از یه سیستم هوشمند برای تشخیص تغییرات استفاده میکنه که به جای ذخیره کل فایل در هر تغییر، فقط تفاوتها رو نگه میداره. 🧠 این باعث میشه حجم ریپوزیتوری کمتر بشه و سرعت کار بالاتر بره. ⚡️
برای کانفیگ گیت میتونی از فایل .gitconfig استفاده کنی. توش میشه تنظیمات مختلف مثل یوزرنیم 👤، ایمیل 📧، ادیتور پیشفرض 🖋 و الگوهای ignore 🛑 رو مشخص کرد. همچنین میشه برای هر ریپو یه کانفیگ جداگانه با فایل .git/config داشت. 📂
#Git #VersionControl #گیت #کنترل_ورژن
💙💙 @philoLearn 💙💙
گیت به برنامهنویسها اجازه میده تغییرات کدشون رو تو فایلها ثبت و ردگیری کنن. 📂 هر تغییری که ثبت میشه یه «کامیت» (Commit) هستش که شامل یه تایماستمپ 🕰، نویسنده ✍️ و پیام توضیحی میشه. این سیستم باعث میشه بشه به راحتی فهمید چه کسی، چه تغییری رو، کی و چرا ایجاد کرده. 🤔
یکی از ویژگیهای اصلی گیت، برنچها (Branch) هستن. 🌿 برنچها به تیمها اجازه میدن روی فیچرهای مختلف به صورت موازی کار کنن. مثلاً یه برنچ برای فیکس باگها 🐞، یکی برای فیچرهای جدید ✨ و یکی هم برای تست. وقتی کار روی یه برنچ تموم میشه، میشه اون رو با برنچ اصلی (معمولاً main یا master) مرج کرد. 🔀
گیت از مدل Distributed استفاده میکنه، یعنی هر برنامهنویس یه کپی کامل از ریپوزیتوری (Repository) رو روی سیستم خودش داره. 💻 این باعث میشه حتی بدون اینترنت هم بشه کار کرد و تغییرات رو ثبت کرد. 🌍 بعداً وقتی به اینترنت وصل شدی، میتونی تغییراتت رو با ریموت (مثل گیتهاب یا گیتلب) سینک کنی. 🔄
دستورهای پایهای گیت که هر برنامهنویسی باید بلد باشه:
git init: شروع یه ریپوزیتوری جدید 🎉
git clone: کپی کردن یه ریپوزیتوری از ریموت 📥
git add: اضافه کردن فایلها به استیج 📝
git commit: ثبت تغییرات ✅
git push: آپلود تغییرات به ریموت ⬆️
git pull: دریافت آخرین تغییرات از ریموت ⬇️
git checkout: سوییچ بین برنچها 🔄
git merge: ترکیب دو برنچ 🔗
گیت از یه سیستم هوشمند برای تشخیص تغییرات استفاده میکنه که به جای ذخیره کل فایل در هر تغییر، فقط تفاوتها رو نگه میداره. 🧠 این باعث میشه حجم ریپوزیتوری کمتر بشه و سرعت کار بالاتر بره. ⚡️
برای کانفیگ گیت میتونی از فایل .gitconfig استفاده کنی. توش میشه تنظیمات مختلف مثل یوزرنیم 👤، ایمیل 📧، ادیتور پیشفرض 🖋 و الگوهای ignore 🛑 رو مشخص کرد. همچنین میشه برای هر ریپو یه کانفیگ جداگانه با فایل .git/config داشت. 📂
#Git #VersionControl #گیت #کنترل_ورژن
💙💙 @philoLearn 💙💙
Forwarded from LearnPOV | لرن پی او وی
برای اینکه بفهمید چند خط کد توی ریپازیتوری گیت شما زده شده میتونید از دستور زیر استفاده کنید، نتیجش میتونه واقعا جالب باشه 🔥
دستور زیر هم لیست تمامی فایلهای ریپو رو به همراه تعداد خط کد هر کدوم لیست میکنه و در نهایت هم جمع کلشون رو نشون میده.
اگر زدید به همراه زبان/فریمورک پروژتون بفرستید ببینیم پروژه کی کداش بیشتره 📟
🚀 @coolycode
git ls-files | xargs wc -l | tail -n 1
دستور زیر هم لیست تمامی فایلهای ریپو رو به همراه تعداد خط کد هر کدوم لیست میکنه و در نهایت هم جمع کلشون رو نشون میده.
bash git ls-files | xargs wc -l
اگر زدید به همراه زبان/فریمورک پروژتون بفرستید ببینیم پروژه کی کداش بیشتره 📟
#git | #tricks
Forwarded from LearnPOV | لرن پی او وی
برای اینکه بفهمید چند خط کد توی ریپازیتوری گیت شما زده شده میتونید از دستور زیر استفاده کنید، نتیجش میتونه واقعا جالب باشه 🔥
دستور زیر هم لیست تمامی فایلهای ریپو رو به همراه تعداد خط کد هر کدوم لیست میکنه و در نهایت هم جمع کلشون رو نشون میده.
🚀 @coolycode
git ls-files | xargs wc -l | tail -n 1
دستور زیر هم لیست تمامی فایلهای ریپو رو به همراه تعداد خط کد هر کدوم لیست میکنه و در نهایت هم جمع کلشون رو نشون میده.
bash git ls-files | xargs wc -l
#git | #tricks
Forwarded from Code Module | کد ماژول (genix)
چند تا کامند کاربردی و کمتر شناخته شده از گیت 🦦
میدونستی به جز push و pull گیت کامند های دیگه ای هم داره؟ در این پست من چند کامند کمتر شناخته شده و کاربردی رو بهتون معرفی میکنم.
💎 git stash
زمانی که شما در برنچ A هستید و یهویی مجبورید به برنچ B سوییچ کنید و نمیخواید این تغییرات نیمهکاره رو کامیت کنید، git stash به دادتون میرسه. تغییراتتون رو جمع میکنه و میتونید بدون کامیت کردن به یک برنچ دیگه برید.
💎 conditional config
اینجوری بگم که با این قابلیت میتونید تعیین کنید یه تنظیم خاص تو گیت فقط تحت شرایط خاصی اعمال بشه. مثلا اگه در یک پروژه خاص بودید، یا برای یه ایمیل خاص، تنظیمات متفاوتی داشته باشی.
💎 git blame
این کامند برای وقتی هست که در تیم، یک قسمت از کد خراب شده و میخواید بدونید کدوم دولوپر کامیت کرده و مقصر کیه. با این کامند به راحتی میتونید بفهمید چه کسی اون فایل رو تغییر داده.
💎 git reflog
این کامند برای زمانی خوبه که یک خرابکاری کردی، مثلا یک کامیت پاک کردی و این کامند بهت نشون میده چه تغییراتی صورت گرفته. این کامند به طور پیشفرض فعال هست و تغییرات محلی رو ثبت میکنه. (مثلا زمانی که ما از کامند git log استفاده میکنیم)
💎 git diff —word —diff
به جای اینکه کل تغییرات رو خطبهخط رو ببینی، این کامند تغییرات رو کلمهبهکلمه نشون میده. برای وقتایی که کد زیاد داری، خیلی کمک میکنه.
💎 git push —force-with-lease
این یه جور فورس پوش هست، ولی با احتیاط! به جای اینکه فورس بزنی و تغییرات دیگران رو overwrite کنی، این تضمین میکنه که اگه کسی دیگه چیزی تو ریپازیتوری تغییر داده، پوش تو انجام نشه.
به صورت خلاصه این کامند ها قطعا یه روز به کارتون میاد و به نوبه خودشون کاربردی هستن. دقت کنید تعداد کامند های گیت حدودا بیشتر از ۱۵۰ تا هست و اگه علاقه مند به کشف باقی موارد هستید، میتونید از YouTube اقای Scott Chacon اطلاعات خوبی به دست بیارید. ایشون نویسنده کتاب معروف Git Pro، و یکی از بنیانگذاران گیت هاب هستن.
#git
@CodeModule
میدونستی به جز push و pull گیت کامند های دیگه ای هم داره؟ در این پست من چند کامند کمتر شناخته شده و کاربردی رو بهتون معرفی میکنم.
💎 git stash
زمانی که شما در برنچ A هستید و یهویی مجبورید به برنچ B سوییچ کنید و نمیخواید این تغییرات نیمهکاره رو کامیت کنید، git stash به دادتون میرسه. تغییراتتون رو جمع میکنه و میتونید بدون کامیت کردن به یک برنچ دیگه برید.
💎 conditional config
اینجوری بگم که با این قابلیت میتونید تعیین کنید یه تنظیم خاص تو گیت فقط تحت شرایط خاصی اعمال بشه. مثلا اگه در یک پروژه خاص بودید، یا برای یه ایمیل خاص، تنظیمات متفاوتی داشته باشی.
💎 git blame
این کامند برای وقتی هست که در تیم، یک قسمت از کد خراب شده و میخواید بدونید کدوم دولوپر کامیت کرده و مقصر کیه. با این کامند به راحتی میتونید بفهمید چه کسی اون فایل رو تغییر داده.
💎 git reflog
این کامند برای زمانی خوبه که یک خرابکاری کردی، مثلا یک کامیت پاک کردی و این کامند بهت نشون میده چه تغییراتی صورت گرفته. این کامند به طور پیشفرض فعال هست و تغییرات محلی رو ثبت میکنه. (مثلا زمانی که ما از کامند git log استفاده میکنیم)
💎 git diff —word —diff
به جای اینکه کل تغییرات رو خطبهخط رو ببینی، این کامند تغییرات رو کلمهبهکلمه نشون میده. برای وقتایی که کد زیاد داری، خیلی کمک میکنه.
💎 git push —force-with-lease
این یه جور فورس پوش هست، ولی با احتیاط! به جای اینکه فورس بزنی و تغییرات دیگران رو overwrite کنی، این تضمین میکنه که اگه کسی دیگه چیزی تو ریپازیتوری تغییر داده، پوش تو انجام نشه.
به صورت خلاصه این کامند ها قطعا یه روز به کارتون میاد و به نوبه خودشون کاربردی هستن. دقت کنید تعداد کامند های گیت حدودا بیشتر از ۱۵۰ تا هست و اگه علاقه مند به کشف باقی موارد هستید، میتونید از YouTube اقای Scott Chacon اطلاعات خوبی به دست بیارید. ایشون نویسنده کتاب معروف Git Pro، و یکی از بنیانگذاران گیت هاب هستن.
#git
@CodeModule
Forwarded from Gopher Academy
Forwarded from Ditty | دیتی
🔺گیت و ۶ تا از مهمترین تجربیات من
- تجربیات و نکاتی رو از استفاده از Git رو براتون به اشتراک گذاشتم که کمک میکنن با این ابزار به شکل بهتر و موثرتری استفاده کنیم:
ditty.ir/572
#git
- تجربیات و نکاتی رو از استفاده از Git رو براتون به اشتراک گذاشتم که کمک میکنن با این ابزار به شکل بهتر و موثرتری استفاده کنیم:
ditty.ir/572
#git
دیتی | Ditty.ir
نکات و تجربیات استفاده از Git
میخوام تجربیات و نکاتی رو از استفاده از Git رو براتون به اشتراک بذارم که کمک میکنن با این ابزار به شکل بهتر و موثرتری استفاده کنیم
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
🔸#git flow
دفعه قبل با نحوه درست کامیت زدن اشنا شدیم حالا میخوایم بریم سراغ برنچها
ساده و خلاصه بگم ابزار گیت فلو (git flow) برای مدیریت حرفهای و تمیز برنچها هستش
شروع پروژه:
feature:
release:
hotfix:
راحت میتونید برای هر کاری که میکنی یه برنچ جدا با اسم مشخص داشته باشید اپشنهای دیگه هم داره فقط اینا نیستن
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
@TheRaymondDev
دفعه قبل با نحوه درست کامیت زدن اشنا شدیم حالا میخوایم بریم سراغ برنچها
ساده و خلاصه بگم ابزار گیت فلو (git flow) برای مدیریت حرفهای و تمیز برنچها هستش
شروع پروژه:
git flow init
feature:
git flow feature start <feature-name>
git flow feature finish <feature-name>
release:
git flow release start <version>
git flow release finish <version>
hotfix:
git flow hotfix start <hotfix-name>
git flow hotfix finish <hotfix-name>
راحت میتونید برای هر کاری که میکنی یه برنچ جدا با اسم مشخص داشته باشید اپشنهای دیگه هم داره فقط اینا نیستن
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
@TheRaymondDev
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱)
🔶 اگر از Git استفاده میکنید، احتمالاً با gitignore. آشنا هستید. ولی یه فایل دیگه هم هست به اسم exclude 😊
حالا این دوتا چه فرقی دارن؟
gitignore.
این فایل توی ریشهی پروژه است و برای نادیده گرفتن فایلهایی استفاده میشه که همهی اعضای تیم نباید پیگیریشون کنن. خودش هم commit میشه و داخل repo میمونه.
exclude
مسیرش توی git/info/exclude. هست و فقط روی سیستم شخصی شما تأثیر داره. ایدهآله برای فایلهایی که فقط خودت نمیخوای track بشن، بدون اینکه توی repo دیده بشن.
پس اگر فایل لوکال خاصی داری و نمیخوای توی gitignore. بذاری، برو سراغ exclude 😉
</Amir Mohammad Rezvaninia>
@TheRaymondDev
حالا این دوتا چه فرقی دارن؟
gitignore.
این فایل توی ریشهی پروژه است و برای نادیده گرفتن فایلهایی استفاده میشه که همهی اعضای تیم نباید پیگیریشون کنن. خودش هم commit میشه و داخل repo میمونه.
exclude
مسیرش توی git/info/exclude. هست و فقط روی سیستم شخصی شما تأثیر داره. ایدهآله برای فایلهایی که فقط خودت نمیخوای track بشن، بدون اینکه توی repo دیده بشن.
پس اگر فایل لوکال خاصی داری و نمیخوای توی gitignore. بذاری، برو سراغ exclude 😉
</Amir Mohammad Rezvaninia>
@TheRaymondDev
Linkedin
#git | Amir Mohammad Rezvaninia | 41 comments
اگر از Git استفاده میکنید، احتمالاً با gitignore. آشنا هستید. ولی یه فایل دیگه هم هست به اسم exclude 😊
حالا این دوتا چه فرقی دارن؟
gitignore.
این فایل توی ریشهی پروژه است و برای نادیده گرفتن فایلهایی استفاده میشه که همهی اعضای تیم نباید پیگیریشون…
حالا این دوتا چه فرقی دارن؟
gitignore.
این فایل توی ریشهی پروژه است و برای نادیده گرفتن فایلهایی استفاده میشه که همهی اعضای تیم نباید پیگیریشون…
Forwarded from CleverDevs (Mammad)
پروژه gitc که یکی از بچه های چنل توسعه داده یک ابزار cli که براساس تغییرات کدی ک دادید چیکیدش رو به ai با پرامپ خاص، سبک و کانفیگ های مختلف ارسال میکنه و ی گیت کامیت مسیج کامل و خلاصه تحویل میده
فعلا فقط openai ساپورت میکنه
در اینده شاید دیپ سیک و گراک هم اضافه بشه
https://github.com/rezatg/gitc
#git
@CleverDevs - @CleverDevsGp
فعلا فقط openai ساپورت میکنه
در اینده شاید دیپ سیک و گراک هم اضافه بشه
اگه براتون جالبه، خوشحال میشم یه نگاهی بهش بندازید، استار بدید، یا اگه ایدهای برای بهبودش دارید یا دوست دارید مشارکت (contribute) کنید، در خدمتم.
https://github.com/rezatg/gitc
#git
@CleverDevs - @CleverDevsGp
Forwarded from Woland's Linux Journal (Woland)
حالا که صحبت از گیت کردیم، بذارید چندتا از بهترین افزونههای ویم برای گیت رو بهتون معرفی کنم.
افزونهی vim-fugitive که توسط tpope نوشته شده، یک اینترفیس برای گیت از داخل گیت هست که میتونه به اجرای دستورهای گیت از داخل ویم خیلی کمک کنه.
افزونهی gitgutter نشانههایی برای نمایش تغییرات شاخه به نسبت شاخه اصلی توی ویم اضافه میکنه.
افزونهی flog که برای من پرکاربردترین در میان این افزونههاست، یک کاوشگر شاخه برای گیت هست که تغییرات شاخه رو بهصورت یک diff توی ویم نمایش میده. این افزونه بهعنوان یک interface برای fugitive کار میکنه.
افزونهی vimagit هم افزونهایه که به تقلید از magit که برای ایمکس هست ساخته شده،اما من خودم ازش خیلی استفاده نکردم.
#git #vim
#ویم #گیت #آموزش
Plug 'tpope/vim-fugitive'
Plug 'airblade/vim-gitgutter'
Plug 'rbong/vim-flog'
Plug 'jreybert/vimagit'
افزونهی vim-fugitive که توسط tpope نوشته شده، یک اینترفیس برای گیت از داخل گیت هست که میتونه به اجرای دستورهای گیت از داخل ویم خیلی کمک کنه.
افزونهی gitgutter نشانههایی برای نمایش تغییرات شاخه به نسبت شاخه اصلی توی ویم اضافه میکنه.
افزونهی flog که برای من پرکاربردترین در میان این افزونههاست، یک کاوشگر شاخه برای گیت هست که تغییرات شاخه رو بهصورت یک diff توی ویم نمایش میده. این افزونه بهعنوان یک interface برای fugitive کار میکنه.
افزونهی vimagit هم افزونهایه که به تقلید از magit که برای ایمکس هست ساخته شده،
#git #vim
#ویم #گیت #آموزش