דילוג לתוכן
New

DeepSeek V4.1 Flash free for 7 days: 10M tokens a day after a top-up of $10 or more. Until Nov 30.

How it works

מה זה GitHub? repositories, branches והפרויקט הראשון

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

מתחילים4 דקות קריאהמאת NotHoly

GitHub הוא אתר שבו אנשים שומרים, משתפים וסוקרים פרויקטי תוכנה. רוב הפרויקטים האלה מנוהלים ב-Git, כלי לניהול גרסאות שרושם כל שינוי בקבוצת קבצים. GitHub מחזיק repositories של Git ברשת, מוסיף ממשק web ונותן לצוותים pull requests, ‏issues ו-releases כדי לעבוד יחד על קוד.

בקצרה: Git הוא הכלי, ו-GitHub הוא אחד המקומות שבהם מארחים פרויקטי Git ודנים בהם.

Git ו-GitHub הם כלים נפרדים

Git רץ על המחשב שלך. אפשר להפוך כל תיקייה ל-repository ולתעד שינויים בלי חיבור לאינטרנט ובלי חשבון GitHub.

GitHub הוא שירות מקוון. הוא שומר עותקים של repositories של Git, מציג קבצים והיסטוריה בדפדפן ומוסיף יכולות כמו מעקב issues ו-pull requests. גם שירותים אחרים מארחים repositories של Git, כך ש-GitHub הוא מקום אחד שבו פרויקטי Git נמצאים.

חמישה מונחים שכדאי ללמוד קודם

  • Repository (repo): תיקיית פרויקט יחד עם כל היסטוריית השינויים שלה.
  • Commit: צילום שמור של שינויים, עם הודעה שמסבירה אותם.
  • Branch: קו נפרד של commits. עובדים על branch כדי שהקו הראשי יישאר יציב בזמן בדיקת רעיון.
  • Pull request: בקשה למזג commits מ-branch אחד לאחר, בדרך כלל אחרי שמישהו סוקר את ההבדלים.
  • Release: גרסה עם שם שהמתחזקים בחרו לפרסם, לרוב עם קבצים להורדה.

הדרך המהירה ביותר להבין את המילים האלה היא ליצור repository בעצמך.

תרגול Git על המחשב שלך

לא צריך GitHub כדי ללמוד את הבסיס. מתקינים Git מהאתר הרשמי git-scm.com, ואז בודקים את הגרסה המותקנת:

bash
git --version

במחשב Windows שעליו נבדק המאמר, הפקודה הדפיסה:

text
git version 2.49.0.windows.1

אצלך תופיע גרסה אחרת. בשלב הבא מגדירים את השם והאימייל ש-Git מצרף לכל commit, עם הערכים שלך:

bash
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

עכשיו יוצרים repository לתרגול עם שני branches ושני commits:

bash
mkdir security-learning-notes
cd security-learning-notes
git init
printf '# security-learning-notes\n' > README.md
git add README.md
git commit -m "Add README"
git switch -c add-glossary
printf -- '- DNS\n- HTTPS\n- hash\n- encryption\n' > glossary.md
git add glossary.md
git commit -m "Add glossary terms"
git branch

הרצת git branch על ה-repository הזה הדפיסה את זה:

text
* add-glossary
  master

הכוכבית מסמנת את ה-branch הנוכחי. ה-branch שמוגדר כברירת מחדל יכול להיקרא master או main, לפי הגדרות ה-Git שלך. ב-Windows, ‏Git עשוי להדפיס גם אזהרות על סיומות שורה. האזהרות האלה לא משנות את ה-commits.

העלאת הפרויקט ל-GitHub

מדריך Hello World של GitHub עובר על התהליך הזה בדפדפן. תפריטים ושמות כפתורים משתנים עם הזמן, אז אם המסך לא תואם לטקסט הזה, פועלים לפי המדריך הרשמי:

  1. יוצרים חשבון ב-github.com.
  2. יוצרים repository חדש בשם security-learning-notes. בוחרים ציבורי או פרטי.
  3. מוסיפים קובץ README.md עם משפט אחד שמתאר את הפרויקט.
  4. יוצרים branch בשם add-glossary.
  5. מוסיפים רשימה קצרה של מונחים ומבצעים commit לשינוי.
  6. פותחים pull request, קוראים את ה-diff וממזגים אותו.

שלב ה-pull request חשוב גם ב-repository אישי. תצוגת ה-diff מראה בדיוק אילו שורות השתנו לפני שמשהו מגיע ל-branch הראשי.

כדי לשלוח repository מקומי ל-GitHub, יוצרים repository ריק באתר ומחברים אליו מהטרמינל. גם OWNER וגם REPOSITORY הם ערכים לדוגמה. אם git branch מציג master, מחליפים את main בשם ה-branch שלך:

bash
git remote add origin https://github.com/OWNER/REPOSITORY.git
git push -u origin main

הורדת פרויקט

git clone מעתיק repository עם כל ההיסטוריה שלו:

bash
git clone https://github.com/OWNER/REPOSITORY.git

מחליפים את OWNER ואת REPOSITORY בבעלים ובשם שמופיעים בשורת הכתובת של דף הפרויקט. שכפול מוריד קבצים. הוא לא מריץ שום דבר מהפרויקט והוא לא מוכיח שהפרויקט בטוח. הורדת ZIP מהאתר נותנת את הקבצים בלי ההיסטוריה, וזה מספיק לקריאה אבל מאבד את שרשרת ה-commits.

לבדוק פרויקט לפני שמריצים אותו

לפני הרצה של כלי שעוד לא השתמשת בו, כדאי לבדוק את ה-repository עצמו:

  • האם זה הפרויקט הרשמי, או fork של בעלים לא מוכר?
  • האם יש רישיון, והאם ה-README מפרט בבירור את הדרישות?
  • האם הפרויקט מפרסם releases? אם הוא מפרסם checksums או חתימות, צריך לאמת מולם את הקובץ שהורדת.
  • האם install.sh או סקריפט התקנה משנים חבילות מערכת, מתקינים שירותים או מבקשים הרשאות מנהל?
  • אילו חיבורי רשת והרשאות הכלי יצטרך?
  • אפשר לנסות אותו קודם בקונטיינר או במכונה וירטואלית חד־פעמית?

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

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

טעויות נפוצות של מתחילים

בלבול בין Git ל-GitHub הוא טעות שכיחה. Git עובד על המחשב שלך ולא צריך אתר. GitHub הוא שירות שנבנה סביב Git.

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

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

השלב הבא

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

מקורות

  1. GitHub Docs: Hello World
  2. Pro Git: About Version Control
  3. Git documentation: git-clone
  4. GitHub Docs: About pull requests
  5. GitHub Docs: Removing sensitive data from a repository

עוד בנושא Linux וכלי פיתוח

Linux וכלי פיתוח

יסודות Bash לעבודת אבטחה

pipes, הפניות, משתנים, לולאות, קודי יציאה ו-set -euo pipefail, ואז שימוש בהם כדי לספור התחברויות כושלות ולחשב hash לתיקייה.

מתחילים11 דקות קריאה

Linux וכלי פיתוח

הרשאות ב-Linux: משתמשים, קבוצות, chmod ו-umask

בעלים וקבוצות ב-Linux, ביטי rwx,‏ chmod,‏ umask ו-setuid, עם מעבדה שבודקת גישה כמשתמש שני ומוצאת הרשאות קבצים מסוכנות.

מתחילים10 דקות קריאה