שכפול מאגר (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
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה עושה
git clone?הצגת התשובה
תשובה ג. ה-origin מוגדר אוטומטית.