<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های README.md</title><link>https://virgool.ir/feed/@readme.md</link><description>Software Engineer - https://t.me/readmemdd</description><language>fa</language><pubDate>2026-11-10 20:32:08</pubDate><image><url>https://files.virgool.ir/upload/users/12705/avatar/VhQVUV.jpg</url><title>README.md</title><link>https://virgool.ir/@readme.md</link></image><item><title>آشنایی کامل با گیت: شروع به کار با گیت قسمت ۲</title><link>https://virgool.ir/@readme.md/آشنایی-کامل-با-گیت-شروع-به-کار-با-گیت-قسمت-۲-lmjopd8kbgzo</link><description> مقدمه:توی پست قبلی (پست قبلی) من اومدم یه توضیحاتی راجع‌به ترجمه کتابGit Essentials: Developer&#39;s Guide to Gitدادم  و قراره که این کتاب رو هر فصلش رو که ترجمه میکنم اینجا منتشرش کنم. اگه میخوای بدونی کتابش چه و چه سر فصل هایی داره و یکم منو بشناسی ببینی قراره چی کار کنیم اینا چیزایی هستش که توی پست قبلی بهش اشاره کردم میتونی یه نگاهی به پست قبلی بندازی :)‌📚 اگه میخوای فایل PDF کتاب رو داشته باشی خودت بخونی میتونی از اینجا داشته باشیش.فصل سوم - Getting Started with Git حالا وقتشه که اولین قدم‌هامون رو در استفاده از گیت برداریم. اول از همه، گیت رو روی سیستم‌عامل مورد نظر خودتون (ویندوز، مک یا لینوکس) نصب می‌کنیم. بعدش، گیت رو با یک سری تنظیمات اولیه، مثل مشخص کردن نام کاربری، تنظیم می‌کنیم تا نیازی نباشه هر بار که نیاز به تأیید هویت داریم، دوباره اطلاعات ورود رو تایپ کنیم. و در نهایت، یک فایل جدید می‌سازیم و اون رو به مخزن خودمون متعهد (commit) می‌کنیم!نصب گیتاول از همه، بیاید گیت رو روی کامپیوترمون نصب کنیم. سه بخش بعدی به ترتیب توضیح می‌دهند که چطور گیت رو روی ویندوز، مک‌ او‌اس و لینوکس نصب کنیم. شما می‌تونید مستقیماً به بخش مربوط به سیستم‌عامل مورد علاقتون بپرید.نکته: نسخه‌ای که در این کتاب استفاده شده، نسخه‌ی 2.30.0 گیت هست که در تاریخ ۲۸ دسامبر ۲۰۲۰ منتشر شده. هر زمان که نسخه‌های مهم جدیدی از این ابزار منتشر بشه، ما هم کتاب رو به‌روزرسانی خواهیم کرد.ویندوزبرای نصب گیت روی ویندوز، باید به صفحه دانلود وب‌سایت رسمی git-scm برویم. با توجه به سیستم خودتان، می‌توانید فایل نصبی قابل‌حمل (portable) یا عادی را انتخاب کنید. ما از نسخه عادی فایل نصبی استفاده می‌کنیم. پس از دانلود، فایل exe را اجرا می‌کنیم. سپس، یک راهنمای نصب به صورت مرحله به مرحله ما را همراهی می‌کند. ما اینجا از گزینه‌های پیش‌فرض استفاده می‌کنیم.بعد از اتمام نصب، گیت باید روی کامپیوتر شما نصب شده باشد. حالا، با استفاده از Command Prompt یا برنامه Git Bash می‌توانید دستور گیت را با فلگ –version اجرا کنید تا نسخه نصب‌شده را بررسی کنید:$ git --versionباید خروجی‌ای مثل این داشته باشید:$ git version 2.30.0.windows.1ممکن است نسخه‌ی نصب‌شده شما متفاوت باشد، بسته به زمانی که این کتاب را می‌خوانید و آخرین نسخه پایدار موجود. اگر به کار با Command Prompt عادت دارید، می‌توانید به راحتی از آن برای کار با گیت استفاده کنید. اما اگر به محیط bash عادت دارید، مثلاً در لینوکس کار می‌کنید، شاید استفاده از برنامه Git Bash برایتان راحت‌تر باشد، چون به شما امکان می‌دهد اکثر دستورات استاندارد یونیکس که به صورت پیش‌فرض در ویندوز وجود ندارند، استفاده کنید.مک او‌اسبرای نصب گیت روی مک او‌اس چندین روش وجود داره. اولین روش استفاده از Homebrew هست. اگر قبلاً نصب نشده، می‌تونیم اون رو نصب کنیم و بعد، دستور زیر رو در ترمینال اجرا کنیم:$ brew install gitروش دیگه اینه که از نصب‌کننده (installer) ارائه‌شده توسط Tim Harper استفاده کنیم. فقط کافیه اون رو دانلود کنیم و با تنظیمات پیش‌فرض نصب کنیم. بعد از نصب، برای بررسی نسخه نصب‌شده، این دستور رو اجرا کنید:$ git --versionباید خروجی‌ای شبیه به این داشته باشید:$ git version 2.30.0لینوکسنصب گیت روی لینوکس واقعاً بستگی به توزیع شما و مدیر بسته مربوط به اون داره. اینجا ما یک توزیع مبتنی بر دبیان رو در نظر می‌گیریم، بنابراین از ابزار خط فرمان `apt-get` استفاده می‌کنیم:$ sudo apt-get install gitبعد از نصب، می‌تونیم دوباره دستور آشنای زیر رو اجرا کنیم تا نسخه‌ی نصب‌شده رو بررسی کنیم:$ git --versionباید خروجی‌ای شبیه به این داشته باشید:$ git version 2.30.0تنظیمات اولیهحالا که گیت رو نصب کردیم، می‌تونیم استفاده ازش رو شروع کنیم… تقریباً! بهتره که قبلش یک نام کاربری و ایمیل برای گیت تنظیم کنیم.برای این کار، یک ترمینال باز کنید و این دو دستور رو اجرا کنید:$ git config --global user.name Francois$ git config --global user.email francois.dupire@nerthusconsulting.beچی شد اینجا؟هر دو دستور با کلمه کلیدی git شروع می‌شوند که خیلی معمول است. شما همه دستورات گیت رو با همین کلمه کلیدی توی این کتاب اجرا می‌کنید. بعدش، عملیات config رو مشخص کردیم.همون‌طور که از اسمش پیداست، به گیت گفتیم که می‌خواهیم تنظیمات رو دستکاری کنیم. این رو هم باید بدونید که گیت دو نوع فایل تنظیمات داره: محلی (local) و سراسری (global).فایل تنظیمات محلی در پروژه‌ای (مخزنی) که با اون کار می‌کنید، قرار داره. این تنظیمات سراسری رو نادیده می‌گیرن و معمولاً زمانی استفاده می‌شن که بخواید تنظیماتی خاص فقط برای یک پروژه انجام بدید. به طور پیش‌فرض، همه تغییرات تنظیمات که با git config انجام می‌دید، محلی هستن. این فایل در پوشه .git پروژه شما قرار داره و می‌تونید بهش از طریق .git/config دسترسی داشته باشید. ما در مورد این پوشه وقتی شروع به کار روی یک پروژه کردیم، صحبت خواهیم کرد.برای اعمال تغییرات به تنظیمات سراسری، باید صراحتاً از فلگ --global استفاده کنید. این فایل خارج از پروژه‌هایتون قرار داره، معمولاً در مسیر ~/.gitconfig روی لینوکس، $HOME/.gitconfig روی مک‌ او‌اس، و C:/Users/User/.gitconfig روی ویندوز.مقادیر موجود در این فایل تنظیمات برای تمام مخازن/پروژه‌های گیت که در حال پیگیری هستید، اعمال می‌شوند، مگر این که توسط یک فایل محلی در یک مخزن/پروژه خاص نادیده گرفته بشن.هر دو فایل، جفت‌های کلید-مقدار تنظیمات رو می‌پذیرند. مثلاً ما در دستور اول کلید user.name رو به francois تنظیم کردیم. بعدش user.email رو به francois.dupire@nerthusconsulting.be تنظیم کردیم.اگر در هر زمانی بخواید بررسی کنید که کدام تنظیمات به یک پروژه خاص اعمال شده‌اند - در حالی که در پوشه اون پروژه هستید، می‌تونید دستور زیر رو اجرا کنید:$ git config --listاین دستور تمام تنظیماتی که در حال حاضر به پروژه اعمال شده‌اند، شامل تنظیمات سراسری و محلی رو لیست می‌کنه. این خروجی می‌تونه چیزی شبیه به این باشه:1. core.autocrlf=true2. core.fscache=true3. color.diff=auto4. color.status=auto5. color.branch=auto6. color.interactive=true7. help.format=html8. http.sslcainfo=[PATH]9. diff.astextplain.textconv=astextplain10. rebase.autosquash=true11. credential.helper=manager12. filter.lfs.clean=git-lfs clean -- %f13. filter.lfs.smudge=git-lfs smudge -- %f14. filter.lfs.process=git-lfs filter-process15. filter.lfs.required=true16. user.name=francois17. user.email=francois.dupire@nerthusconsulting.be18. core.repositoryformatversion=019. core.filemode=false20. core.bare=false21. core.logallrefupdates=true22. core.symlinks=false23. core.ignorecase=true24. remote.origin.url=[REMOTE ORIGIN URL]25. remote.origin.fetch=+refs/heads/*:refs/remotes/orig\26. in/*27. branch.master.remote=origin28. branch.master.merge=refs/heads/masterاما مشخص نیست که هر کدام از این تنظیمات از کدام فایل تنظیمات آمده‌اند. می‌دانیم که user.name و user.email را در فایل تنظیمات سراسری تنظیم کرده‌ایم، ولی بقیه موارد مبهم هستند.اگر بخواهید بدانید که این تنظیمات از کجا خوانده می‌شوند، و شاید برخی را تغییر دهید، می‌توانید از فلگ --show-origin استفاده کنید$ git config --list --show-originاین دستور حالا همچنین محل فایل تنظیماتی که این تنظیمات را به وجود آورده، نشان می‌دهد:عالی! حالا می‌دانیم کدام سطح تنظیمات بر گزینه‌های ما تأثیر می‌گذارد، اگر نیاز به تغییر آن‌ها در هر زمانی داشته باشیم.سلام، گیت!بالاخره آماده‌ایم! بیایید این کار را انجام دهیم و معروف‌ترین “Hello World!” یا بهتر بگوییم “Hello, Git!” را اجرا کنیم! یک مخزن (repository) ایجاد می‌کنیم و تغییراتی را به آن اعمال می‌کنیم.اول از همه، یک دایرکتوری ایجاد می‌کنیم که تبدیل به مخزن ما خواهد شد و به آن دایرکتوری می‌رویم:$ mkdir getting-started-with-git$ cd getting-started-with-gitو حالا، اولین مخزن گیت خود را راه‌اندازی می‌کنیم:$ git initاین دستور خروجی زیر را تولید می‌کند:Initialized empty Git repository in /home/francois/getting-started-with-git/.git/ما یک مخزن گیت خالی راه‌اندازی کرده‌ایم. حالا دایرکتوری ما یک دایرکتوری دیگر به نام .git دارد. این دایرکتوری شامل تمام داده‌های متا است که برای پیگیری پروژه‌تان و انجام کنترل نسخه لازم است. دقیقاً همین دایرکتوری شامل فایل تنظیمات برای پروژه شما و همچنین تاریخچه تمام فایل‌ها و تغییرات متعهد شده است.به طور پیش‌فرض، شامل موارد زیر است:فایل تنظیمات شامل گزینه‌های پیکربندی است. فایل توضیحات شامل توضیحات مربوط به مخزن/پروژه برای یک صفحه وب مربوط به پروژه شما است. فایل HEAD شامل مرجع به شاخه (branch) فعلی است که روی آن قرار دارید. از آنجایی که ممکن است بدون دانش بیشتر درباره شاخه‌ها و نحوه عملکردشان کمی گیج‌کننده باشد، فعلاً روی این فایل تمرکز نمی‌کنیم و به فصول بعدی واگذار می‌کنیم.برخی از شبیه‌سازهای ترمینال همچنین ممکن است کلمه master را در پرانتز کنار مسیر فعلی نمایش دهند. master نام پیش‌فرض شاخه است. دوباره، ما زمان کافی برای صحبت درباره شاخه‌ها داریم، بنابراین فعلاً زیاد روی آن تمرکز نمی‌کنیم.خب، کمی ناامیدکننده است، هنوز نتوانسته‌ایم بگوییم “سلام”. بیایید حالا این کار را انجام دهیم. اول، یک فایل hello.txt با جمله “Hello, Git!” ایجاد می‌کنیم:echo &#34;Hello, Git!&#34; &gt; hello.txtحالا این دستورات رو اجرا می‌کنیم:$ git add hello.txt$ git commit -m &#34;Initial commit: sayin&#39; hello&#34;این باید خروجی‌ای شبیه به این داشته باشه:[master (root-commit) 00ccc8c] Initial commit: sayin&#39; hello 1 file changed, 1 insertion(+) create mode 100644 hello.txtاین یعنی فایل hello.txt با موفقیت به مخزن اضافه شده و اولین تغییر (commit) ما انجام شده است. ما با موفقیت جمله “Hello, Git!” رو وارد مخزن کردیم!همین بود! اولین تغییر ما که شامل فایل hello.txt هست ثبت شد! ما یک فایل ایجاد کردیم، اون رو به منطقه‌ی موقت (staging area) اضافه کردیم و این تغییر رو در مخزن محلی ثبت (commit) کردیم. این کار شامل دستورات و اصطلاحات زیادی بود که شاید آشنایی کامل باهاشون نداشته باشید.در فصل بعدی به طور دقیق‌تری به این دستورات و اصطلاحات نگاه می‌کنیم و هر کدوم رو با جزئیات توضیح می‌دیم. فعلاً کافیه بدونید که ما تغییرات فایل hello.txرو ثبت کردیم و این تغییر حالا در مخزن ما محفوظ شده.این مطالبی که خوندیم ترجمه مطالب فصل سوم کتاب بودن اگر که احساس میکنی نیازه که برای بهتر شدن نوشته ها و یا اگه ایده ای داری برای کتاب های بعدی یا هرچیزی میتونی کامنت بزاری نظرتو بهم بگی :) </description><category>README.md</category><author>README.md</author><pubDate>Sun, 15 Sep 2024 15:16:52 +0330</pubDate></item><item><title>آشنایی کامل با گیت: از مقدمات تا حرفه‌ای شدن قسمت ۱</title><link>https://virgool.ir/@readme.md/آشنایی-کامل-با-گیت-از-مقدمات-تا-حرفه-ای-شدن-قسمت-۱-umjsdyrhkbra</link><description>مقدمه:توی پست قبلی (پست قبلی) من اومدم یه توضیحاتی راجع‌به ترجمه کتاب Git Essentials: Developer&#39;s Guide to Git  دادم  و قراره که این کتاب رو هر فصلش رو که ترجمه میکنم اینجا منتشرش کنم. اگه میخوای بدونی کتابش چه و چه سر فصل هایی داره و یکم منو بشناسی ببینی قراره چی کار کنیم اینا چیزایی هستش که توی پست قبلی بهش اشاره کردم میتونی یه نگاهی به پست قبلی بندازی :)‌📚 اگه میخوای فایل PDF کتاب رو داشته باشی خودت بخونی میتونی از اینجا داشته باشیش. تقریبن ۲۰ یا ۳۰ درصد اول کتاب خیلی راجع‌به مقدمه و مباحث پایه ای داره میپردازه که فصل اول به اسم Introduction to Git  هستش و در فصل دوم که Source Code Management - SCM هستش من توی این پست میخوام که این دوتا فصل رو با هم منتشر کنم.1. Introduction to Git: کتاب «Git Essentials: Developer&#39;s Guide to Git» برای همه نوشته شده؛ از مبتدی‌ها تا حرفه‌ای‌های مهندسی نرم‌افزار، و هدفش اینه که شما رو با رایج‌ترین سیستم کنترل نسخه دنیا آشنا کنه. امروزه گیت (Git) تقریباً مترادف با سیستم‌های کنترل نسخه شده و یکی از ابزارهای پایه‌ایه که انتظار می‌ره هر توسعه‌دهنده‌ای اونو بلد باشه تا بتونه توی توسعه نرم‌افزار به خوبی کار کنه.خیلی وقت‌ها، توسعه‌دهنده‌ها با گیت آشنایی کامل ندارن، ولی به خاطر سادگی بعضی از بخش‌هاش، می‌تونن بدون اینکه دقیقن بفهمن چی داره می‌گذره، از اون استفاده کنن. این موضوع معمولاً باعث می‌شه که دائم دنبال دستورات  بگردن، توی StackOverflow و گوگل سرگردون بشن و آخر سرم وقتی جواب‌ها پر از اصطلاحات پیشرفته‌ است، سردرگم بمونن.این کتاب نیاز به هیچ تجربه قبلی با گیت نداره و برای همه زبان‌ها و سیستم‌عامل‌ها مناسبه. همه چیز رو از صفر تا صد پوشش می‌ده، از اینکه چرا سیستم‌های کنترل نسخه ضروری هستن و مبانی گیت، تا عملیات پیشرفته و بهترین روش‌ها. یه برگه تقلب (چیت‌شیت) PDF هم داره که همه این مطالب رو تو یه لیست جمع‌وجور از دستورات، وظایف و خطاهای رایج که توی کار روزمره باهاشون برخورد می‌کنید، جمع کرده.اگرچه گیت فقط مختص توسعه‌دهنده‌ها نیست، این کتاب توسط توسعه‌دهنده‌ها نوشته شده و بیشتر به درد افراد فنی می‌خوره. اما اگر اهل دست‌به‌کار شدن توی ترمینال (یا کنسول) هستید و دوست دارید گیت رو یاد بگیرید، شما هم خیلی خوش‌آمدید! بعد از خوندن این کتاب چی یاد می‌گیرید؟• آشنایی با سیستم‌های کنترل نسخه.• نصب و راه‌اندازی گیت روی کامپیوتر خودتون.• آشنایی با مفاهیم مرتبط با گیت.• یادگیری دستورات پایه و پیشرفته گیت.• توانایی همکاری روی یه مخزن گیت با شاخه‌ها، مخازن راه دور و مدل‌های مختلف شاخه‌بندی.• توانایی سازماندهی بهتر کارتون با گیت.• یادگیری راه‌های جلوگیری از اشتباهات و مشکلات رایج.در طول کتاب، با هم یه پروژه خیلی ساده درست می‌کنیم تا بتونیم کارکردهای گیت رو بهتر یاد بگیریم. نسخه نهایی این مثال توی گیت‌هاب هست، یه پلتفرم فوق‌العاده محبوب برای میزبانی پروژه‌های نرم‌افزاری و کنترل نسخه با گیت.ما از زبان جاوا برای ساخت یه ماشین حساب ساده استفاده می‌کنیم، اما دقیقاً همین مراحل برای هر نوع فایل یا زبانی که دارید، صدق می‌کنه. فرقی نداره کتاب فانتزی بنویسید و بخواهید تغییراتش رو پیگیری کنید یا نرم‌افزار بسازید - گیت به همون شکل به کار شما میاد.این کتاب طوری نوشته شده که از اول تا آخر بخونیدش، چون برای کسایی طراحی شده که خیلی با گیت آشنا نیستن یا تازه‌کارن. البته اگه فکر می‌کنید به یه بخش‌هایی مسلط هستید، می‌تونید اون فصل‌ها رو رد کنید.2.SourceCodeManagement-SCM:مدیریت کد منبع (Source Code Management) چیه؟یه سؤال خوب برای شروع اینه که: «مدیریت کد منبع چیه؟»مدیریت کد منبع در واقع فرآیند پیگیری و دنبال کردن تغییرات توی کدهای یه نرم‌افزار رو می‌گن. این نکته هم مهمه که بدونید «مدیریت کد منبع» و «کنترل نسخه» در اصل به یه چیز اشاره دارن. توی زمینه توسعه نرم‌افزار، با اصطلاحاتی مثل “SCM”، “VCS”، “Source Control”، “Version Control”، “Revision Control” و غیره به‌صورت متناوب برخورد می‌کنید که همشون به این مفهوم اشاره دارن.خود «کنترل نسخه» می‌تونه معنی گسترده‌تری داشته باشه - یعنی کنترل تغییرات یا نسخه‌های هر چیزی. یه کاربرد جالب از سیستم‌های کنترل نسخه اینه که تغییرات توی قوانین و مقررات یک کشور رو دنبال کنیم.توی سیستم‌های پیچیده، که حتی یه تغییر کوچیک می‌تونه تاثیر زیادی روی سایر بخش‌ها بذاره، دنبال کردن این تغییرات خیلی اهمیت داره. دونستن اینکه کی تغییرات رو انجام داده، همراه با یه مهر زمانی و یه نمای واضح از چی تغییر کرده، می‌تونه نحوه اجرای قوانین رو به کلی تغییر بده.چیز عجیبی نیست که قانون‌گذاران در حال بحث درباره پیشنهادهای قانونی اشتباه باشن و تازه بعد از هدر دادن کلی وقت بفهمن که دارن نسخه منسوخ شده رو بررسی می‌کنن، فقط به این خاطر که اسناد و تغییرات انجام شده توی اونا درست پیگیری نشده.همین نوع مشکل توی توسعه نرم‌افزار هم دیده می‌شه یه خط کد، یا حتی یه کاراکتر توی یک بخش، می‌تونه مشکلات زیادی رو توی بخش‌های مرتبط، یا حتی غیرمرتبط، به وجود بیاره.آدما می‌تونن کلی وقت صرف بحث، رفع اشکال و دیباگ کردن نرم‌افزار کنن و زمان ارزشمندشون رو از دست بدن، فقط به این خاطر که نمی‌تونن به راحتی به تغییرات برگردن و اونو به حالت قبلی برگردونن که باعث خراب شدن پروژه شده.موضوع این نیست که دنبال مقصر بگردیم و اون کسی که تغییر رو ایجاد کرده رو مقصر بشماریم - موضوع اینه که بتونیم به راحتی به عقب و جلو حرکت کنیم و بخش‌های نرم‌افزار رو به‌صورتی وصله‌کاری کنیم که به تیم اجازه بده به‌راحتی با هم ارتباط برقرار کنن و همکاری کنن.دقیقاً این جور سناریوها بود که منجر به ایجاد اولین سیستم مدیریت کد منبع در سال ۱۹۷۲ شد.مشکل واضح بود - تصور کنید یه سرور با کدهای تولیدی داریم و چند تا توسعه‌دهنده با ماشین‌های خودشون، که قبل از اضافه کردن ویژگی‌های جدید و رفع اشکالات، یه نسخه از کد رو از سرور دانلود می‌کنن.در بهترین حالت، هرکدومشون به نوبت روی یه فایل مشخص کار می‌کردن و تغییرات رو بدون اینکه خروجی برای سایر بخش‌ها تغییر کنه، با هم ادغام می‌کردن. توی این سناریوی خوشایند، فقط کافیه که تغییراتشون رو انجام بدن، فایل رو دوباره روی سرور آپلود کنن و کار تمومه. همه چی به خوبی پیش می‌ره، به شرطی که قبل از شروع به کار روی کد، هماهنگی کافی وجود داشته باشه.حالا یه سناریوی محتمل‌تر - چند نفر همزمان تغییراتشون رو روی همون فایل‌هایی که بقیه توسعه‌دهنده‌ها دارن روش کار می‌کنن، اعمال کنن.اون وقت چی می‌شه؟ توسعه‌دهنده‌هایی که روی همون فایل‌ها کار می‌کردن، بدون اینکه خودشون بدونن، وارد یه رقابت می‌شدن که در اون هرکی آخر از همه نسخه فایلش رو روی سرور آپلود کنه، برنده‌ست. در واقع، نسخه اون‌ها جایگزین فایل‌های موجود می‌شد و تغییرات توسعه‌دهنده‌های دیگه، که زودتر کارشون رو تموم کرده بودن، از بین می‌رفت.مشکلات اینجا چی بودن؟• یه توسعه‌دهنده داشت روی همون فایلی کار می‌کرد که یه نفر دیگه هم روش کار می‌کرد، بدون اینکه بدونه.• هیچ مکانیزمی وجود نداشت که جلوی جایگزینی تغییراتی که هم‌زمان انجام می‌شدن رو بگیره.این مشکلات باعث شد تا اولین سیستم مدیریت کد منبع به نام SCCS (سیستم کنترل کد منبع) به وجود بیاد. این ابزار اختصاصی رو مارک روکایند توی IBM در سال ۱۹۷۲ ایجاد کرد و پایه‌های سیستم‌های کنترل نسخه مدرن‌تر رو بنا نهاد.2. What is Git ?گیت چیست؟در طول زمان، سیستم‌های زیادی برای حل این مشکل طراحی شدند. یکی از معروف‌ترین این سیستم‌ها “گیت” (Git) است که توسط تعداد زیادی از توسعه‌دهندگان در سراسر جهان استفاده می‌شود.تاریخچه مختصر گیت: گیت در سال ۲۰۰۵ توسط “لینوس توروالدز” ایجاد شد. هدف از ساخت گیت، جایگزینی سیستم کنترل نسخه‌ای بود که در آن زمان برای مدیریت کدهای هسته لینوکس استفاده می‌شد. این سیستم اوپن سورس نبود و برای جامعه‌ای که روی هسته کار می‌کردند، مشکلاتی ایجاد می‌کرد. علاوه بر این، آن ابزار دیگر رایگان هم نبود.از آنجایی که هیچ سیستم کنترل نسخه دیگری نیازهای جامعه لینوکس را برآورده نمی‌کرد، توروالدز تصمیم گرفت سیستم خودش را بنویسد. ۱۰ سال پس از ایجاد گیت، توروالدز در مصاحبه‌ای درباره گیت و پیشرفتش در طول دهه گذشته صحبت کرد و توضیح داد که چرا گیت به وجود آمد و چه مشکلاتی باعث این تصمیم شدند.گیت چطوری کار میکنه؟گیت به عنوان یک سیستم کنترل نسخه توزیع‌شده شناخته می‌شود. برخلاف سیستم‌های کنترل نسخه مرکزی، یک سیستم کنترل نسخه توزیع‌شده تاریخچه تغییرات کد منبع را در یک مخزن مرکزی نگه نمی‌دارد، بلکه یک کپی از سیستم فایل را روی هر کامپیوتر توسعه‌دهنده نگه می‌دارد - یعنی هر توسعه‌دهنده‌ای که پروژه را کلون کرده باشد، تاریخچه کامل را روی هارد دیسک خود ذخیره کرده است.مزایا و معایبی برای استفاده از سیستم کنترل نسخه توزیع‌شده وجود دارد. مزایا بیشتر به این واقعیت مرتبط هستند که بیشتر عملیات‌هایی که در یک سیستم توزیع‌شده انجام می‌شود، محلی به اصلاح خودمون  لوکال هستند:• عملیات‌ها سریع هستند، به جز آن‌هایی که شامل تبادل با سرورهای دوردست می‌شوند. بیشتر عملیات‌هایی که انجام می‌دهید، روی سیستم شما به صورت لوکال خواهد بود. در پایان روز، هفته یا ماه، همه تغییرات را به سرورهای دوردست میتونیم پوش کنیم.• امکان کار بدون دسترسی به شبکه وجود دارد، بدون اینکه امکان تقسیم آن کار به واحدهای جداگانه و معنادار از بین برود.توسعه‌دهندگان می‌توانند اگر بخواهند چیزهای جدیدی امتحان کنند بدون اینکه روی دیگران تأثیر بگذارند، به‌طور خصوصی و محلی پیگیری کنند. این به شما اجازه می‌دهد خلاق باشید، خارج از چارچوب فکر کنید و چیزها را امتحان کنید، بدون اینکه کسی را به دردسر بیندازید. البته، از آنجا که همه چیز در نهایت در یک پروژه ادغام می‌شود، این بهانه‌ای برای نادیده گرفتن استانداردها و قواعد دیگران نیست.گیت این کار را با ایجاد دو منطقه انجام داده است - محلی و راه دور. منطقه محلی نیز دارای سه منطقه است: دایرکتوری کاری، ناحیه آماده‌سازی (Staging Area)، و مخزن محلی.  working directory و staging area and و local repositoryیک مخزن در واقع دایرکتوری‌ای است که گیت آن را زیر نظر دارد و تغییرات داخل آن را پیگیری می‌کند.وقتی روی کد کار می‌کنید، از دایرکتوری کاری شروع می‌کنید. معمولاً محتوای فایل‌ها را از طریق یک IDE تغییر می‌دهید و کد خود را اجرا می‌کنید. وقتی از تغییراتی که ایجاد کرده‌اید راضی بودید، می‌توانید فایل‌های تغییر یافته را به ناحیه آماده‌سازی اضافه کنید. ناحیه آماده‌سازی در واقع منطقه‌ای است که منتظر تأیید به‌عنوان تغییر است. قبل از تأیید، تغییرات مهر زمانی ندارند. وقتی یک فایل را به ناحیه آماده‌سازی اضافه می‌کنید، اگر دوباره آن را تغییر دهید، از حالت آماده‌سازی خارج می‌شود.شما می‌توانید فایل‌ها را چندین بار تغییر دهید، آن‌ها را به ناحیه آماده‌سازی اضافه کنید و سپس وقتی یک «گام» منسجم داشتید که می‌خواهید «ثبت» کنید، فایل‌ها را از ناحیه آماده‌سازی به مخزن محلی متعهد (Commit) کنید.مخزن محلی، نسخه محلی شما از مخزن راه دوری است که با افراد دیگر روی آن کار می‌کنید. وقتی یک نسخه پایدار دارید که از آن راضی هستید، می‌توانید تغییرات محلی خود را به مخزن راه دور یا همون ریموت  هم بهش میگیم بفرستید.علاوه بر این، نحوه عملکرد گیت به این شکل است که داده‌ها را به صورت عکس‌های فوری (snapshots) ذخیره می‌کند. به جای اینکه تغییرات را پیگیری کند، کل فایل‌ها و وضعیت کامل آن‌ها را به صورت کامل ذخیره میکنه. به این معنا که وقتی شما فایلی را تغییر می‌دهید و تغییرات را تعهد (commit) می‌کنید (یعنی آن را پایدار می‌کنید یا به عبارتی از آن عکس می‌گیرید)، وضعیت جدید ثبت و در کنار سایر فایل‌ها ذخیره می‌شود.اگر دوباره همان فایل را تغییر دهید و تغییرات را تعهد کنید، سه نسخه از آن فایل خواهید داشت: فایل اصلی، فایل با اولین تغییر، و فایل با دومین تغییر.در این سناریو، فایل ۱ هیچ‌وقت تغییر نکرده است. وضعیت آن در طول سه نسخه ثابت مانده است. با این حال، فایل ۲ چندین بار تغییر کرده و فایل ۳ یک بار بعد از نسخه ۱ تغییر کرده است.هر یک از این فایل‌ها اکنون تاریخچه‌ای مخصوص به خود دارند، و این تاریخچه از نسخه‌های مختلف پروژه عبور می‌کند.هر یک از این عکس‌های فوری (snapshots) یا وضعیت‌ها روی چیزی شبیه به یک “نوار زمانی” قابل دسترسی خواهند بود. می‌توانید به راحتی بین این نسخه‌ها به عقب و جلو بروید. این دقیقا مثل این است که اگر بخواهید یک قدم به عقب بردارید، بتوانید زمان را به یک عکس فوری قبلی برگردانید.و البته، شما محدود به پرش به نسخه‌های کامل هم نیستید. می‌توانید به تاریخچه فایل ۱ کمی عقب‌تر بروید، به وضعیت ۱ برگردید، اما دو فایل دیگر را در وضعیت خودشان در نسخه ۳ باقی بگذارید.این ویژگی می‌تواند تا حدی یک نقطه ضعف نیز باشد. وقتی صحبت از فایل‌های بزرگ باشد، داشتن کل تاریخچه تغییرات آن فایل‌ها می‌تواند فضای زیادی را مصرف کند. ممکن است در ابتدا این مسئله خیلی مهم به نظر نرسد، اما وقتی فایل‌های بزرگی با صدها تغییر ثبت‌شده توسط اعضای تیم دارید، این تاریخچه فایل بزرگ خواهد شد.حتی اگر فایل‌ها خیلی بزرگ هم نباشند، داشتن یک تاریخچه طولانی ممکن است زمان زیادی برای دانلود نیاز داشته باشد. البته با پیشرفت زیادی که در فناوری‌های ذخیره‌سازی و حافظه داشته‌ایم، فضای دیسک دیگر چندان مشکل بزرگی نیست.از طرف دیگر، سیستم‌های کنترل نسخه مختلف معمولاً به این شکل کل تاریخچه فایل‌ها را نگه نمی‌دارند. آن‌ها فقط تغییرات فایل‌ها را پیگیری می‌کنند. به‌عنوان‌مثال، اگر یک فایل ۱۰۰ خط داشته باشد و شما یک تغییر در خط ۵۰ ایجاد کنید، تنها همان تغییر در یک خط ثبت می‌شود و زمانی که آخرین نسخه را از سیستم دریافت می‌کنید، تغییر فقط به همان خط اعمال می‌شود و بقیه فایل بدون تغییر باقی می‌ماند.محبوبیت گیتتا سال ۲۰۱۹، گیت حدود ۷۰٪ از علاقه‌مندی‌های جستجو برای ۵ سیستم کنترل نسخه محبوب رو به خودش اختصاص داده. این به این معناست که منابع زیادی برای کمک به یادگیری و استفاده از گیت، به‌علاوه کمک‌های آنلاین از کاربران دیگه، در دسترس داریم.در واقع، در مقایسه با سیستم‌های کنترل نسخه مثل Mercurial و Subversion، گیت در سایت پرسش و پاسخ مشهور StackOverflow خیلی محبوب‌تره: ۱۲۵ هزار سوال درباره گیت در مقابل ۲۳ هزار سوال برای Subversion و ۸ هزار سوال برای Mercurial.یک تحلیل از محبوبیت سیستم‌های کنترل نسخه که توسط RhodeCode در سال ۲۰۱۶ منتشر شد، نشان‌دهنده جابجایی از Subversion به گیت در عصر امروز است.علاوه بر این، تا اوت ۲۰۱۹، گیت همچنین ۷۰٪ از مخازن میزبان رو برای استفاده‌های شخصی و عمومی به خودش اختصاص داده.در نهایت، پلتفرم مشهور GitHub، که برای نگهداری مخازن عمومی و خصوصی گیت استفاده می‌شه، در اواخر سال ۲۰۱۸ به تعداد ۱۰۰ میلیون مخزن رسید.این مطالبی که خوندیم ترجمه مطالب فصل اول و دوم کتاب بودن اگر که احساس میکنی نیازه که برای بهتر شدن نوشته ها و یا اگه ایده ای داری برای کتاب های بعدی یا هرچیزی میتونی کامنت بزاری نظرتو بهم بگی. </description><category>README.md</category><author>README.md</author><pubDate>Wed, 04 Sep 2024 17:27:07 +0330</pubDate></item><item><title>آغاز سفری به دنیای مهندسی نرم‌افزار: از اینجا شروع می‌کنیم!</title><link>https://virgool.ir/@readme.md/آغاز-سفری-به-دنیای-مهندسی-نرم-افزار-از-اینجا-شروع-می-کنیم-limcnq1d7ell</link><description>من کی هستم؟این اولین پست من در ویرگول است و تصمیم دارم پس از مدتی دوباره به نوشتن بپردازم، در حوزه‌ای که به اون علاقه زیادی دارم (مهندسی نرم‌افزار) و در حال حاضر هم به‌عنوان بک‌اند دولوپر در یکی از شرکت‌های بزرگ ایران مشغول به کار هستم.کار من در اینجا چیه ؟هدف من این است که دانش خود را در زمینه مهندسی نرم‌افزار به بالاترین سطح ممکن برسانم و آن را با دیگران به اشتراک بگذارم، چون معتقدم که در این حوزه هنوز جای پیشرفت بسیاری وجود دارد. (البته لازم به ذکر است که افراد بسیار حرفه‌ای و با تجربه‌ای همچنان در این حوزه فعالیت می‌کنند و بهترین‌ها را ارائه می‌دهند). مهندسی نرم‌افزار برای من از هر چیزی جذاب‌تر است؛ تصور کنید محصولی را توسعه داده‌اید که هزاران کاربر از آن استفاده می‌کنند و شما باید از این محصول مثل یک فرزند مراقبت کنید. واقعاً چه چیزی می‌تواند از این هیجان‌انگیزتر باشد؟ 😊چرا شروع به نوشتن کردم؟بعد از چند سال کار و تجربه تو حوزه نرم‌افزار، و دیدن اینکه چقدر کمبود نیروی حرفه‌ای داریم، تصمیم گرفتم که بیام و مطالب مهم و کلیدی توسعه نرم‌افزار رو به زبون فارسی و خیلی ساده و قابل فهم برای همه بیان کنم. خیلی از این مفاهیم واقعا ساده هستن، و اگه درست استفاده بشن، می‌تونن هر کسی رو به یه توسعه‌دهنده حرفه‌ای تبدیل کنن و کمک کنن که بهتر بفهمید دارین چیکار می‌کنید.مهندسی نرم‌افزار همون چیزیه که پشت همه نرم‌افزارهایی که ما هر روز ازشون استفاده می‌کنیم، قرار داره. از اپ‌های موبایل گرفته تا سایت‌های بزرگ و سیستم‌های پیچیده، همه‌شون نتیجه کار تیم‌هایی هستن که این مفاهیم و روش‌ها رو خوب یاد گرفتن و به بهترین شکل ازشون استفاده می‌کنن. این حوزه پر از ابزارها، روش‌ها و تکنیک‌های جالب و کاربردیه که یادگیریشون می‌تونه هم کار شما رو آسون‌تر کنه و هم کلی مهارت بهتون اضافه کنه.به همین دلیله که من تصمیم گرفتم بنویسم و دانش و تجربه‌هامو با بقیه به اشتراک بذارم. دلم می‌خواد به هر کسی که مثل خودم علاقه‌منده، کمک کنم که توی این مسیر بهتر پیش بره و بتونه از ابزارها و روش‌های مختلف استفاده کنه تا کاراییش رو ببره بالا. امیدوارم بتونیم با همدیگه تو این مسیر یادگیری قدم بزنیم و به پیشرفت جامعه توسعه‌دهنده‌های فارسی‌زبان کمک کنیم. 😊چه برنامه‌ای دارم؟می‌خواهم از پایه‌ترین ابزارهایی که هر روز از آن‌ها استفاده می‌کنیم شروع کنم، بر اساس منابعی که خودم مطالعه کرده‌ام. هدفم این است که محتوایی ساده و قابل فهم تولید کنم که برای اکثریت مفید باشد. از کجا شروع می‌کنیم؟برای شروع، تصمیم گرفتم با موضوع ساده‌ای مانند Git شروع کنم. کتابی که برای این منظور انتخاب کرده‌ام، &#34;Git Essentials: Developer&#39;s Guide to Git&#34; نوشته François Dupire است. این کتاب را به یکی از دوستانم پیشنهاد داده بودم و بعد به این فکر افتادم که چرا آن را با همه به اشتراک نگذارم تا با هم یاد بگیریم؟سرفصل‌های کتاب:در ادامه، فهرست سرفصل‌های کتاب را برای شما آورده‌ام تا بدانید چه موضوعاتی را با هم مطالعه خواهیم کرد:1. Introduction to Git  2. Source Code Management - SCM  3. Getting Started with Git  4. The Basics of Git  5. Branches  6. Remote Repositories  7. Branching Models - Strategies  8. Advanced Operations  9. Good/Bad Practices  هر کدام از این سرفصل‌ها به بخش‌های مختلف تقسیم می‌شوند که ما به ترتیب آن‌ها را بررسی خواهیم کرد. بخش‌های ابتدایی معمولاً کوتاه‌تر هستند و من آن‌ها را در یک پست منتشر خواهم کرد.نظرات شما؟در پایان، اگر ایده‌ای دارید یا کتاب خاصی مدنظر دارید که می‌خواهید با هم آن را مطالعه کنیم، خوشحال می‌شوم در کامنت‌ها پیشنهادهای شما را ببینم تا با هم جلو برویم! 😊</description><category>README.md</category><author>README.md</author><pubDate>Sun, 01 Sep 2024 14:49:29 +0330</pubDate></item></channel></rss>