Github מאיפה מתחילים

המאמר הינו חלק מסדרת מאמרים על VSCode, Github, קוד וכן הלאה. המאמר הנוכחי מתמקד בפלטפורמה של Github, דרכים לתחילת עבודה וטיפים.

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

על Github וזה

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

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

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

אם לתאר זאת בקצרה, branch הוא ענף מרכזי שתחתיו יכולים להיות ענפים נוספים, ולפני שמבצעים שינוי בענף המקורי יש לבצע שינויים בתתי ענפים.

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

בשני המקרים ישנה אפשרות לעקוב ולבצע חזרה לאחור במקרה של בעיה.

מה זה Git

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

טיפ: לפי סקר שנערך בקרב מפתחים נמצא כי כמעט 92% מהם עובדים עם פלטפורמות Git כלשהן כאשר Github זוכה לפופולריות רבה.

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

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

מהו Github

אם כך מהו גיטהאב?

הפלטפורמה של גיטהאב מבוססת על שירות SaaS והיא למעשה מציעה שירות על גבי האפשרויות של מאגר Git, אך עם התאמות ושיפורים מתוך פלטפורמת Git עצמה.

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

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

ההבדל המהותי בין Git מקורי לבין Github הוא בממשק ופעולות שניתן לבצע, כלומר Git הוא ממשק שמצריך יותר Command Line מאשר גיטהאב.

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

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

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

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

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

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

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

  • פתיחת חשבון גיטהאב https://github.com/join
  • ביצוע התאמות ופעולות נוספות, כגון: יצירת Repo, יצירת Branch והגדרת Pull
  • התקנה והתאמת Github Desktop תחנה מקומית – מומלץ מאוד אך אופציונלי

סיור כללי בגיטהאב

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

טיפ: לפלטפורמה של Github ישנם שלושה סוגי חשבונות: חשבון אישי חינמי, חשבון אישי משודרג (בתשלום) וחשבון ארגוני.

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

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

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

מאגר משוכפל (fork) – מאגר שנמצא גם כן בגיטהאב אך משוכפל מתוך הפרויקט המקורי לחשבון אחר או למיקום אחר במאגר.

מאגר מקומי בתחנה (Local repositories) הממוקם על תחנה מקומית של כל חבר צוות ומכיל את הפרויקט והקוד, במונחי גיטהאב נקרא Cloning ולא מדובר בתאיור הנ"ל על מצב של GitHub Enterprise Server.

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

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

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

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

טיפ: במידה ויוצרים פרויקט חשוב מומלץ ליצור קובץ רישיון (licesne file)

ליצירת Repo נבחר באפשרות יצירת New Repository ולאחר מכן נמלא מספר פרטים נדרשים:

  • Owner – במידה וישנם מספר חשבונות יש לוודא שיוצרים repository בחשבון הנכון
  • שם repository
  • האם ציבורי או פרטי
  • האם ישנו צורך בקובץ Readme (עדיף כן לכלול)

טיפ: במידה ויוצרים Repository בחשבון מסוים ניתן להעביר אותו (transfer) אל חשבון אחר

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

האפשרות של Branching מאפשרת שמירת עותק מקורי של הפרויקט וע"י אפשרות זאת אנו מוודאים שהפרויקט המקורי מנוהל בצורה נכונה ע"י שמירת גרסאות, ולכן בכל יצירת Repository ישנו branch מסוג master אשר נוצר באופן דיפולטי אך ניתן לשינוי.

אם נקח את הדיאגרמה המוכרת של גיטהאב והשיום אל Bracnhing אפשר לתא ר אותה בקצרה:

  • ביצירת repository ישנו brance מסוג master
  • אנו יוצרים branch נוסף שנקרא feature
  • כל שינוי מתבצע אל feature לפני שהוא מבוצע אל branch

לצורך הענין, כמה פעמים יצרנו קובץ שנקרא test ולאחריו test1 ולאחריו test2 ולמעשה הוא מכיל את כל אותם שינויים כולל המקור.

יצירה או שינוי branch היא פשוטה והמצריכה את הפעולות הבאות:

  • בכל repository ישנה הגדרת branch עם דיפולט מסוג master
  • בבחירה של branch ניתן ליצור branch נוסף

איך Github מסייע

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

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

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

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

לסיכום

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

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

1 Response

  1. 11/09/2020

    […] עם הפלטפורמה של Github שמאפשרת לאנשי פיתוח לאחסן ולנהל את הפרויקט קוד במקום […]

מה דעתך?

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