مهم نیست که با چه تکنولوژی و زبانی کار میکنید و یا چه سطحی دارید ، git جز مهم برنامه نویسی شماست و هر چه قدر که بیشتر مهارت کار با ورژن کنترل ها و گیت رو داشته باشید لذت برنامه نویسی براتون بیشتر میشه. امروز میخوام ابزار فوق العاده ای رو بهتون معرفی کنم که لذت کار با گیت رو بیشتر از قبل میکنه ُ، ابزاری به اسم git flow
اگر علاقه مند به سیستم های ورژن کنترل ( گیت ) هستید توصیه میکنم این مقاله رو هم مطالعه کنید:
به شکل بالا دقت کنید ، اسم هایی که سمت چپ میبینید برنچ هاییست که گیت فلو برامون میسازه !
خوب گیت فلو چی هست و قراره چه جوری به ما کمک کنه ؟
سناریو معمول گیت به این شکل هست: وقتی با گیت شروع میکنید روی برنچ master هستید و در ادامه میتونید چندین برنچ مختلف برای خودتون بسازید ، مثلا برنچ update یا feature و توی اون branch ها کار کنید و وقتی بعد از اتمام کار هم merge میکنید و دوباره به master و یا development میرسید.
مشکلاتی که این بین پیش میاد:
اگه چندین نفر همزمان دارن روی یک پروژه کار میکنند یا زمانی که تعداد برنچ های کارتون زیاد میشه ، مدیریت و نگه داری گیت سخت میشه ! ممکنه جایی که کار میکنید یه قراردادهایی برای این کار داشته باشند و یا حتی یک نفر به عنوان git manager که کارش فقط کنترل گیت پروژه هست داشته باشند. اما با استفاده از ابزار گیت فلو میتونید خودتون به بهترین شکل، پروژه رو جلو ببرید.
سناریو کار گیت تو بیشتر شرکت ها به این شکل هست که:
شاخه master : که کدهای پروژه (در حال اجرا) قرار دارند و ممکنه همه بهش دسترسی نداشته باشند و طبق قرارداد هم کسی اجازه کامیت و پوش کردن بهش رو نداره !
شاخه develop : کار بر روی پروژه از اینجا شروع میشه و توسعه دهنده ها میتونن کدهاشون رو به این قسمت پوش کنند اما این همه ماجرا نیست. اگه قرار باشه ۵ نفر همزمان روی این شاخه کار کنند ممکنه conflict به وجود بیاد پس شاخه دیگه ای هم لازم داریم:
شاخه feature: فرض کنید نیما قراره رو login کار کنه و هادی روی home پس به راحتی میتونن هر کدوم شاخه های خودشون رو داشته باشند به این شکل که feature/login و feature/home . در نهایت وقتی کار تموم شد این شاخه با شاخه develop مرج میشه و در صورتی که لازم باشه بعدا با شاخه master هم merge میشه!
شاخه hotfix: فرض کنید هادی و نیما دارن روی فیچرهایی که گفته شده کار میکنن که مدیر پروژه یهو متوجه یه مشکلی تو پروژه در حال اجرا ( که طبیعاتا روی شاخه master هست) میشه و میخواد سریعا این مشکل حل بشه. پس به یه توسعه دهنده دیگه میگه این موضوع رو به سرعت حل کن!
این جا شاخه hotfix به وجود میاد و بدون اینکه با فیچر ها دخالتی داشته باشه از مستر و یا دولوپ یه شاخه میگیره و شروع میکنه به رفع مشکل! بعد از اینکه مشکل حل شد با master و یا develop مرج میشه. هادی و نیما هم بدون مشکل به کار خودشون ادامه میدن !
شاخه release: هم که از اسمش مشخصه! مربوط به کنترل تگ های برنامه است و مثلا وقتی پروژه به جایی رسید که قراره release بشه یک تگ بهش میخوره مثلا 2.4.1 و ...
خوب میبینید که مدیریت این همه شاخه و merge کردنشون کار ساده ای نیست!
اینجاست که git-flow مثل سوپر من وارد میشه و کنترل ماجرا رو به دست میگیره. به این شکل که تو هر جایی از پروژه که باشید میتونید پروژتون رو با گیت فلو ادامه بدید !
همه شاخه هایی که لازم داریم و کار merge & delete شاخه های مختلف رو خود git-flow برای ما انجام میده !
به این شکل که وقتی راه اندازیش میکنید ، روی local خودتون این شاخه هارو میسازه و بعد با چند تا دستور ساده میتونید به راحتی شاخه fearture دلخواهتون رو بسازید!
ابونتو
sudo apt-get install git-flow
مک
brew install git-flow
ویندوز
چون ویندزو پکیج منیجر نداره پس لازم دارید که اول یک پکیج منیجر مناسب نصب کنید. برای اینکار میتونید به این لینک مراجعه کنید و سپس اقدام به نصب گیت فلو کنید:
wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh ./gitflow-installer.sh install <state> rm -rf gitflow gitflow-installer.sh
همچنین مطالعه کنید:
کافیه به پوشه مورد نظرتون برید (از طریق ترمینال) و دستور زیر رو اجرا کنید:
git flow init
دقت کنید که لازم نیست حتما پروژه تون قبلا گیت شده باشه ! و در صورتی که از گیت هم استفاده کرده باشید هیچ مشکلی پیش نمیاد!
اینجا ازتون سوالاتی در مورد اسم شاخه هایی است که میخواد بسازه میپرسه و در صورتی که همه رو enter بزنید نام های default رو براشون قرار میده.
حالا فرض کنید که نیما میخواد روی یه ویژگی جدید به اسم login کار کنه. کافیه که دستور :
git flow feature start login
رو اجرا کنه تا توی برنچ feature یه شاخه جدید به اسم login ساخته شه . این branch جدید به از به صورت خودکار از روی شاخه develop ساخته میشه !
دقت کنید دستورات گیت هم اینجا کاملا کار میکنند و در وقعا از همون دستورات مثل git branch و git checkout و هر آنچه که مربوط به گیت هست میشه استفاده کرد.
اما این همه قدرت گیت فلو نیست !!!
زمانی که feature جدید ما که اینجا مثلا login بود تموم شد کافیه که دستور زیر رو اجرا کنیم:
git flow feature finish login
کاری که این دستور انجام میده:
* شاخه جدید login رو با شاخه develop مرج میکنه
* شاخه feature رو remove میکنه
* به شاخه develop بر میگردونه یعنی checkout میکنه
میبینید که با یه دستور چند تا دستور داره همزمان اجرا میشه و کار مارو راحت میکنه. به این ترتیب همه تغییراتی که ما میخواهیم داشته باشیم و میدیریت شاخه ها و ... به صورت خودکار انجام میشه!
این همه قدرت گیت فلو نیستش!
در صورتی که میخواهید با این ابزار قدرتمند بیشتر آشنا شید به داکیومنتش مراجعه کنید.
سایر مطالب من در ویرگول:
Contact With me:
https://t.me/nimamohamadian
https://www.facebook.com/nimamohamadian89
https://twitter.com/Nima_Mohamadian
https://www.linkedin.com/in/nima-mohamadian-57ba63123/