370 likes | 615 Views
آشنایی با GIT . پروژه اشتراک دانش تاک . معرفی . پروژه تاک اهداف دعوت به همکاری ارائه کننده سید احسان محمودی. سرفصل های وبینار . نگاهی اجمالی به مفاهیم اولیه نگاهی به تاریخچه معرفی git هدف وبینار ترغیب استفاده از مدیریت نسخه برای همگان جلسه اول مقدماتی
E N D
آشنایی با GIT پروژه اشتراک دانش تاک
معرفی • پروژه تاک • اهداف • دعوت به همکاری • ارائه کننده • سید احسان محمودی
سرفصل های وبینار • نگاهی اجمالی به مفاهیم اولیه • نگاهی به تاریخچه • معرفی git • هدف وبینار ترغیب استفاده از مدیریت نسخه برای همگان • جلسه اول مقدماتی • جلسه دوم مفاهیم پیشرفته تر • منبع اصلی کتاب Pro Git
چرا مدیریت نسخه • برای تولید نرم افزار حیاتی است • بدون مدیریت نسخه هیچ پروژه گروهی قابل انجام نیست • معمولاً برای پروژه های گروهی به کار می رفته • نیاز به پیکر بندی سرور بوده
پروژه های گروهی یا تک نفره • مدیریت نسخه معمولاً در پروژه های گروهی به کار می رفته • ساختار کلاسیک ابزارها • دردسر راه اندازی سرور • اما در پروژه های تک نفره هم به همان اندازه کاربرد دارد • برای بهتر فهمیدن git بهتر است که به عنوان یک ابزار کاملاٌ محلی و شخصی به آن نگاه شود.
عملکرد های اولیه مدیریت نسخه • Checkout/Update • آخرین نسخه • نسخه ها / بازبینی های قدیمی / مقایسه • Commit • Branching • Merging
انشعاب (Branching) • خیلی از اوقات لازم است که تغییرات از هم مجزا باشند • کار روی دوقسمت کاملاً متفاوت • تغییرات عمده در کد • آزمایش روش های مختلف
سیر تکاملی مدیریت نسخه 1- • روش کاملاً ابتدایی • Rcs • کاملاً محلی (Local)
مدل Client-Server • اکثر ابزارهای کلاسیک مدیریت نسخه • CVS • VSS • Subversion
مشکلات مدل Client-Server • کاملاً متکی به سرور • اگر سرور دچار مشکل شود همه اطلاعات از بین میرود ( تاریخچه) • نیاز به راه اندازی سرور • دسترسی روی اینترنت درسر ساز • کار کردن Offline سخت است
Gitبرای یک نفر بخش دوم
مدل تک نفره • Git به عنوان یک ابزار مدیریت نسخه محلی (Local) • اکثر دستورات Git به شکل محلی اجرا می شوند • این تصور به فهم بهتر Git کمک می کند
نحوه نگهداری - تغییرات • در ابزارها کلاسیک • به ازای هر تغییر تنها تفاوت ها نگه داری می شود
نگه داری تغییرات - Snapshots • در Git در هر نسخه تمام فایل نگه داری می شود. • هر فایلی که تغییر نکرده باشد، یک نشانگر به نسخه قبلی را نگه می دارد
رشته جادویی Git • به ازای هر snapshot یک رشته به عنوان نشانگر تولید می شود • SHA-1 • محتوای فایل ها • زمان تهیه • کاربر • عدد 40 رقمی مبنای 16 • 24b9da6552252987aa493b52f8696cd6d3b00373
شروع کار • نصب در ویندوز و لینوکس • ویندوز msysgit • تنظیمات اولیه • نام کاربری و ایمیل • پایان دهنده خط ها ( ویندوز و لینوکس) gitconfig --global user.name "Your Name" gitconfig --global user.emailyou@example.com gitconfig --global core.autocrlf true
دستورات اولیه • برای کار بسیار ساده با Git به چهار دستور ساده نیاز دارید • gitinit : برای ایجاد یک Repository • git add برای فرستادن فایل به staging • git commit • git checkout
انشعاب • انشعاب (Branching) • هر Snapshot یک نشانگر به Snapshot قبلی خود دارد
انشعاب - branch • Head , Master git branch test
انشعاب -checkout • دستور checkout دو کار انجام می دهد • فایل های جاری را با محتوای انشعاب جایگزین می کند • نشانگر HEAD را جابجا می کند git branch testing git checkout testing
کار در یک انشعاب #on branch testing git commit
بازگشت به انشعاب git checkout master
ادغام – Merge • دستور git merge <other branch> • ابتدا سعی می کند که در میان اجداد دو انشعاب، یک Snapshot مشترک پیدا کند • اگر نسخه حاضر از اجداد مستقیم انشعاب دیگر باشد ، کار راحت است و فقط نشانگر جابجا می شود. (Fast Forward) • در غیر این صورت نزدیکتر نیای مشترک را پیدا کرده و سعی می کند آنها را با هم ادغام کند. • اگر موفق نشد فایل ها را تغییر داده و از کاربر می خواهد که به شکل دستی این کار را انجام دهد
Fast Forward git checkout master git merge hotfix در این صورت Fast forward اتفاق می افتد
مشاهده تاریخچه • دستور git log • تاریخچه تغییرات در این انشعاب را نمایش می دهد • دستور git diff • تغییرات فایل ها نسبت به staging و یا Head و یا هر نسخه دلخواهی نمایش می دهد
gitبرای همه بخش سوم
کار گروهی • در git همه کسانی که به Repository دسترسی دارند همه تغییرات دیگران را می توانند دریافت کنند. • هر git می تواند تعداد دلخواهی از gitهای دیگر را به عنوان remote (فامیل دور!) ثبت کند. • بعد از آن می توانید به تبادل sanpshot ها بپردازید
دستورات کار با remote • git remote add یک فامیل دور به repository اضافه می کند • git fetch تغییرات را از فامیل دور دریافت می کند • این تغییرات به صورت یک branch با اسم خاص ذخیره می شوند • مثلاً origin/master • حالا برای این که انشعاب نهایی را داشته باشید باید با آن ادغم انجام دهید • مثلاً git merge • دستور git pull این دو کار را همزمان انجام می دهد
دستور فرستادن • git push انشعاب حاضر را برای فامیل دور می فرستد. • این دستور تنها به صورت Fast forward کار می کند • یعنی اگر فامیل دور نسخه متفاوتی از شما داشته باشد، اجازه فرستادن را نمی دهد
نکته های استفاده از git • خیلی زیاد انشعاب کنید و خیلی سریع ادغام • برای کارهای تک نفره هم از gitاستفاده کنید • برای شروع لازم نیست همه دستورات را حفظ باشید • در صورت آشنایی با مفاهیم، یک جستجوی ساده برای هر کار کافی است • سایت هایی که سرویی مجانی gitمی دهند • Githup • Bitbbucket.org • ….
جلسه بعدی • پروتکل های ارتباطی • عمل گر های پیشرفته تر (rebaseو ... ) • روال های کاری برای پروژه های مختلف • git به عنوان یک ساختار داده و فایل سیستم • نوشتن hook • …