מה זה Clone?
Clone היא הדרך הנפוצה להוריד פרויקט מ-GitHub כאשר ברצונכם לקבל עותק מקומי של קוד הפרויקט. בביצוע Clone, אתם יוצרים עותק מלא של כל קבצי הפרויקט וההיסטוריה שלו אל המחשב שלכם. כדי לשכפל (clone) מאגר, אין הכרח שיהיה לכם חשבון (אם זהו מאגר ציבורי) – ניתן לבצע Clone של כל מאגר ציבורי ללא הזדהות. לעומת זאת, עבור מאגר פרטי, רק מי שקיבל הרשאה יכול לשכפל אותו, ובמקרה כזה תידרש הזדהות (באמצעות שם משתמש וסיסמה/Token, או באמצעות מפתח SSH).
שלבים לשכפול (git clone) של פרויקט
- מציאת כתובת המאגר (URL): היכנסו לדף הפרויקט ב-GitHub שברצונכם להוריד. בדף הראשי של הפרויקט, לחצו על כפתור Code (בדרך כלל בצבע ירוק). בתפריט שנפתח, תראו כתובת URL. כברירת מחדל יוצג URL מסוג HTTPS. העתיקו את ה-URL הזה. לדוגמה, כתובת עשויה להיות: https://github.com/username/repository.git. אם אתם מעדיפים להשתמש ב-SSH ויש לכם מפתח SSH מוגדר בחשבון, תוכלו לבחור באפשרות SSH ולקבל כתובת בסגנון git@github.com:username/repository.git.
2. הרצת פקודת clone במחשב המקומי: פתחו טרמינל / שורת פקודה במחשב שלכם. נווטו לתיקייה שבה תרצו לשמור את קבצי הפרויקט (למשל Projects/ או כל מקום מתאים בדיסק). השתמשו בפקודה git clone ואחריה ה-URL שהעתקתם. למשל:
לאחר הרצת הפקודה, Git תיצור תיקייה חדשה ששמה כשם הפרויקט, ותוריד אליה את כל הקבצים והספריות של הקוד, כולל כל היסטוריית הגרסאות. ייתכן שתראו בתהליך ההורדה מידע על מספר האובייקטים שהורדו (objects), וכן התקדמות בפענוח (unpacking) – זהו התהליך הנורמלי של Git בשכפול מאגר.
3. בדיקת התוצאה: בסיום, כנסו לתיקייה החדשה (cd repository למשל). שם תוכלו לראות את קבצי הפרויקט. תוכלו גם להריץ git log כדי לראות את היסטוריית ה-commits, וכך לאמת שקיבלתם את כל המידע. כעת יש לכם עותק מקומי של הפרויקט, וכל שינוי עתידי שתבצעו בקבצים לא ישפיע על המאגר ב-GitHub עד שתבחרו לדחוף את השינויים (push) בחזרה – נושא שנדון בו בהמשך אם תרצו לתרום קוד.
טיפ
בדרך כלל אין צורך לספק שם משתמש או סיסמה עבור git clone של מאגר ציבורי דרך HTTPS. אם במקרה המאגר פרטי או שיש צורך בהזדהות, Git יבקש שם משתמש וסיסמה. שימו לב ש-GitHub הפסיקה לתמוך בסיסמת חשבון עבור גישת HTTPS דרך Git, ותדרוש שימוש בToken אישי (PAT) במקום סיסמה. לחלופין, הגדירו מפתח SSH ושימושו ב-SSH כדי להימנע מהזנת אישורים בכל Clone/Pull/Push.