קומיטים

קומיט זה גם שם הפעולה הכי חשובה בגיט וגם שם עצם המתאר את מצב הפרויקט ברגע מסוים. בואו ניצור פרויקט כדי לבחון כמה קומיטים - שהם המפתח להבנה של גיט.

1. יצירת פרויקט דוגמה

קורס זה אינו קורס בתכנות ולכן אני לא רוצה לקשור אותו לשפת תכנות מסוימת. נכון שרוב הזמן נעבוד בגיט כדי לנהל פרויקטי תכנות, אבל למעשה גיט יכול לעזור לנהל כל פרויקט שמורכב מקבצים (למרות שהוא יעיל במיוחד כשהקבצים הם קבצי טקסט, כמו קוד מקור של תוכנה). כל זה בא להגיד שבתור פרויקט דוגמה בחרתי לכתוב ספר מתכונים.

בתור התחלה יש לי בסך הכל שני מתכונים בספר ולכן אני שומר אותם בקבצים - קובץ אחד בשם vegan-tacos.md שיכיל מתכון לטאקוס טבעוניים וקובץ שני בשם chickpea-and-spinach-curry.md שיכיל מתכון לקארי חומוס ותרד.

אני פותח את תוכנת Github Desktop שהתקנו בשיעור הקודם ובוחר ליצור Repository חדש. בשם הריפוזיטורי אני כותב recipes, את כל שאר התיבות אני משאיר עם ערכי ברירת המחדל ולוחץ על הכפתור כדי ליצור את הפרויקט. במסך הראשי אני בוחר הפעם Open In VS Code כדי לפתוח את הפרויקט ב VS Code. שם אני יוצר את שני הקבצים.

בקובץ הראשון אני כותב:

Quick Vegan Tacos
==================

Ingredients:
- 1 can of black beans, drained and rinsed
- 1 cup of corn kernels (fresh or frozen)
- 1 avocado, diced
- 1/4 cup chopped cilantro
- 1/2 red onion, finely chopped
- 1 lime, juiced
- 1 tsp cumin
- 1/2 tsp chili powder
- Salt and pepper to taste
- 8 small corn tortillas
- Optional: salsa, hot sauce, vegan sour cream

Preparation:
1. In a bowl, combine the black beans, corn, avocado, cilantro, and red onion.
2. Add the lime juice, cumin, chili powder, salt, and pepper. Mix everything gently to combine.
3. Warm the tortillas in a pan or directly over the stovetop.
4. Fill each tortilla with the bean and avocado mixture.
5. Serve with salsa, hot sauce, or vegan sour cream as desired.

ובקובץ השני אני כותב:

Chickpea and Spinach Curry
===========================

Ingredients:
- 1 can of chickpeas, drained and rinsed
- 1 can of coconut milk
- 2 cups fresh spinach
- 1 onion, diced
- 3 cloves of garlic, minced
- 1 tbsp curry powder
- 1 tsp ground cumin
- 1/2 tsp turmeric
- 1/2 tsp chili flakes (optional)
- 1 tbsp olive oil
- Salt and pepper to taste
- Cooked rice or naan for serving

Preparation:
1. Heat the olive oil in a pan over medium heat. Add the diced onion and sauté until soft, about 5 minutes.
2. Add the garlic, curry powder, cumin, turmeric, and chili flakes (if using). Stir for about 1 minute until fragrant.
3. Stir in the chickpeas and coat them in the spice mixture.
4. Pour in the coconut milk and bring to a simmer.
5. Add the spinach and cook for 2-3 minutes until wilted.
6. Season with salt and pepper to taste.
7. Serve the curry over rice or with naan.

2. יצירת קומיט ראשון

בחזרה ל Github Desktop ואני יכול לראות את שני הקבצים שלי בתיבה בצד שמאל. לחיצה על כל אחד מהקבצים מראה לי את התוכן שלו בתיבה המרכזית.

