הפרויקט שלכם לא יגור יותר רק במחשב אחד. בונים אפליקציה קטנטנה, ולומדים לשמור אותה בענן, להמשיך לעבוד עליה מכל מחשב, ולחזור לכל גרסה ישנה שלה.
תשעה שלבים. כל שלב נבנה על הקודם, ולכן עובדים לפי הסדר. אחרי שלבים 4, 5 ו-7 יש עצירת אימות הבנה מול המורה, והניקוד של השלב נרשם רק אחריה.
| שלב | מה עושים | נקודות |
|---|---|---|
| 1 | פותחים חשבון GitHub | 10 |
| 2 | פרויקט HelloGit והכנת Android Studio | 10 |
| 3 | העלאה ראשונה של הפרויקט ל-GitHub | 15 |
| 4 | שינוי, commit ו-push, ואימות הבנה | 15 |
| 5 | שינוי באתר ו-pull למחשב, ואימות הבנה | 15 |
| 6 | clone: הפרויקט "במחשב אחר" | 10 |
| 7 | ענף זמני לשינוי זהיר, ואימות הבנה | 10 |
| 8 | יציאה מהחשבון וניקוי המחשב | 10 |
| 9 | הגשת הקישור ב-Classroom | 5 |
עד היום הפרויקט שלכם היה תיקייה במחשב אחד. אם המחשב התקלקל, הפרויקט נעלם. אם עבדתם בבית, הייתם צריכים להעביר קבצים בדיסק-און-קי או במייל. ואם שברתם משהו שעבד אתמול, לא הייתה דרך לחזור לגרסה של אתמול.
שני כלים פותרים את זה:
במשחק מחשב אתם שומרים לפני קרב קשה. אם הפסדתם, חוזרים לנקודת השמירה. Git עושה את זה לקוד. כל נקודת שמירה נקראת commit, ולכל אחת מצרפים משפט קצר שמתאר מה השתנה, כמו שם לשמירה במשחק. Git זוכר את כל השמירות, ואפשר לחזור לכל אחת מהן.
תיקיית פרויקט ש-Git שומר עליה נקראת repository, או בקיצור repo. בעברית: מאגר. זו תיקייה רגילה, שיש לה גם "מכונת זמן".
GitHub הוא אתר שמחזיק עותק של המאגר שלכם בענן, כמו Google Drive, אבל עם כל ההיסטוריה. אתם עובדים במחשב, ומדי פעם מסנכרנים עם הענן בשני כיוונים:
| מילה | מה זה | מהחיים |
|---|---|---|
repository | תיקיית הפרויקט, עם כל ההיסטוריה שלה | תיקייה עם מכונת זמן |
commit | נקודת שמירה עם תיאור | שמירה במשחק |
push | העלאת נקודות השמירה ל-GitHub | העלאת תמונות מהטלפון לענן |
pull | הורדת שינויים מ-GitHub למחשב | רענון הפיד כדי לראות מה חדש |
clone | הורדה ראשונה של כל המאגר למחשב חדש | התקנת משחק בטלפון חדש והתחברות לחשבון: כל ההתקדמות חוזרת |
branch | ענף: עותק צדדי לניסוי | טיוטה של פוסט: עובדים עליה בלי שאף אחד רואה |
merge | מיזוג הענף בחזרה לגרסה הראשית | פרסום הטיוטה כשהיא מוכנה |
Git הוא התוכנה במחשב ששומרת נקודות. GitHub הוא האתר שמחזיק אותן בענן. Android Studio יודע לדבר עם שניהם, כך שכמעט לא תצטרכו לצאת ממנו.
github.com/dana-dev. בחרו שם שלא תתביישו בו בעוד שלוש שנים, כשתשלחו אותו למעסיק או ליחידה בצבא.שמרו אותה במקום בטוח, לא על פתק ליד המחשב. מי שיש לו את הסיסמה יכול למחוק את כל הפרויקטים שלכם.
GitHub מחייב משתמשים שמעלים קוד להפעיל אימות דו-שלבי, ויבקש את זה מכם תוך כמה שבועות מפתיחת החשבון. תצטרכו אפליקציית אימות בטלפון. כשההודעה תופיע, עשו את זה עם המורה, ושמרו את קודי השחזור שתקבלו.
אתם מחוברים ל-GitHub באתר. קראו למורה לרישום 10 הנקודות.
צרו פרויקט חדש בשם HelloGit. הכול כרגיל: תבנית Empty Views Activity, שפה Java, Minimum SDK API 26, Build configuration language Groovy DSL.
ב-activity_main.xml מצאו את ה-TextView הקיים, ושנו את הטקסט שלו ל-"Hello GitHub!". הריצו ובדקו שהמשפט מופיע. זה כל הקוד שתכתבו היום.
Android Studio משתמש בתוכנת Git שמותקנת במחשב. ייתכן שבמחשב שקיבלתם היא עוד לא מותקנת. בודקים:
File > Settings.Git, ובחרו בצד את Version Control > Git.Path to Git executable. לא כותבים בו כלום, ולא מסמנים את Set this path only for the current project. רק מסתכלים על השורה שמתחת לשדה.אם בשדה כתוב באפור Auto-detected, ומתחתיו Git version is עם מספר, כמו בציור: Git מותקן, ו-Android Studio מצא אותו לבד. הטקסט האפור הוא לא משהו שצריך להקליד. לחצו OK ועברו לצעד הבא.
אם מתחת לשדה מופיעה הודעה ש-Git לא נמצא, ולידה קישור Download and Install: לחצו על הקישור. Android Studio יוריד את Git ויתקין אותו בעצמו. ההורדה לוקחת דקה או שתיים, ובזמן הזה רואים פס התקדמות בתחתית החלון. בסיום, ורק אז, לחצו על הכפתור Test שליד השדה: הוא בודק מחדש אם Git נמצא. וודאו שמתחת לשדה מופיע עכשיו Git version is עם מספר.
בצעד הבא כותבים פקודה בטרמינל. טרמינל שנפתח לפני ההתקנה לא תמיד יודע ש-Git קיים. File > Exit, ופתחו את Android Studio שוב, עם הפרויקט HelloGit.
לגרסה הראשית של הפרויקט קוראים main. במחשבים מסוימים Git קורא לה בשם הישן, master. כדי שכולם בכיתה יראו אותו דבר, מגדירים את זה פעם אחת.
בתחתית הסרגל השמאלי של Android Studio לחצו על סמל ה-Terminal (מלבן עם >_). בחלון שנפתח כתבו את השורה הבאה ולחצו Enter:
git config --global init.defaultBranch main
כתבנו פקודה ישירות ל-Git. זו הפעם היחידה במדריך שבה מקלידים פקודה "גלובלית", כלומר כזו שחלה על כל המחשב. היא לא מזיקה לאף אחד, ולכן מותר להשאיר אותה.
אם מופיעה הודעה כמו 'git' is not recognized: חזרו לצעד 2 וודאו שמתחת לשדה מופיע מספר גרסה. אם כן, סגרו ופתחו מחדש את Android Studio ונסו שוב. אם זה עדיין לא עובד, קראו למורה לפני שממשיכים.
File > Settings.GitHub, ובחרו בצד את Version Control > GitHub (שורה אחת מתחת ל-Git מהצעד הקודם).+ ובחרו Log In via GitHub....JetBrains IDE Integration: JetBrains היא החברה שבנתה את הבסיס של Android Studio ואת החיבור שלו ל-GitHub. לא צריך להירשם אליה או לפתוח שום חשבון נוסף. לחצו Authorize.OK.זה אומר שהתלמיד הקודם לא יצא מהחשבון. סמנו את החשבון שלו, לחצו - כדי להסיר אותו, ורק אז הוסיפו את שלכם. ספרו למורה.
האפליקציה מציגה "Hello GitHub!", ב-Settings > Version Control > Git מופיע מספר גרסה מתחת לשדה, וב-Settings > Version Control > GitHub מופיע החשבון שלכם בלבד. קראו למורה לרישום 10 הנקודות.
עכשיו הופכים את תיקיית הפרויקט למאגר, ומעלים אותו ל-GitHub. Android Studio עושה את שני הדברים בפעולה אחת.
בתפריט העליון לחצו VCS, ובחרו Share Project on GitHub:
בחלון שנפתח:
Repository name: HelloGitPrivate: לא מסומן. המאגר ציבורי, כדי שהמורה יוכל לראות אותו.Share by: החשבון שלכם. ודאו שזה באמת שלכם.Description: משפט קצר באנגלית, למשל My first GitHub practice.לחצו Share.
שם המאגר, התיאור, הודעות ה-commit ושמות הענפים: הכול באנגלית. כך עובדים מתכנתים בכל העולם, ועברית בשמות של ענפים וקבצים גם עלולה לגרום לתקלות. זה כלל לכל השנה, לא רק במדריך הזה.
ייפתח חלון Add Files For Initial Commit עם רשימת הקבצים. אל תשנו כלום. השאירו את ההודעה Initial commit ולחצו Add.
בפרויקט יש קובץ בשם .gitignore, ש-Android Studio יצר בשבילכם. הוא רשימה של מה לא לארוז: קבצים זמניים שהמחשב יוצר לבד בכל בנייה, והגדרות שמתאימות רק למחשב הזה. כמו שלא אורזים את המקרר כשנוסעים לטיול: במקום החדש כבר יש אחד.
אם קופץ חלון שמבקש Name ו-Email: כתבו את השם שלכם ואת המייל שאיתו נרשמתם ל-GitHub, ובטלו את הסימון ב-Set properties globally. אחר כך המשיכו.
אחרי כמה שניות תופיע בפינת המסך הודעה Successfully shared project on GitHub, עם קישור. לחצו עליו, או היכנסו לאתר GitHub ופתחו את המאגר HelloGit.
אתם אמורים לראות את תיקיות הפרויקט: app, gradle, וקבצים כמו build.gradle. היכנסו ל-app/src/main/res/layout/activity_main.xml ומצאו את "Hello GitHub!".
מעכשיו, בפרויקט הזה, במקום התפריט VCS מופיע תפריט בשם Git. כל הפעולות של המדריך נמצאות בו.
באתר GitHub, בכתובת github.com/שם-המשתמש/HelloGit, רואים את קובצי הפרויקט. הראו למורה את הדף לרישום 15 הנקודות.
זו הפעולה שתעשו הכי הרבה פעמים השנה: משנים משהו, שומרים נקודה, ומעלים אותה לענן. את כל הפעולות עושים ב-Android Studio. לאתר GitHub בדפדפן נכנסים רק כדי לבדוק מה הגיע לענן.
ב-activity_main.xml שנו את הטקסט ל-"Hello GitHub! My name is ..." עם השם שלכם, והוסיפו android:textSize="24sp". הריצו ובדקו.
שימו לב: שם הקובץ בעץ הקבצים ובלשונית למעלה צבוע עכשיו בכחול. כך Android Studio מסמן קובץ שהשתנה מאז נקודת השמירה האחרונה.
Ctrl+K, או בתפריט Git > Commit.... בצד שמאל ייפתח חלון Commit.activity_main.xml, מסומן. לחיצה כפולה עליו מראה מה בדיוק השתנה: משמאל הגרסה הקודמת, מימין החדשה.Add my name and bigger text.Commit (לא Commit and Push, את זה נעשה בצעד הבא בנפרד)."שינויים", "עדכון" או "asdf" לא יעזרו לכם בעוד חודש, כשתחפשו מתי שברתם משהו. הודעה טובה עונה על השאלה "מה השתנה?" במשפט קצר: "Add reset button", "Fix crash on empty name". כמו שם לשמירה במשחק: "לפני הבוס של שלב 3" עדיף על "שמירה 17".
שם הקובץ ב-Android Studio חזר לצבע רגיל: אין שינויים שלא נשמרו. אבל הנקודה עדיין רק במחשב.
איפה: אתר GitHub בדפדפןעברו לדפדפן, לדף המאגר HelloGit, ורעננו אותו (F5). פתחו את activity_main.xml: הטקסט שם עדיין הישן, כי עוד לא העליתם כלום.
Ctrl+Shift+K, או בתפריט Git > Push....Push.חזרו לדפדפן ורעננו את דף המאגר. ליד שם הקובץ מופיעה עכשיו ההודעה שכתבתם. עכשיו פתחו את ההיסטוריה: לחצו על הכפתור עם סמל השעון. אם אתם בתוך דף של קובץ, למשל activity_main.xml, הוא נקרא History, ומציג את ההיסטוריה של הקובץ הזה. בדף הראשי של המאגר הוא נקרא Commits, ומציג את ההיסטוריה של כל הפרויקט. בשני המקרים תראו את נקודות השמירה שלכם, כל אחת עם ההודעה שכתבתם.
באתר רואים את הטקסט החדש, ובהיסטוריה יש שני commits. עכשיו עברו את אימות ההבנה.
הסבירו מה קרה כאן. תלמיד עבד כל השיעור, עשה חמישה commits עם הודעות טובות, וסגר את המחשב. בבית הוא פתח את המאגר באתר GitHub, ולא מצא שם אף אחד מהשינויים של היום. מה הוא שכח? האם העבודה שלו אבדה? מה הוא צריך לעשות בשיעור הבא, ובאיזה מחשב?
דרישה חדשה. אתם עומדים לשנות משהו גדול במסך, ולא בטוחים שזה יעבוד. איך תשתמשו ב-commit כדי שתוכלו לחזור לגרסה שעבדה, ומתי בדיוק תעשו אותו?
בבית תעבדו על מחשב אחר, ובשיעור הבא תצטרכו להוריד את מה שעשיתם שם. כדי לתרגל את זה בכיתה, בלי מחשב שני, נשתמש באתר GitHub עצמו בתור "המחשב האחר".
HelloGit, היכנסו ל-app/src/main/res/layout/activity_main.xml.Edit this file) בפינה של תוכן הקובץ."Hello from home!".Commit changes..., כתבו הודעה (Change text from home), ובחרו Commit directly to the main branch. לחצו שוב Commit changes.עכשיו בענן יש נקודת שמירה שאין במחשב. ב-Android Studio הטקסט עדיין הישן.
Ctrl+T, או בתפריט Git > Update Project....Merge ולחצו OK.activity_main.xml. הטקסט הוא עכשיו "Hello from home!". הריצו ובדקו.ב-Android Studio הפעולה נקראת Update Project. מאחורי הקלעים היא עושה pull: מורידה מהענן את כל מה שחסר במחשב.
pull בתחילת העבודה, push בסוף העבודה. אם תתחילו לשנות קוד לפני pull, בזמן שבענן יש גרסה חדשה יותר, Git יצטרך למזג שתי גרסאות שונות של אותו קובץ. זה פתיר, אבל מבלבל ולוקח זמן. הרגל של חמש שניות בתחילת שיעור חוסך את זה.
הטקסט שנכתב באתר מופיע באפליקציה שרצה במחשב. עכשיו עברו את אימות ההבנה.
הסבירו מה קרה כאן. תלמידה עבדה בבית ועשתה push. בכיתה היא פתחה את הפרויקט שנשאר על המחשב מהשבוע שעבר, ומיד התחילה לשנות קוד, בלי pull. כשניסתה לעשות push בסוף השיעור, Android Studio סירב ואמר שבענן יש שינויים שאין אצלה. למה Git עוצר אותה? מה הייתה הדרך לחסוך את זה?
דרישה חדשה. מעכשיו תעבדו כל שבוע בשלושה מקומות: בכיתה, בבית, ולפעמים במחשב של סבתא. כתבו למורה את הסדר המדויק של הפעולות שלכם, מרגע שאתם מתיישבים מול מחשב ועד שאתם קמים.
במחשב שהפרויקט עוד לא נמצא עליו, למשל מחשב נייד אחר בכיתה, אין מה למשוך. צריך להוריד את כל המאגר בפעם הראשונה. לזה קוראים clone. כאן נדמה מחשב חדש על ידי הורדה לתיקייה חדשה.
File > Close Project. נפתח מסך הפתיחה של Android Studio.Clone Repository, או בתוך פרויקט: VCS > Get from Version Control....GitHub. מופיעה רשימת המאגרים שלכם. בחרו HelloGit.Directory בסוף הנתיב שנו את שם התיקייה ל-HelloGit2, כדי שלא תדרוס את המקורית.Clone. אם נשאלים אם לסמוך על הפרויקט, בחרו Trust Project.המחשבים הניידים בכיתה משותפים. כדי שה-commits שלכם יירשמו על שמכם ולא על שם התלמיד הקודם, מגדירים את השם והמייל בתוך הפרויקט בלבד. פתחו את ה-Terminal וכתבו, כל שורה ואחריה Enter (עם השם שלכם והמייל שאיתו נרשמתם ל-GitHub, בתוך המירכאות):
git config user.name "Dana Levi" git config user.email "dana.levi@gmail.com"
כדי לבדוק, כתבו git config user.name. אמור להופיע השם שלכם.
בשלב 2 השתמשנו ב---global, וזה היה בסדר כי ההגדרה לא אישית. כאן לא כותבים --global, כי במחשב משותף השם שלכם היה נרשם גם על העבודה של התלמיד הבא.
הפרויקט HelloGit2 פתוח, רץ, ומציג "Hello from home!", ו-git config user.name מחזיר את השם שלכם. קראו למורה לרישום 10 הנקודות.
עד עכשיו עבדתם ישר על main, הגרסה הראשית. רוב הזמן זה מה שתעשו. אבל כשאתם עומדים לנסות משהו שעלול לשבור את הפרויקט, עדיף לנסות אותו בצד. אם הניסיון מצליח, מעבירים אותו ל-main. אם לא, זורקים אותו, ו-main נשאר שלם.
main. לחצו עליו. (אם לא מוצאים: Git > Branches....)New Branch....try-color. ודאו ש-Checkout branch מסומן, ולחצו Create.בסרגל העליון כתוב עכשיו try-color: אתם עובדים בענף הצדדי.
הוסיפו ל-TextView את השורה android:textColor="#C62828", הריצו ובדקו שהטקסט אדום. עשו commit עם ההודעה Try red text.
ניסוי של דקה: לחצו על שם הענף בסרגל העליון, בחרו main ואז Checkout. הריצו. הטקסט שחור! השינוי קיים רק בענף. חזרו לענף try-color באותה דרך.
הניסיון הצליח. מעבירים אותו לגרסה הראשית:
main: שם הענף בסרגל העליון, main, Checkout.try-color, ואז Merge 'try-color' into 'main'.Ctrl+Shift+K), ובדקו באתר שהשינוי הגיע.try-color, Delete.מוחקים ענף רק אחרי שמיזגתם אותו ל-main ובדקתם שהכול עובד. ואם הניסיון נכשל? חוזרים ל-main ומוחקים את הענף בלי למזג. main לא נפגע בכלל.
הטקסט אדום באתר GitHub, ב-main, ונשאר רק ענף אחד: main. עכשיו עברו את אימות ההבנה.
הסבירו מה קרה כאן. תלמיד יצר ענף new-design, עבד בו שעה, עשה commit ו-push, וראה ב-GitHub שה-push הצליח. אבל כשפתח את האפליקציה בבית אחרי pull, העיצוב הישן חזר. איפה העבודה שלו? מה הוא לא עשה?
דרישה חדשה. בעוד שבוע תוסיפו לפרויקט הגמר מסך מסובך, שאתם לא בטוחים שיעבוד. תארו למורה את כל הצעדים, מיצירת הענף ועד מחיקתו, כולל מה תעשו אם אחרי שעתיים יתברר שהרעיון לא עובד.
המחשבים הניידים בכיתה עוברים מיד ליד, וכולם עובדים תחת אותו משתמש Windows. אם לא תצאו מהחשבון, התלמיד הבא יוכל להעלות קוד לחשבון שלכם, או למחוק בו דברים. זה כמו להשאיר את האינסטגרם שלכם פתוח בטלפון של חבר.
את ארבעת הצעדים עושים בסוף כל שיעור, ולפי הסדר. קודם מוודאים שהעבודה בענן, ורק אז מוחקים.
File > Settings, חיפוש GitHub, ובחירה ב-Version Control > GitHub.- (הסרה). הרשימה צריכה להיות ריקה.OK.Windows שומר עותק של פרטי ההתחברות גם מחוץ ל-Android Studio.
Credential Manager (בעברית: מנהל האישורים). פתחו אותו.Windows Credentials (אישורי Windows).Generic Credentials. כל שורה שמופיעה בה המילה github, למשל git:https://github.com: לחצו עליה, ואז Remove (הסר), ואשרו.github.Sign out.File > Close Project. במסך הפתיחה, ליד שם הפרויקט ברשימה, לחצו על שלוש הנקודות ובחרו Remove from Recent Projects.HelloGit ו-HelloGit2). בדרך כלל הן נמצאות ב-C:\Users\...\AndroidStudioProjects.הוא שמור ב-GitHub, אז לא מאבדים כלום. ובשיעור הבא תקבלו כנראה מחשב אחר, ושם תעשו clone חדש. עותק ישן שנשאר על מחשב הוא מתכון לבלבול: מישהו יפתח אותו ויעבוד על גרסה שכבר לא עדכנית.
בדיקה של המורה: ב-Settings של GitHub אין חשבון, במנהל האישורים אין שורה עם github, הדפדפן מנותק, ותיקיות הפרויקט נמחקו. 10 נקודות.
HelloGit והעתיקו את הכתובת מהשורה העליונה. היא נראית כך: https://github.com/dana-dev/HelloGit.המאגר ציבורי, ולכן המורה פותח את הקישור ורואה את כל הקבצים, ואת כל ההיסטוריה: מתי עבדתם, כמה commits עשיתם, ומה כתבתם בכל אחד. הודעות commit טובות הן חלק מהעבודה.
הקישור הוגש ב-Classroom, והמורה פותח אותו ורואה את הטקסט האדום. 5 נקודות.
מעכשיו זו השגרה בכל שיעור ובכל עבודה בבית. צלמו את הכרטיס או הדפיסו אותו.
--global (שלב 6).Ctrl+T) לפני שנוגעים בקוד.Ctrl+Shift+K), ובדיקה באתר.| פעולה | קיצור מקלדת | בתפריט |
|---|---|---|
| commit | Ctrl+K | Git > Commit... |
| push | Ctrl+Shift+K | Git > Push... |
| pull | Ctrl+T | Git > Update Project... |
| clone | VCS > Get from Version Control... | |
| ענפים | שם הענף בסרגל העליון, או Git > Branches... |
סמנו מה שהמורה אישר. הסימון נשמר בדפדפן שלכם בלבד.
הפרויקט שלכם בענן, ואתם יודעים להגיע אליו מכל מחשב. מהמדריך הבא, כל פרויקט מתחיל ב-Share Project on GitHub ומוגש כקישור.