مکمل قدرتمند گیت git flow

مهم نیست که با چه تکنولوژی و زبانی کار میکنید و یا چه سطحی دارید ، git جز مهم برنامه نویسی شماست و هر چه قدر که بیشتر مهارت کار با ورژن کنترل ها و گیت رو داشته باشید لذت برنامه نویسی براتون بیشتر میشه. امروز میخوام ابزار فوق العاده ای رو بهتون معرفی کنم که لذت کار با گیت رو بیشتر از قبل میکنه ُ، ابزاری به اسم git flow

اگر علاقه مند به سیستم های ورژن کنترل ( گیت ) هستید توصیه میکنم این مقاله رو هم مطالعه کنید:

https://virgool.io/@novonimo/بهترین-تمرین-های-گیت-wgjeggzbq1gj



گیت فلو
گیت فلو
به شکل بالا دقت کنید ، اسم هایی که سمت چپ میبینید برنچ هاییست که گیت فلو برامون میسازه‌ !

خوب گیت فلو چی هست و قراره چه جوری به ما کمک کنه ؟

سناریو معمول گیت به این شکل هست: وقتی با گیت شروع میکنید روی برنچ 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



همچنین مطالعه کنید:

https://virgool.io/iran-react-community/ریداکس-به-زبان-ساده-emxqh7w4gnpk
https://virgool.io/@novonimo/نظرسنجی-stackoverflow-2019-قسمت-۱-lxaujty1ftol


راه اندازی

کافیه به پوشه مورد نظرتون برید (از طریق ترمینال) و دستور زیر رو اجرا کنید:

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 میکنه

میبینید که با یه دستور چند تا دستور داره همزمان اجرا میشه و کار مارو راحت میکنه. به این ترتیب همه تغییراتی که ما میخواهیم داشته باشیم و میدیریت شاخه ها و ... به صورت خودکار انجام میشه!

این همه قدرت گیت فلو نیستش!
در صورتی که میخواهید با این ابزار قدرتمند بیشتر آشنا شید به داکیومنتش مراجعه کنید.



سایر مطالب من در ویرگول:

https://virgool.io/@novonimo/آموزش-مقدماتی-دارت-dart-قسمت-۱-vrd1jjuoble1
https://virgool.io/iran-react-community/ری-اکت-رو-قورت-بده-۱-u8t5ysweyxyj
https://virgool.io/JavaScript8/فوت-و-فن-برنامه-نویسی-functional-با-جاواسکریپت-ujucyxjfn0zw
https://virgool.io/iran-react-community/آموزش-مبتدی-react-native-همراه-با-مثال-از-صفر-تا-۱%DB%B0%DB%B0-قسمت-اول-cyqz5skqhuxv



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/