בצד שמאל למטה של האפליקציה אני רואה שתי תיבות טקסט, אחת עם הכיתוב Summary ושניה גדולה יותר עם הכיתוב Description. זה המקום בו אני יוצר את הקומיט הראשון שלי. קומיט בגיט הוא "נקודת שמירה", זה בעצם עותק של כל הקבצים בפרויקט שאפשר יהיה תמיד לחזור אליו. אפשר לדמיין שיצירת קומיט זה כמו להעתיק את כל הפרויקט לתיקייה אחרת ולשמור אותה בצד. ה Summary יהיה שם התיקייה האחרת. זה תיאור קצר של מצב הפרויקט ברגע הקומיט, וה Description, שהוא אופציונאלי זה תיאור ארוך יותר. התיאורים האלה חשובים כי ככל שהפרויקט יגדל ויהיו מאות ואלפי קומיטים אנחנו נרצה להבין מה התוכן של כל קומיט. אני כותב ב Summary את המשפט:

My first 2 recipes

וב Description את המשפט:

Created recipes for vegan tacos and chickpea curry. Yummy

שימו לב שאחרי שכתבתי את הטקסט בתיבת Summary הכפתור Commit to main שנמצא מתחת לתיבת הפך כחול. אני לוחץ עליו כדי ליצור את הקומיט.

3. מה קרה לקבצים

אחרי לחיצה על הכפתור הכחול שני הקבצים נעלמו מהתיבה, אבל לא צריך להיבהל הם במקום בטוח.

נלחץ על כפתור History שנמצא בצד שמאל למעלה של המסך בדיוק מעל איפה שהיו שני הקבצים. שם אני רואה שתי שורות - הראשונה עם הטקסט Initial commit נוצרה אוטומטית על ידי גיט כשיצרתי את הפרויקט. אני לוחץ עליה ורואה שהיא כללה רק קובץ אחד בשם gitattributes. הוא לא חשוב כרגע ונדבר עליו בקורס ההמשך. יותר מעניין אותי הקומיט השני, זה הקומיט שיצרתי לבד עם הטקסט My first 2 recipes. כשאני לוחץ עליו אני רואה את שני קבצי המתכונים ואת הטקסט של כל אחד מהקבצים.

נשים לב שהתצוגה הגרפית קצת מטעה - במסך הגרפי כשאני לוחץ על קומיט אני רואה את השינויים שאותו קומיט הכניס לפרויקט, אבל למעשה כל קומיט בגיט כולל את כל הקבצים בפרויקט. במקרה שלנו הפרויקט כולל 3 קבצים, הראשון gitattributes, נכנס לפרויקט בקומיט הראשון ושני האחרים נכנסו לפרויקט בקומיט השני.

4. חזרה לנקודת שמירה

בואו נשבור קצת את הדברים כדי לראות איך קומיט מתפקד בתור נקודת שמירה. אני חוזר ל VS Code ומוחק את שלושת הקבצים בפרויקט. אני חוזר ל Github Desktop עובר לטאב Changes ואני רואה שם את שלושת הקבצים שלי עם אייקון אדום שמסמן שהם נמחקו.

לחצו כפתור ימני על אחד הקבצים ובחרו Discard Changes ולאחר מכן בדיאלוג שקופץ בחרו שוב Discard Changes. אנחנו רואים שהקובץ חזר ל VS Code ונעלם מרשימת השינויים באפליקציית Github Desktop. בחרו את שני הקבצים שנותרו באפליקציית Github Desktop ושוב לחצו כפתור ימני ו Discard Changes ונוכל לראות שכל השינויים נעלמו מהאפליקציה והפרויקט חזר לקדמותו ב VS Code.

5. עכשיו אתם

  1. שנו רק חלק מהשורות באחד מקבצי המתכונים. עברו ל Github Desktop וודאו שאתם רואים את השינוי. לאחר מכן בצעו Discard Changes כדי להחזיר את הקובץ למצבו הראשוני.

  2. הוסיפו מתכון שלישי ובצעו קומיט נוסף עם המתכון החדש. לאחר מכן מחקו את כל הקבצים מתוך סייר הקבצים של Windows וודאו שאתם מצליחים להחזיר אותם מתוך אפליקציית Github Desktop.

  3. מחקו לחלוטין את אחד משלושת המתכונים ובצעו קומיט חדש, כשהקובץ מסומן עם האייקון המחוק ברשימת השינויים ב Github Desktop. שימו לב שאחרי קומיט אנחנו כבר לא יכולים להחזיר את הקובץ באותו האופן - הקובץ לא מופיע ברשימת השינויים ולכן לא ניתן לבצע עליו Discard Changes. אל דאגה בשיעור הבא נראה איך לשחזר אותו.