Git ו-GitHub מערך שיעור למרצה

מערך שיעור: Git ו-GitHub

משך: יום לימוד מלא — 6 שעות אקדמיות (270 דקות).

מטרת השיעור: הסטודנטים יבינו את המודל של Git (שלושה אזורים ו-Commit כתמונת מצב), יעבדו במחזור add → commit → push בביטחון, ויסיימו את היום עם פרויקט Python אמיתי ב-GitHub.

בסוף השיעור הסטודנטים צריכים:

  1. להסביר את שלושת האזורים ואת ההבדל בין add, commit ו-push.
  2. לנהל Repository מקומי: init, status, add, commit, log, diff ו-.gitignore.
  3. לחבר Repository ל-GitHub, לדחוף אליו, ולכתוב הודעות Commit טובות.

דגש קריטי: git status לפני כל פעולה, וCommit ≠ Push. מרבית התקלות של מתחילים נובעות משתי הנקודות האלה.

לא בסקופ (לפי הסילבוס): Branches, Merge, Pull Requests ו-Conflicts. אם נשאלים, לומר שזה יגיע בהמשך המסלול.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה: תיקיית project_final_v3_REALLY_FINAL10 דק'להציג תיקייה כזו על המסך. כולם מזדהים.
מושגים: VC, Repository, Commit, שלושה אזורים35 דק'ציור שלושת האזורים על הלוח, והוא נשאר כל היום. אנלוגיית התמונה הקבוצתית.
הגדרת git config + init15 דק'לוודא שכולם הגדירו שם ומייל. לבדוק עם --list.
הפסקה15 דק'
פקודות בסיס: status, add, commit, log, diff50 דק'פרויקט calculator. אחרי כל פקודה: git status, ולהצביע על הציור על הלוח.
.gitignore15 דק'__pycache__ מופיע, ואז נעלם. הדגמת סכנת add . עם קובץ “סיסמה”.
הפסקה15 דק'
GitHub: חשבון, Repository, remote, push45 דק'לפתוח חשבונות מראש אם אפשר. לטפל בבעיות אימות אחת-אחת.
הודעות Commit + משימת הסיכום60 דק'כל סטודנט מעלה את פרויקט הספרייה עם 5 Commits. המרצה עובר ובודק את ההיסטוריה באתר.
בדוק את עצמך10 דק'

דגשים להעברת השיעור

  • Git הוא מודל מנטלי, לא רשימת פקודות. כל פקודה מוצגת כ"תזוזה" בין האזורים על הלוח.
  • הכנה מוקדמת: לבקש מהסטודנטים לפתוח חשבון GitHub לפני השיעור. ביום עצמו, יצירת חשבונות (ואימות מייל) גוזלת זמן רב.
  • אימות: רוב התקלות יהיו כאן. Git Credential Manager פותח דפדפן ב-Windows וב-Mac. לוודא שזה עובד אצל כולם לפני המשימה. כגיבוי, להכין הסבר קצר על Personal Access Token.
  • Vim: מישהו ייתקע בו. לכתוב על הלוח Esc ואז :q!, ולהזכיר להשתמש ב--m.
  • סודות: לספר סיפור אמיתי על מפתח AWS שדלף ל-GitHub ונוצל תוך דקות. זה נחרט.
  • הודעות Commit: לעשות “Code Review” חי להיסטוריה של 2–3 סטודנטים (בהסכמתם) על המסך.
  • הרגל לשאר הקורס: מהיום כל תרגיל ב-Repository. בנושא OOP, הפרויקט ינוהל ב-Git מהשורה הראשונה.

מושגים

מושגהסבר קצר
Version Controlמערכת שמתעדת את היסטוריית השינויים בקבצים.
Gitמערכת VC מבוזרת שרצה מקומית.
Repositoryפרויקט + תיקיית .git עם ההיסטוריה.
Working Directoryהקבצים כמו שהם עכשיו בדיסק.
Staging Area / Indexהשינויים שנבחרו ל-Commit הבא.
Commit / Hashתמונת מצב עם הודעה / מזהה ייחודי.
HEADה-Commit הנוכחי (האחרון בענף).
Untracked / Modified / Stagedקובץ חדש / שונה / מוכן ל-Commit.
.gitignoreתבניות של קבצים ש-Git מתעלם מהם.
GitHubשירות לאחסון Repositories בענן.
Remote / originעותק מרוחק / הכינוי המקובל לראשי.
push / clone / pullשליחה ל-Remote / הורדת Repository / הורדת שינויים.
README.mdתיאור הפרויקט, שמוצג בעמוד הראשי ב-GitHub.

תרגיל חשיבה

שאלת פתיחה (לפני Staging): “שיניתי היום שלושה דברים בפרויקט: תיקנתי באג במחשבון, שיפרתי את ה-README, וגם הוספתי קובץ עם הערות אישיות. מחר מגלים שהתיקון שלי שבר משהו אחר. מה הייתי רוצה שתהיה האפשרות שלי?”

מהלך:

  1. לאסוף רעיונות: “לבטל את התיקון בלבד”, “לראות מה בדיוק שיניתי”.
  2. לשאול: “אם כל שלושת השינויים נשמרו כ’שמירה’ אחת, אפשר לבטל רק את התיקון?” לא. לכן כל שינוי לוגי צריך להיות Commit נפרד.
  3. לשאול: “אז איך בוחרים מה נכנס לכל שמירה?” זה בדיוק תפקיד ה-Staging Area.
  4. “ומה עם קובץ ההערות האישיות?” לא נכנס בכלל, ומכאן ל-.gitignore.

מה המרצה מראה בסוף: שלושה Commits נפרדים ב-git log --oneline, ואז את git show <hash> של Commit התיקון (מציג בדיוק מה השתנה בו). משפט סיום: “Commit טוב הוא שינוי אחד שאפשר להבין, לבדוק ולבטל לבד — ההיסטוריה היא תיעוד ההחלטות שלכם.”