שכפול מאגר (Clone)

git clone היא הדרך לקבל עותק מלא של מאגר git קיים אל המחשב המקומי. זו אחת מהפקודות הראשונות שכל מפתח מריץ.

הפקודה הבסיסית

git clone https://github.com/user/repo.git

הפקודה תיצור תיקייה בשם repo, תעתיק לתוכה את כל הקבצים, וכן את כל ההיסטוריה (תיקיית .git/).

שכפול לשם תיקייה אחר

git clone https://github.com/user/repo.git my-folder

הקוד יעתיק את המאגר לתיקייה my-folder במקום לתיקייה בעלת שם המאגר.

מה קורה ב-clone?

git clone מבצע שורה של פעולות: 1. יוצר תיקייה חדשה 2. מעתיק את כל ה-objects מהמאגר המרוחק 3. יוצר אוטומטית remote בשם origin שמצביע על הכתובת 4. עושה checkout ל-branch ה-default של השרת (בדרך כלל main) 5. מגדיר tracking בין ה-branch המקומי ל-origin/<branch>

פרוטוקולים

יש שלושה פרוטוקולים נפוצים לשכפול:

HTTPS

git clone https://github.com/user/repo.git
  • יתרונות: עובד תמיד, אין צורך בהגדרות מקדימות
  • חסרונות: דורש סיסמה / token לכל push

SSH

git clone [email protected]:user/repo.git
  • יתרונות: אין סיסמה בכל פעם, מאובטח מאוד
  • חסרונות: דורש הגדרת SSH key חד פעמית

git protocol

git clone git://github.com/user/repo.git

לרוב לא נמצא בשימוש - אין הצפנה ואין אימות.

איזה פרוטוקול לבחור?

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

הגדרת SSH ל-GitHub: 1. יצירת מפתח: ssh-keygen -t ed25519 -C "[email protected]" 2. העתקת המפתח הציבורי: cat ~/.ssh/id_ed25519.pub 3. הוספה ב-GitHub: Settings → SSH Keys → New SSH Key 4. בדיקה: ssh -T [email protected]

דגלים שימושיים

Shallow clone (חיסכון בזמן ובשטח דיסק)

git clone --depth=1 https://github.com/user/repo.git

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

שכפול branch ספציפי

git clone --branch develop https://github.com/user/repo.git
git clone -b feature/login https://github.com/user/repo.git

מתחיל ישר ב-branch מסוים במקום ב-default.

שכפול עם submodules

git clone --recurse-submodules https://github.com/user/repo.git

אם למאגר יש submodules, הדגל הזה מוריד גם אותם.

שכפול ללא checkout

git clone --no-checkout https://github.com/user/repo.git

מוריד את ההיסטוריה אבל לא יוצר את הקבצים בתיקייה. שימושי לאוטומציה.

דוגמאות מעשיות

שכפול פרויקט לעבודה

git clone [email protected]:DojoAppOrg/dojoapp.git
cd dojoapp
npm install

שכפול פרויקט לבדיקה (shallow)

git clone --depth=1 https://github.com/facebook/react.git
cd react
# חוקרים את הקוד...

שכפול fork

# שכפול ה-fork שלך
git clone [email protected]:nafi052/repo.git
cd repo

# הוספת המאגר המקורי כ-upstream
git remote add upstream https://github.com/original/repo.git

בדקו את עצמכם

נסו לענות לבד לפני שאתם פותחים את התשובה.

  1. מה עושה git clone?

    1. יוצר ענף
    2. מוחק מאגר
    3. מוריד עותק מלא של מאגר מרוחק, כולל כל ההיסטוריה
    4. משכפל קובץ
    הצגת התשובה

    תשובה ג. ה-origin מוגדר אוטומטית.