# מבוא ל-GitHub השיעור הזה מכסה את הבסיסים של GitHub, פלטפורמה לאחסון וניהול שינויים בקוד שלך. ![מבוא ל-GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f947909b4f9d343e2a23778aa716ca6b9d71df7174ee5009ac.he.png) > איור מאת [Tomomi Imura](https://twitter.com/girlie_mac) ## חידון לפני השיעור [חידון לפני השיעור](https://ff-quizzes.netlify.app) ## מבוא בשיעור הזה נלמד: - איך לעקוב אחרי העבודה שלך במחשב - איך לעבוד על פרויקטים עם אחרים - איך לתרום לתוכנה בקוד פתוח ### דרישות מוקדמות לפני שמתחילים, יש לבדוק אם Git מותקן. בטרמינל הקלד: `git --version` אם Git לא מותקן, [הורד Git](https://git-scm.com/downloads). לאחר מכן, הגדר את הפרופיל המקומי שלך ב-Git בטרמינל: * `git config --global user.name "your-name"` * `git config --global user.email "your-email"` כדי לבדוק אם Git כבר מוגדר, ניתן להקליד: `git config --list` תצטרך גם חשבון GitHub, עורך קוד (כמו Visual Studio Code), ותצטרך לפתוח את הטרמינל (או: שורת הפקודה). גש ל-[github.com](https://github.com/) ופתח חשבון אם עדיין אין לך, או התחבר ומלא את הפרופיל שלך. ✅ GitHub הוא לא מאגר הקוד היחיד בעולם; ישנם אחרים, אבל GitHub הוא המוכר ביותר. ### הכנה תצטרך תיקייה עם פרויקט קוד במחשב המקומי שלך (מחשב נייד או PC), וגם מאגר ציבורי ב-GitHub, שישמש כדוגמה לאיך לתרום לפרויקטים של אחרים. --- ## ניהול קוד נניח שיש לך תיקייה מקומית עם פרויקט קוד ואתה רוצה להתחיל לעקוב אחרי ההתקדמות שלך באמצעות git - מערכת ניהול גרסאות. יש אנשים שמשווים שימוש ב-git לכתיבת מכתב אהבה לעצמך בעתיד. קריאת הודעות ה-commit שלך ימים, שבועות או חודשים לאחר מכן תאפשר לך להיזכר למה קיבלת החלטה מסוימת, או "לחזור אחורה" בשינוי - זאת כמובן אם כתבת הודעות commit טובות. ### משימה: יצירת מאגר וביצוע commit לקוד > צפה בסרטון > > [![Git ו-GitHub: יסודות](https://img.youtube.com/vi/9R31OUPpxU4/0.jpg)](https://www.youtube.com/watch?v=9R31OUPpxU4) 1. **צור מאגר ב-GitHub**. ב-GitHub.com, בלשונית המאגרים, או מסרגל הניווט בצד ימין למעלה, מצא את כפתור **new repo**. 1. תן למאגר שלך (התיקייה) שם. 1. בחר **create repository**. 1. **נווט לתיקיית העבודה שלך**. בטרמינל, עבור לתיקייה (המכונה גם ספרייה) שברצונך להתחיל לעקוב אחריה. הקלד: ```bash cd [name of your folder] ``` 1. **אתחל מאגר git**. בפרויקט שלך הקלד: ```bash git init ``` 1. **בדוק סטטוס**. כדי לבדוק את הסטטוס של המאגר שלך הקלד: ```bash git status ``` הפלט עשוי להיראות כך: ```output Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: file.txt modified: file2.txt ``` בדרך כלל פקודת `git status` תספר לך דברים כמו אילו קבצים מוכנים ל"שמירה" במאגר או אילו קבצים שונו וייתכן שתרצה לשמור את השינויים שלהם. 1. **הוסף את כל הקבצים למעקב** זה נקרא גם שלב הקבצים/הוספת קבצים לאזור ההמתנה. ```bash git add . ``` הפקודה `git add` עם הארגומנט `.` מציינת שכל הקבצים והשינויים שלך יתווספו למעקב. 1. **הוסף קבצים נבחרים למעקב** ```bash git add [file or folder name] ``` זה מאפשר להוסיף רק קבצים נבחרים לאזור ההמתנה כאשר אינך רוצה לבצע commit לכל הקבצים בבת אחת. 1. **בטל שלב לכל הקבצים** ```bash git reset ``` פקודה זו מאפשרת לבטל שלב לכל הקבצים בבת אחת. 1. **בטל שלב לקובץ מסוים** ```bash git reset [file or folder name] ``` פקודה זו מאפשרת לבטל שלב רק לקובץ מסוים בבת אחת שאינך רוצה לכלול ב-commit הבא. 1. **שמור את העבודה שלך**. בשלב זה הוספת את הקבצים לאזור שנקרא _staging area_. מקום שבו Git עוקב אחרי הקבצים שלך. כדי להפוך את השינוי לקבוע, עליך לבצע _commit_ לקבצים. כדי לעשות זאת, צור _commit_ עם הפקודה `git commit`. ה-commit מייצג נקודת שמירה בהיסטוריה של המאגר שלך. הקלד את הפקודה הבאה כדי ליצור _commit_: ```bash git commit -m "first commit" ``` זה מבצע commit לכל הקבצים שלך, עם ההודעה "first commit". להודעות commit עתידיות תרצה להיות יותר תיאורי כדי להעביר איזה סוג של שינוי ביצעת. 1. **חבר את מאגר ה-Git המקומי שלך ל-GitHub**. מאגר Git הוא טוב במחשב שלך, אבל בשלב מסוים תרצה שיהיה לך גיבוי של הקבצים שלך במקום כלשהו וגם להזמין אנשים אחרים לעבוד איתך על המאגר. מקום נהדר לעשות זאת הוא GitHub. זכור שכבר יצרנו מאגר ב-GitHub, כך שהדבר היחיד שצריך לעשות הוא לחבר את מאגר ה-Git המקומי שלך ל-GitHub. הפקודה `git remote add` תעשה בדיוק את זה. הקלד את הפקודה הבאה: > הערה, לפני שאתה מקליד את הפקודה, עבור לדף המאגר שלך ב-GitHub כדי למצוא את כתובת ה-URL של המאגר. תשתמש בה בפקודה למטה. החלף את ```https://github.com/username/repository_name.git``` בכתובת ה-URL של GitHub שלך. ```bash git remote add origin https://github.com/username/repository_name.git ``` זה יוצר _remote_, או חיבור, בשם "origin" שמצביע על מאגר ה-GitHub שיצרת קודם. 1. **שלח קבצים מקומיים ל-GitHub**. עד כה יצרת _חיבור_ בין המאגר המקומי למאגר ה-GitHub. בוא נשלח את הקבצים האלה ל-GitHub עם הפקודה `git push`, כך: > הערה, שם הסניף שלך עשוי להיות שונה כברירת מחדל מ-```main```. ```bash git push -u origin main ``` זה שולח את ה-commits שלך בסניף "main" ל-GitHub. 2. **להוסיף שינויים נוספים**. אם תרצה להמשיך לבצע שינויים ולדחוף אותם ל-GitHub, תצטרך להשתמש בשלוש הפקודות הבאות: ```bash git add . git commit -m "type your commit message here" git push ``` > טיפ, ייתכן שתרצה גם לאמץ קובץ `.gitignore` כדי למנוע מקבצים שאינך רוצה לעקוב אחריהם להופיע ב-GitHub - כמו קובץ הערות שאתה שומר באותה תיקייה אבל אין לו מקום במאגר ציבורי. תוכל למצוא תבניות לקבצי `.gitignore` ב-[.gitignore templates](https://github.com/github/gitignore). #### הודעות Commit שורת נושא מצוינת להודעת commit משלימה את המשפט הבא: אם ייושם, ה-commit הזה <שורת הנושא שלך כאן> לשורת הנושא השתמש בזמן הווה ובצורת ציווי: "שנה" ולא "שינה" או "משנה". כמו בשורת הנושא, גם בגוף (אופציונלי) השתמש בזמן הווה ובצורת ציווי. הגוף צריך לכלול את המוטיבציה לשינוי ולהשוות זאת להתנהגות הקודמת. אתה מסביר את ה"למה", לא את ה"איך". ✅ קח כמה דקות לגלוש ב-GitHub. האם תוכל למצוא הודעת commit ממש טובה? האם תוכל למצוא אחת מינימלית במיוחד? איזה מידע לדעתך הוא החשוב והשימושי ביותר להעביר בהודעת commit? ### משימה: שתף פעולה הסיבה העיקרית להעלאת דברים ל-GitHub הייתה לאפשר שיתוף פעולה עם מפתחים אחרים. ## עבודה על פרויקטים עם אחרים > צפה בסרטון > > [![Git ו-GitHub: יסודות](https://img.youtube.com/vi/bFCM-PC3cu8/0.jpg)](https://www.youtube.com/watch?v=bFCM-PC3cu8) במאגר שלך, נווט ל-`Insights > Community` כדי לראות איך הפרויקט שלך עומד ביחס לסטנדרטים קהילתיים מומלצים. הנה כמה דברים שיכולים לשפר את מאגר ה-GitHub שלך: - **תיאור**. האם הוספת תיאור לפרויקט שלך? - **README**. האם הוספת README? GitHub מספק הנחיות לכתיבת [README](https://docs.github.com/articles/about-readmes/?WT.mc_id=academic-77807-sagibbon). - **הנחיות לתרומה**. האם לפרויקט שלך יש [הנחיות לתרומה](https://docs.github.com/articles/setting-guidelines-for-repository-contributors/?WT.mc_id=academic-77807-sagibbon)? - **קוד התנהגות**. האם יש [קוד התנהגות](https://docs.github.com/articles/adding-a-code-of-conduct-to-your-project/)? - **רישיון**. אולי הכי חשוב, האם יש [רישיון](https://docs.github.com/articles/adding-a-license-to-a-repository/)? כל המשאבים הללו יועילו לקליטת חברי צוות חדשים. ואלו בדרך כלל הדברים הראשונים שתורמים חדשים מסתכלים עליהם לפני שהם בכלל מסתכלים על הקוד שלך, כדי להבין אם הפרויקט שלך הוא המקום הנכון עבורם להשקיע את זמנם. ✅ קבצי README, למרות שלוקח זמן להכין אותם, לעיתים קרובות מוזנחים על ידי מתחזים עסוקים. האם תוכל למצוא דוגמה לאחד שמתאר בצורה יוצאת דופן? הערה: ישנם [כלים ליצירת README טובים](https://www.makeareadme.com/) שאולי תרצה לנסות. ### משימה: מיזוג קוד מסמכי תרומה עוזרים לאנשים לתרום לפרויקט. הם מסבירים אילו סוגי תרומות אתה מחפש ואיך התהליך עובד. תורמים יצטרכו לעבור סדרת שלבים כדי להיות מסוגלים לתרום למאגר שלך ב-GitHub: 1. **פיצול המאגר שלך**. סביר להניח שתרצה שאנשים יבצעו _fork_ לפרויקט שלך. פיצול פירושו יצירת עותק של המאגר שלך בפרופיל ה-GitHub שלהם. 1. **שכפול**. משם הם ישכפלו את הפרויקט למחשב המקומי שלהם. 1. **יצירת סניף**. תרצה לבקש מהם ליצור _סניף_ לעבודה שלהם. 1. **מיקוד השינוי לאזור אחד**. בקש מהתורמים להתרכז בתרומות שלהם בדבר אחד בכל פעם - כך הסיכויים שתוכל _למזג_ את העבודה שלהם גבוהים יותר. דמיין שהם כותבים תיקון באג, מוסיפים תכונה חדשה ומעדכנים כמה בדיקות - מה אם תרצה, או תוכל ליישם רק 2 מתוך 3, או 1 מתוך 3 שינויים? ✅ דמיין מצב שבו סניפים הם קריטיים במיוחד לכתיבה ושחרור של קוד טוב. אילו מקרים אתה יכול לחשוב עליהם? > הערה, היה השינוי שאתה רוצה לראות בעולם, וצור סניפים גם לעבודה שלך. כל ה-commits שתבצע ייעשו על הסניף שאתה כרגע "נמצא" עליו. השתמש ב-`git status` כדי לראות באיזה סניף אתה נמצא. בוא נעבור על תהליך עבודה של תורם. נניח שהתורם כבר ביצע _fork_ ו-_clone_ למאגר כך שיש לו מאגר Git מוכן לעבודה במחשב המקומי שלו: 1. **צור סניף**. השתמש בפקודה `git branch` כדי ליצור סניף שיכיל את השינויים שהם מתכוונים לתרום: ```bash git branch [branch-name] ``` 1. **עבור לסניף העבודה**. עבור לסניף שציינת ועדכן את ספריית העבודה עם `git switch`: ```bash git switch [branch-name] ``` 1. **בצע עבודה**. בשלב זה תרצה להוסיף את השינויים שלך. אל תשכח להודיע ל-Git על כך עם הפקודות הבאות: ```bash git add . git commit -m "my changes" ``` ודא שאתה נותן ל-commit שלך שם טוב, לטובתך ולטובת מתחזק המאגר שאתה עוזר לו. 1. **שלב את העבודה שלך עם סניף ה-main**. בשלב מסוים סיימת לעבוד ואתה רוצה לשלב את העבודה שלך עם זו של סניף ה-main. ייתכן שסניף ה-main השתנה בינתיים, אז ודא שאתה מעדכן אותו לגרסה האחרונה עם הפקודות הבאות: ```bash git switch main git pull ``` בשלב זה תרצה לוודא שכל _קונפליקטים_, מצבים שבהם Git לא יכול _לשלב_ בקלות את השינויים, יקרו בסניף העבודה שלך. לכן הרץ את הפקודות הבאות: ```bash git switch [branch_name] git merge main ``` זה יביא את כל השינויים מ-main לסניף שלך, ובתקווה תוכל פשוט להמשיך. אם לא, VS Code יראה לך היכן Git _מבולבל_ ותוכל לשנות את הקבצים המושפעים כדי לציין איזה תוכן הוא המדויק ביותר. 1. **שלח את העבודה שלך ל-GitHub**. שליחת העבודה שלך ל-GitHub פירושה שני דברים. דחיפת הסניף שלך למאגר שלך ואז פתיחת PR, Pull Request. ```bash git push --set-upstream origin [branch-name] ``` הפקודה לעיל יוצרת את הסניף במאגר המפוצל שלך. 1. **פתח PR**. לאחר מכן, תרצה לפתוח PR. עשה זאת על ידי ניווט למאגר המפוצל ב-GitHub. תראה אינדיקציה ב-GitHub ששואלת אם ברצונך ליצור PR חדש, לחץ על כך ותועבר לממשק שבו תוכל לשנות את כותרת הודעת ה-commit, לתת לה תיאור מתאים יותר. כעת מתחזק המאגר שממנו פיצלת יראה את ה-PR הזה ו-_בתקווה_ יעריך ו-_ימזג_ את ה-PR שלך. עכשיו אתה תורם, כל הכבוד :) 1. **נקה אחריך**. נחשב כפרקטיקה טובה _לנקות_ לאחר שמיזגת בהצלחה PR. תרצה לנקות גם את הסניף המקומי שלך וגם את הסניף שדחפת ל-GitHub. ראשית, מחק אותו מקומית עם הפקודה הבאה: ```bash git branch -d [branch-name] ``` ודא שאתה עובר לדף GitHub של המאגר המפוצל הבא ומסיר את הסניף המרוחק שדחפת אליו. `Pull request` נראה כמו מונח מוזר, כי בעצם אתם רוצים לדחוף את השינויים שלכם לפרויקט. אבל המתחזק (בעל הפרויקט) או צוות הליבה צריכים לשקול את השינויים שלכם לפני שהם ממוזגים לענף ה-"main" של הפרויקט, כך שבעצם אתם מבקשים החלטה על שינוי מהמתחזק. בקשת משיכה היא המקום להשוות ולדון בהבדלים שהוכנסו לענף, עם ביקורות, הערות, בדיקות משולבות ועוד. בקשת משיכה טובה עוקבת פחות או יותר אחרי אותם כללים כמו הודעת commit. ניתן להוסיף הפניה לבעיה במעקב הבעיות, כאשר העבודה שלכם, למשל, פותרת בעיה. זה נעשה באמצעות `#` ואחריו מספר הבעיה שלכם. לדוגמה `#97`. 🤞נקווה שכל הבדיקות יעברו בהצלחה ובעלי הפרויקט ימזגו את השינויים שלכם לפרויקט🤞 עדכנו את הענף המקומי הנוכחי שלכם עם כל ה-commits החדשים מהענף המרוחק המתאים ב-GitHub: `git pull` ## איך לתרום לקוד פתוח ראשית, בואו נמצא מאגר (או **repo**) ב-GitHub שמעניין אתכם ושאליו תרצו לתרום שינוי. תרצו להעתיק את התוכן שלו למחשב שלכם. ✅ דרך טובה למצוא מאגרים שמתאימים למתחילים היא [לחפש לפי התגית 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/). ![העתקת מאגר מקומית](../../../../translated_images/clone_repo.5085c48d666ead57664f050d806e325d7f883be6838c821e08bc823ab7c66665.he.png) יש כמה דרכים להעתיק קוד. אחת הדרכים היא "לשכפל" את התוכן של המאגר, באמצעות HTTPS, SSH, או שימוש ב-GitHub CLI (ממשק שורת הפקודה). פתחו את הטרמינל שלכם ושכפלו את המאגר כך: `git clone https://github.com/ProjectURL` כדי לעבוד על הפרויקט, עברו לתיקייה הנכונה: `cd ProjectURL` ניתן גם לפתוח את כל הפרויקט באמצעות [Codespaces](https://github.com/features/codespaces), עורך הקוד המובנה של GitHub / סביבת פיתוח בענן, או [GitHub Desktop](https://desktop.github.com/). לבסוף, ניתן להוריד את הקוד בתיקייה מכווצת. ### עוד כמה דברים מעניינים על GitHub ניתן לככב, לעקוב ו/או "למזלג" כל מאגר ציבורי ב-GitHub. תוכלו למצוא את המאגרים שכיכבתם בתפריט הנפתח בפינה הימנית העליונה. זה כמו לשמור סימניה, אבל לקוד. לפרויקטים יש מעקב בעיות, לרוב ב-GitHub בלשונית "Issues" אלא אם צוין אחרת, שם אנשים דנים בבעיות הקשורות לפרויקט. ולשונית Pull Requests היא המקום שבו אנשים דנים ובודקים שינויים שנמצאים בתהליך. ייתכן שלפרויקטים יש גם דיונים בפורומים, רשימות תפוצה, או ערוצי צ'אט כמו Slack, Discord או IRC. ✅ הסתכלו סביב המאגר החדש שלכם ב-GitHub ונסו כמה דברים, כמו עריכת הגדרות, הוספת מידע למאגר שלכם, ויצירת פרויקט (כמו לוח Kanban). יש הרבה מה לעשות! --- ## 🚀 אתגר עבדו בזוגות עם חבר על הקוד אחד של השני. צרו פרויקט בשיתוף פעולה, מזלגו קוד, צרו ענפים, ומזגו שינויים. ## חידון לאחר ההרצאה [חידון לאחר ההרצאה](https://ff-quizzes.netlify.app/web/en/) ## סקירה ולימוד עצמי קראו עוד על [תרומה לתוכנה בקוד פתוח](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution). [דף עזר ל-Git](https://training.github.com/downloads/github-git-cheat-sheet/). תרגלו, תרגלו, תרגלו. ל-GitHub יש מסלולי למידה מעולים זמינים דרך [skills.github.com](https://skills.github.com): - [השבוע הראשון ב-GitHub](https://skills.github.com/#first-week-on-github) תמצאו שם גם קורסים מתקדמים יותר. ## משימה השלימו את [הקורס השבוע הראשון ב-GitHub](https://skills.github.com/#first-week-on-github) --- **כתב ויתור**: מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית נחשב למקור הסמכותי. למידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אנושי. איננו נושאים באחריות לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.