Git ו־repository
project-final-v3-REAL
אליס ניהלה חנות אינטרנט קטנה ושמרה את האתר שלה בתיקייה בשם shop-final. כשביקשה מ־AI לעצב מחדש את התשלום, היא העתיקה אותה קודם וקראה להעתק shop-final-v2, אחר כך v3, ואחר כך final-REAL. כעבור שבועיים לקוח דיווח שקודי הנחה כבר לא עובדים. אליס פתחה את כל ארבע התיקיות ולא הצליחה להבין איזו מהן עבדה לאחרונה ומה בדיוק השתנה ביניהן. ואז המחשב הנייד שלה לא נדלק, וכל מה שהיה לה נמצא רק בו.
- Git יכול לרשום נקודות שמירה מכוונות: מה השתנה, מי שמר, מתי ולמה. הנושא Commit & push, בהמשך השיעור, מראה איך יוצרים נקודת שמירה.
- עותק של תיקייה לא יכול להראות אילו שורות השתנו או לאפשר לכם לזרוק רעיון מסוכן.
- אפשר להעתיק repository בהמשך לאתר כמו GitHub, כך שמחשב נייד מת הוא לא העותק היחיד.
- ההיסטוריה קבועה, ולכן לעולם אל תשמרו סיסמאות או מפתחות ב־repo.
עותקי תיקיות מוחלפים ב נקודות שמירה של Git
עשה ואל תעשה
- בדקו את ה־repository לפני כל סשן עם AI כדי לדעת מה מצב ההתחלה.
- בהמשך השיעור: מעתיקים את ה־repository ל־GitHub כדי שמחשב אחד לא יהיה העותק היחיד שלכם.
- אל תשנו שמות של תיקיות כהיסטוריית גרסאות.
- אל תשמרו מפתחות או סיסמאות ב־repository.
למה עותקים לא מספיקים
עותק של תיקייה מראה איך הפרויקט נראה אז. הוא לא יגיד לכם אילו שורות השתנו מאז יום שלישי, מי הוסיף כלל מוזר, ואיך כמה גרסאות קשורות זו לזו.
מהו repository
Git הוא כלי היסטוריה. דוגמה: תיקייה עם .git מוסתר היא repository; בלי זה, git status אומר "not a git repository." מפעילים אותו על תיקיית פרויקט, והיא הופכת ל־repository. הקבצים הרגילים שלכם הם עותק העבודה, ותיקיית .git מוסתרת שומרת את ההיסטוריה וההגדרות של Git. לא עורכים אותה ביד. Git לא מפרסם את הפרויקט ולא שולח אותו לשום מקום מעצמו. הוא כלי ההיסטוריה שיושב על המחשב שלכם. GitHub (או GitLab, Bitbucket) הוא שירות שמחזיק עותק ברשת, כך שאחרים יכולים לעשות clone, לבדוק ולפתוח pull requests.
בודקים לפני שה־AI נוגע בכלום
סוכן AI עורך כל תיקייה שהפעילו אותו בה. אם זו התיקייה הלא נכונה, או תיקייה ש־Git לא עוקב אחריה, השינויים נוחתים במקום שאי אפשר לבטל בו כלום. לכן בתחילת כל סשן שאלו את הסוכן שני דברים: באיזו תיקייה הוא נמצא, והאם Git מופעל שם. אחר כך בקשו שיראה מה השתנה מאז נקודת השמירה האחרונה. כמה שניות, וזה מה שגורם לנקודות שמירה לעבוד: אפשר לחזור רק למצב שידעתם עליו.
כלל אחד מהיום הראשון: סיסמה או מפתח ששמרתם ב־repository נשארים בהיסטוריה גם אחרי שמחקתם אותם. לעולם אל תשימו אותם שם.
הריצו git status ו־git rev-parse --show-toplevel בתיקיית הפרויקט שלי. תגידו לי באיזו משלוש התשובות אני נמצא: אין מאגר, נקי, או שינויים שלא נשמרו ב־commit. אם קבצים השתנו מאז ה־commit האחרון, הראו לי מה השתנה לפני שעושים עוד משהו.
עשה ואל תעשה
תעתיקו את התיקייה ותקראו לה final-v2
לפני שה־AI משנה משהו, שאלו אותו באיזה repository הוא נמצא ומה השתנה מאז נקודת השמירה האחרונה.
דוגמה
בדקו אם תיקיית הפרויקט שלי כבר Git repository: חפשו את התיקייה הנסתרת .git והריצו git status. אם לא, הסבירו מה git init יוצר ומה הוא משאיר כמו שהוא, והריצו אותו רק אחרי שאגיד כן. בסוף הראו לי את ה־status.
הדביקו את ההנחיות לסוכן מתוך תיקיית פרויקט. כשההנחיה אומרת "הפרויקט הזה", הכוונה לאפליקציה שבונים בתרגול או לאפליקציה שכבר יש לכם. עדיין אין פרויקט? קראו עכשיו והדביקו אחר כך, בתרגול.
אני בתיקיית הפרויקט שלי. תגידו לי אם Git פעיל כאן ואיך בדקתם. אם לא, הסבירו מה git init עושה ומה לא, אבל אל תריצו אותו עדיין.
לפני שאתם עורכים קבצים, אשרו באיזה repository אנחנו נמצאים, הראו את תיקיית השורש שלו ואת ה־status הנוכחי, והסבירו מה כל חלק ב־status אומר. אל תשמרו ואל תשנו שום דבר עדיין.
הראו לי את התיקייה הנסתרת .git בלי לפתוח או לערוך את מה שבתוכה. הסבירו במשפט אחד מה Git שומר שם ומה נשאר בעותק העבודה שלי.
צפו
Git צופה בתיקיית פרויקט וזוכר נקודות שמירה.