Skip to content

this repo is for practicing. please fork this repo to you github account. in the end of practice please open a pull request to this repo with you student id and your name in the name and descritpion of pull request

Notifications You must be signed in to change notification settings

Bardiya-basafa/git-github-exercise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

git-github-exercise

this repo is for practicing. please fork this repo to you github account. in the end of practice please open a pull request to this repo with you student id and your name in the name and descritpion of pull request

تمرین دوم گیت و گیتهاب


هدف از این تمرین اشنایی بیشتر شما با گیت و گیتهاب هم چنین نحوه مدیریت پروژه های گروهی است

خلاصه کلی از روند تمرین

  • ابتدا یک fork از روی پروژه مشخص شده انجام میدهید
  • در قدم بعدی پروژه fork شده را در دستگاه خود clone کرده
  • در ادامه بر روی پروژه لوکال گیت رو تغییراتی که مشخص شده انجام خواهید داد
  • با انجام هرکدام از تغییرات شما باید پروژه fork شده را اپدیت کنید
  • در تمامی مراحل شما باید resolve conflicts انجام بدهید و از مراحل انجام ان عکس گرفته
  • در انتهای تغییرات روی پروژه لوکال و اپدیت کردن ریپوزیتوری گیتهاب شما باید برنچ مشخص شده pull request بزنید روی ریپو اصلی قرار داده شده

نکات مهم

  • شما در ادیتور vscode تمام تغییرات را انجام داده و تمام دستورات را اجرا کرده و از افزونه source control حتما استفاده کرده ( برای مشخص شدن branching شما بسیار مهم است اگر ادیتور دیگری استفاده میکنید از version control یا source control ان عکس بگیرید )
  • شما در هر مرحله اجرای دستورات از صفحه ترمینال خود عکس گرفته و تصویر از کل صفحه ادیتور باشد تا هم فایل اصلی هم برنچ های شما و هم صفحه ترمینال مشخص باشد
  • حتما حتما شما باید در مرحله انتهایی مانند جلسه برگزار شده از روی ریپوزیتوری گیتهاب خودتون روی برنچ پروژه اصلی pull request بزنید و حتما متن و پیام pulll request برابر شماره دانشجویی و اسم شما باشد در غیر اینصورت ممکن است نمره ای به شما تعلق نگیرد

  • اگر سورس کنترل یا ابزار بر روی vscode کار نمیکند میتونید از git log --all --graph استفاده کنید

  • از تغییراتی که در گیتهاب هم میدید حتما عکس بگیرید و همرو در قالب یک پی دی اف یا zip حتما حتما به ترتیب بزارید

  • هر برنچی که درست میکنید محتویات فایل اصلی رو پاک کنید اول بعد کامیت هارو بنویسید توش

  • کلیت تمرین حول برنچینگ و resolve conlict و collaboration هستش و متن کامیت ها و متن فایل اگر به مشکلی بخوره اهمیت چندانی نداره ولی ترتیب ها رعایت بشه و شماره کامیت ها برای هر برنچ رعایت بشه حتما

  • همچنین اگر در resolve conflict به مشکلی خوردید و نمیدنستید کدوم تغییر رو ادغام کنید برنچ اصلی تر اولیت قرار بدید


مراحل انجام تمرین

fork and clone

  1. ابتدا به ادرس پروژه اصلی رفته https://github.com/Bardiya-basafa/git-github-exercise
  2. ریپوزیتوری را fork کرده
  3. در صفحه گیتهاب خودتان ریپوزیتوری را بر روی دستگاه خودتون clone کنید

basic commits and branching

  1. در پروژه فقط یک فایل متنی وجود دارد و نیازی به اضافه کردن فایل جدید نیست و فقط با یک فایل کار خواهید کرد در این تمرین برای سادگی تمرین

  2. در این تمرین برای انجام هر کامیت و تغییرات فقط بر روی فایل اصلی به این صورت عمل میشود

  3. <number of the commit> from <your name or github user name>:<base branch name> /<feature branch name>

تمام تغییرات بر روی file.txt اضافه خواهد شد

یک نمونه مثال : کامیت اولی که شما روی برنچ main در دستگاه خود خواهید زد اینگونه خواهد بود

commit message = second commit from username:main
 file.txt content

FIRST COMMIT from bradiya-basafa:main
second commit from your-username:main
  1. شما در این مرحله سه کامیت روی برنچ مین خواهید زد تغییرات را پوش کرده

devlop branch

  1. در این مرحله از بعد از سه کامیت روی main برنچ develop را ساخته ودو کامیت خواهید زد(first and second) و سپس پوش کرده

  2. سپس به ریپوی گیتهاب خودتان رفته و دو کامیت از روی گیتهاب روی برنچ develop زده (third and forth) حتما حتما از گیتهاب تغییر داده باشید و عکس بگیرید

  3. سپس با توجه به مطالب گفته شده در کلاس تغییرات انجام شده روی develop را از روی گیتهاب به دستگاه خودتان وارد کنید و resolve conflicts کنید در هر مرحله resolve conflict تغییرات جدید تر را ادغام کنید

feature branch

  1. حال در این مرحله از روی کامیت دوم برنچ develop (با git log --all --graph هش کامیت را پیدا کنید ) برنچ feature را ساخته و دو کامیت روی این برنچ زده دقت کنید که به هیچ عنوان کامیت هارا پاک نکنید (روش برنچ روی هیستوری کامیت گفته شده)

  2. برنچ feature را پوش کرده و دو کامیت دیگر روی برنچ feature بزنید

  3. حال تغییرات یک کامیت قبل برنچ feature را به حالت staged برگردانده (راهنمایی : با کمک reset or checkout میتوان انجام داد)

  4. حال این تغییرات را ابتدا به کمک stash روی برنچ develop اعمال کرده و resolve conflict کرده ( تغییرات جدید اعمال شود incoming) و سپس روی برنچ feature برگشته و همیت تغییرات را فقط با کمک stash اعمال کرده و دوباره کامیت کنید

  5. در اخر هردو برنچ را اپدیت کرده و پوش کنید

rebase

  1. در این مرحله شما باید به روی برنچ feature رفته

  2. برنچ feature را rebase کنید به develop و resolve conflicts کنید

  3. درانتها دو کامیت روی هر دو برنچ زده و پوش کرده

  4. در این مرحله دوباره در صفحه گیتهاب یک کامیت روی برنچ feature زده و در دستگاه خودتون هم یک کامیت زده

  5. سپس تغییرات جدید را از ریپوی گیتهاب گرفته و با کمک fetch و merge و برنچ origin/feature اپدیت کرده و سپس پوش میکنید

pull request

  1. در این مرحله تمام تغییرات پوش شده باید باشد روی هردو برنچ گیتهاب و همه اپدیت باشند

  2. به تب pull requests رفته و یک pull request از feature به روی develop باز میکنید

  3. حتما توجه کنید هردو از ریپوزیتور خودتون باشه

  4. سپس resolve conflict کرده و مرج میکنید وfeature را delete میکنید

second pull request

  1. در انتها به pull requests رفته و با اسم خودتون و شماره دانشجویی از برنچ develop خودتون به برنچ main پروژه اصلی ای fork کردید pull request بزنید

  2. اسم و شماره دانشجویی خیلی مهم هستش و معیار اصلی تصحیح تمرین از اینجا هست و دیدن هیستوری کامیت شما

چند نمونه از هر اجرای دستور و نحوه اسکرین شات گرفتن از صفحه

image

image

About

this repo is for practicing. please fork this repo to you github account. in the end of practice please open a pull request to this repo with you student id and your name in the name and descritpion of pull request

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published