PracticU

יצירת ענף branch חדש ב-git

בלי כתוביותעם כתוביות
PracticU › קורס Git ו-GitHub עם Visual Studio › יצירת ענף branch חדש ב-git
מילון מושגים:
ענף - קו פיתוח נפרד במערכת ניהול גרסאות, שמאפשר לעבוד על שינויים במקביל בלי לפגוע בקו הראשי.
Git - מערכת מבוזרת לניהול גרסאות של קוד, שעוקבת אחר שינויים ומאפשרת עבודה משותפת בענפים.
ריפוזיטורי - מאגר שמרכז את קוד המקור של פרויקט ואת היסטוריית השינויים שלו, לרוב מנוהל ב-Git.
GitHub - שירות ענן לאחסון מאגרי קוד מבוססי Git, המאפשר שיתוף פעולה, מעקב גרסאות וניהול פרויקטים.
שורת פקודה - ממשק טקסטואלי שבו מקלידים פקודות למערכת ההפעלה ומקבלים תגובה בטקסט, במקום להשתמש בעכבר.
קומיט - פעולה ב-Git ששומרת תמונת מצב של השינויים במאגר יחד עם תיאור. גם אישור סופי של שינויים במסד נתונים.

יצירת ענף branch חדש ב-git
ההרצאה מרחיבה את הקשר בין Git המקומי ל-repository ב-GitHub דרך ענפים: יוצרים branch חדש משני הכיוונים, מסנכרנים בין שני הצדדים, ומשווים בין ענפים גם באתר וגם בשורת הפקודה.
השלבים העיקריים
1. שני ענפים במקביל: ב-repository יש main (עם קבצי המטא-דאטה) ו-master (עם קבצי ה-SQL). אפשר להתקדם בשניהם בלי למזג. git status ו-git show-branch מראים באיזה ענף נמצאים, ו-git checkout מחליף ענף והקבצים בספרייה משתנים.
2. יצירת ענף ב-GitHub: בתפריט הענפים כותבים שם חדש (בדוגמה Price Plan Product) ויוצרים אותו מתוך main. הוא יורש את הקבצים של main.
3. הורדה למחשב: git checkout לענף החדש נכשל בהתחלה עם הודעה שאין התאמה. אחרי git pull המערכת מכירה אותו, ו-git checkout עובר אליו.
4. עבודה בענף: יוצרים קובץ select.sql עם שאילתה על Products ו-unit price שווה ל-9, ואז git add ., git commit -m "...", ואז git push -u origin <branch>. הקובץ מופיע בענף ב-GitHub.
5. ענף חדש מקומי: git branch <name> יוצר ענף חדש, כאן New Demo. כדי שיופיע ב-GitHub צריך git push -u origin <name>, ואז רענון באתר מציג את הענפים החדשים.
6. ענף שני עם שינוי שונה: בענף New Demo אותו קובץ נערך אחרת: טווח ערכים עם where unit price in. מבצעים add, commit ו-push.
7. השוואה ב-GitHub: בלשונית Compare בוחרים שני ענפים. האתר מציג את ההבדלים, שורה שנמחקה ושורה שנוספה, ומאפשר pull request שחבר צוות אחר בודק (review) לפני המיזוג, עם הערות.
8. השוואה ב-Git: git diff בין שני ענפים מציג אותם הבדלים. סדר הענפים קובע מה נחשב בסיס: ההפיכה מחליפה בין אדום לירוק.
9. שינוי נוסף: מוסיפים order by לפי product name ו-unit price, עושים add ו-commit. ההבדל לא מופיע ב-diff עד שמבצעים גם git push, כי ההשוואה היא מול מה שנמצא ב-remote.
שימו לב
- כשמנסים למזג ענפים שנערכו בזמנים שונים באותו קובץ, אי אפשר לקחת חלק מכאן וחלק מכאן אוטומטית. לבחור גרסה אחת, והשילוב דורש עבודה ידנית שתוצג בהמשך.
- גם אחרי commit השינוי נשאר מקומי עד ל-git push.
בסוף ההרצאה אפשר ליצור ענפים משני הכיוונים, לסנכרן אותם עם GitHub ולהשוות ביניהם.

פרקי ההרצאה: יצירת ענף branch חדש ב-git

  1. 00:00

    הקשר בין Git מקומי ל-GitHub

  2. 00:41

    שני הענפים main ו-master

  3. 02:42

    מעבר בין ענפים עם checkout

  4. 03:36

    יצירת ענף חדש ב-GitHub

  5. 05:30

    משיכת הענף עם git pull

  6. 06:47

    יצירת קובץ ו-commit בענף

  7. 08:08

    דחיפת הענף עם git push -u

  8. 10:01

    יצירת ענף מקומי עם git branch

תמלול ההרצאה: יצירת ענף branch חדש ב-git

הטקסט המלא של הדקות הראשונות בהרצאה «יצירת ענף branch חדש ב-git» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:18

    בעבודה שלנו מול ריפוזיטורי שונים במקרה הזה גיטאב שימו לב שכרגע בתוך הפרויקט שלנו בתוך הריפוזיטורי שיצרנו פרקטיקיו גיט יש לנו כרגע two branches שתי ענפים. מה משמעות הדבר?

  3. 00:35

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

  4. 00:52

    branches ראשון נקרא Main, ובתוך ה-Main עצמו נמצאים לי שלושת הקבצים הללו, המטא-דאטה שאותם יצרנו בעת יצירת הפרויקט. אני יכול לעבור לברנץ' אחר, מאסטר ושם נמצאים קבצי ההשקל כפי שיצרנו אותם.

  5. 01:08

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

  6. 01:32

    גיט סטטוס אז אני כרגע בתוך on-bridge-main. הנה ניתן לראות שאני כרגע בתוך המיין עצמו גם כשאני עושה git show branch אז הוא אומר לי כרגע אתה נמצא בתוך המיין עצמו ואם אני רוצה לראות את הקבצים שיש לי בתוך המיין אז הנה שלושת הקבצים שלושת קבצי מטה דאטה git ignore license וread me שאותם יצרנו בתוך המיין לעומת זאת אם אני אעבור לברנץ' אחר כיצד אנחנו עוברים לברנץ' אחר, לענף אחר.

  7. 02:07

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

  8. 02:24

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

  9. 02:42

    הפקודה עצמה נקראת צ'ק-אוט. צ'ק-אוט, תביא לי בבקשה את הברנצ' האחר. איזה ברנצ' אני רוצה? אני רוצה את מאסטר.

  10. 02:51

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

  11. 03:13

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

  12. 03:29

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

  13. 03:43

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

  14. 03:54

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

  15. 04:18

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

  16. 04:56

    הנוכחי שלי פרייס פלאן פרוגרם מתוך ברנץ' האב המיין קיבלתי אוטומטית את כל הקבצים שהיו בתוך המיין לפי הוורסיה שנמצאת בתוכם את כל הקבצים של הגיט איגנור license readme.md כלומר כל הקבצים שהיו בתוך המיין עצמו עכשיו קיבלתי אותם בתוך הפרייס פלאן פרוגרם בואו נראה כיצד הדברים באים לידי ביטוי אצלנו בתוך הקוד.

  17. 05:24

    אני נמצא כרגע בתוך המערכת גיט סטטוס, כרגע אני נמצא בתוך ברנץ' של מאסטר, ואם אני רוצה למשוך לעצמי ברנץ' נוסף גיט צ'ק אאוט, והפעם אני רוצה להביא את אותו פרייס פלן פרוגרם להתחבר אליו, גיט צ'ק אאוט פרייס פלן פרוגרם, did not match any files show in the git.

  18. 05:54

    כלומר, כרגע הוא לא רואה אותנו. בואו נעשה גיט פול על מנת לסנכרן את כל מה שיש לנו בתוך הרשת אלינו, כל מה שיש בענן לכאן. כרגע הוא לא הכיר בפקודה הקודמת מה זה אותו branch price plan program והוא נתן לי הודעה שהוא בעצם לא מכיר אותו did not match any files show in the git.

  19. 06:20

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

  20. 06:50

    touch.1.sql או נקרא לזה select.sql איזושהי פקודה בואו נפתח את אותו קובץ שיצרנו אותו ונכתוב בתוכו איזושהי פקודה רק בשביל שיהיה לנו אינדיקציה שאנחנו שולפים נתונים שווים לתשע שמרנו סגרנו רק בשביל שתהיה אינדיקציה רשמתי כאן את פקודת Select from Products where Unit Price שווה ל-9.

  21. 07:24

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

  22. 07:40

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

  23. 08:11

    זה והנה הוא אומר לי כרגע יש לך קומיט שהעלית אותו כרגע בתוך הריפוזיטורי אבל אם אתה רוצה לדחוף אותו לתוך הריפוזיטורי המאוחר, המרוחק, אז אתה צריך לעשות גיט פוש, לדחוף את הקובץ מינוס U, לאן?

  24. 08:31

    לאוריג'ן שלי, בעצם למחסן מרכזי המרוחק, ואת זה אנחנו רוצים להכניס אותו לתוך הברנץ' שאותו יצרנו, פרייס פלן פרוגרם. it push-u origin, origin, לא רשמנו אותו בצורה נכונה.

  25. 08:57

    עכשיו הוא מזהה לנו מהו אותו origin, מהו אותו repository מרוחק שהגדרנו אותו, ואליו אנחנו רוצים להוסיף את כל מה שיש לנו כרגע בתוך Price Plan Product, הוא מעתיק לשם את כל הקבצים.

  26. 09:12

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

  27. 09:25

    כרגע הם מתואמים במסוכנים ביניהם הברנדג' המקומי שלי שנקרא פרייס פלנד פרודקט והברנדג' המרוחק שנמצא בתוך הגיטאב שגם הוא נקרא פרייס פלנד פרודקט ניכנס בתוך הגיטאב נרפרש את הנתונים עצמם וניכנס בתוך רנדג' שעכשיו יצרנו והנה אנחנו יכולים לראות שכבר הסלקט שאותו אנחנו יצרנו פקודת הסלקט

  28. 09:50

    קובץ Select.SQL נמצא אצלנו כאן, מרופרש ונמצא בפנים. בואו נעשה כרגע את התהליך ההפוך. אני רוצה עכשיו כאן ליצור לעצמי ברנץ' חדש. איך אנחנו עושים זאת?

  29. 10:04

    גיט ברנץ', ניו דמו נקרא לו. יצרתי כאן את הברנץ', ניו דמו. איפה אני כרגע נמצא? גיט שואו ברנץ'.

  30. 10:15

    אז אני כרגע נמצא בברנץ' חדש שאותו יצרתי, ניו דמו וזה מה שהוא אומר לי שאני כרגע נמצא כאן בפנים אבל הניו דמו הזה לא מסונכרן לי עם המידע שנמצא למעלה שנמצא בתוך הרימוט כדי לעשות זאת אז אנחנו חייבים לכתוב את הגיט פוש לכתוב את גיט פוש לתוך האוריג'ן לדחוף את אוריג'ן למעלה לתוך האוריג'ן שזה בעצם הריפוזיטורי המרוחק

  31. 10:50

    ולתוכו אנחנו רוצים להוסיף את ה-new דמו שרק אותו שזה החטא יצרנו. סנכרון בין הברנץ' המקומי שלי ובין הברנץ' שנמצא בצורה מרוחקת. לאחר שעשיתי את הסנכרון, אני יכול לראות כאן ברנץ', show ברנץ', באיזה ברנץ' אני נמצא, ואני יכול גם לראות מהו הסטטוס שלו מבחינת העדכונים עצמם.

  32. 11:19

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

  33. 11:30

    לאן אני רוצה לעבור? לברנץ' החדש שאותו אנחנו יצרנו, שזה ה-New Demo. הנה, Switch to New Demo. נריץ כאן תגיד סטטוס, והוא נותן לי חיווי.

  34. 11:43

    אתה כרגע בתוך New Demo, וכרגע הברנצ' שלך, ניו דמו, מסונכרן עם מה שיש באוריג'ין ניו דמו. בואו נסתכל אם כרגע יש לי כבר ברנצ' נוסף. אז הנה אתם רואים שלפני שאני מרפרש, כרגע יש לי שלושה ברנצ'ים.

  35. 12:00

    מרפרש את המערכת, וברגע שאני מרפרש אותה אני מגלה שנוסף לי עוד שני ברנצ'ים נוספים. ניו דמו, פרייס פלן דמו, שנוספו לי כברנצ'ים נוספים.

  36. 12:15

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

לקורס המלא: קורס Git ו‑GitHub אונליין

ההרצאה הקודמת: בחירת branch ב-git

הרצאות קשורות מקורסים אחרים

  • יצירת Branch ב-Git
  • יצירת פרויקט חדש
  • יצירת פרויקט חדש ב-Eclipse
  • יצירת פרויקט חדש ב-React

קורסים נוספים במסלול

  • קורס מבוא ל-QA - מידע חשוב לבודק תוכנה
  • קורס פוסטמן - Postman - בדיקות לאתרי אינטרנט - API
  • קורס Robot Framework - בדיקות QA ממשק גרפי
  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium
  • קורס סלניום מתקדם - CI/CD - Continues Integration