בשונה ממערכות בקרת גרסאות מרכזיות ישנות יותר כגון SVN ו- CVS, Git מופץ. לכל מפתח יש היסטוריה מלאה ושליטה בקוד שלהם באופן מקומי או מרחוק. הם יכולים גם לגשת או לתפעל כמה חלקים בקוד כפי שהם רואים לנכון ממקומות שונים.
מאז לינוס טורוואלדס (היוצר המפורסם של ליבת מערכת ההפעלה לינוקס) יצר את Git בשנת 2005 לפיתוח ליבות לינוקס, היא הפכה למערכת בקרת הגרסאות המודרנית הנפוצה ביותר בעולם.
במאמר זה אציג בפניכם את תהליכי העבודה של שיבוט Git וענף Git ואראה לכם כיצד תוכלו לשכפל ענף ספציפי על פי צרכיכם. בואו נתחיל! ?
תנאים מוקדמים
- ידע בסיסי במסוף
- יכולת להקליד פקודות בטרמינל
- Git מותקן (אני עדיין אראה לך איך)
- חשבון GitHub
- חיוך על הפנים (העלה את חבר החיוך הזה?)
מבוא מהיר ל- Git ו- GitHub
על פי ויקיפדיה,
גיט היא מערכת בקרת גרסאות מבוזרת שנועדה לעקוב אחר שינויים בפרויקט (קוד) בפיתוח תוכנה. זה נועד לאכוף תיאום, שיתוף פעולה, מהירות ויעילות בקרב מפתחים.GitHub, לעומת זאת, הוא שירות אירוח מבוסס אינטרנט לבקרת גרסאות באמצעות Git. הוא מציע את כל פונקציות בקרת הגרסאות המבוזרות וניהול קוד המקור של Git, כמו גם הוספת תכונות נוספות לקוד המחשב.
כיצד להתקין את Git ב- Windows
הורד והתקן את ה- Git עבור Windows Installer האחרון כאן.
כיצד להתקין את Git בלינוקס
להלן הפקודות המבוססות על הפצת הלינוקס שלך:
דביאן או אובונטו
sudo apt-get update sudo apt-get install git
פדורה
sudo dnf install git
CentOS
sudo yum install git
קשת לינוקס
sudo pacman -Sy git
ג'נטו
sudo emerge --ask --verbose dev-vcs/git
כיצד להתקין את Git ב- Mac
הורד והתקן את מתקין Git for Mac האחרון כאן.
לחלופין, תוכל להקליד פקודה זו:
brew install git
עכשיו לאחר שהתקנו את Git, בואו נעבור להדרכה.
מבוא ל- Git Clone
Git מאפשר לך לנהל ולפרסם את הפרויקטים שלך ב"מאגר ". מאגר זה מאוחסן בשירות אירוח מבוסס אינטרנט לבקרת גרסאות, כמו GitHub.
לאחר מכן תוכל לשכפל מאגר זה למכונה המקומית שלך ולקבל את כל הקבצים והסניפים באופן מקומי (בקרוב אסביר יותר על סניפים).

לדוגמה, אתה יכול לשכפל את המאגר של freeCodeCamp באמצעות SSH כך:
git clone [email protected]:freeCodeCamp/freeCodeCamp.git
מבוא לענפי גיט
כשאתה עובד על פרויקט, סביר להניח שיהיו לך תכונות שונות. ותורמים מרובים יעבדו על פרויקט זה ותכונותיו.
סניפים מאפשרים לך ליצור "מגרש משחקים" עם אותם קבצים master
בסניף. אתה יכול להשתמש בסניף זה כדי לבנות תכונות עצמאיות, לבדוק תכונות חדשות, לבצע שינויים שבורים, ליצור תיקונים, לכתוב מסמכים או לנסות רעיונות מבלי לשבור או להשפיע על קוד הייצור. כשתסיים, אתה ממזג את הסניף master
לענף הייצור .
הסתעפות היא מושג ליבה ב- Git המשמש גם ב- GitHub לניהול תהליכי עבודה של גרסאות שונות של פרויקט אחד. master
הסניף הוא תמיד הסניף המחדל במאגר זה נחשב לרוב "ייצור קוד פריסה". ענפים חדשים אוהבים passwordless-auth
או refactor-signup-ux
ניתן ליצור master
מהסניף.

כיצד לשכפל סניפים של גיט
בזמן שאתה יכול לשכפל מאגרים באמצעות git clone
הפקודה, זכור כי זה משכפל את הענף והשלט HEAD
. זה בדרך כלל master
כברירת מחדל וכולל את כל הענפים האחרים במאגר.
לכן כשמשבטים מאגר, משבטים את master
כל הענפים האחרים. פירוש הדבר שתצטרך לבדוק סניף אחר בעצמך.
נניח שהמשימה שלך בפרויקט היא לעבוד על תכונה להוספת אימות ללא סיסמה ללוח המחוונים של המשתמש. והתכונה הזו נמצאת passwordless-auth
בסניף.
אתה באמת לא זקוק master
לסניף מכיוון ש"ענף התכונות "שלך ימוזג master
לאחר מכן. כיצד אם כן אתה משבט את passwordless-auth
הענף הזה מבלי להביא את כל הענפים האחרים ב"חבורת קבצים שאינך זקוק להם "?
יצרתי מאגר דוגמאות זה כדי להסביר זאת. מאגר זה מחזיק בבלוג פשוט שנבנה עם Nextjs ויש לו ארבעה סניפי דמה:
- לִשְׁלוֹט
- dev
- הַצָגָה
- ללא סיסמה
ב- Nextjs, כל קובץ בתוך התיקיה pages/api
ממופה /api/*
לנתיב ויטופל כנקודת סיום API במקום a page
. במאגר שלנו, יצרתי ממשקי API דמה שונים בספרייה זו כדי להפוך כל ענף שונה.
master
הסניף מחזיק את קובץ דפים / api / hello.js בעוד passwordless-auth
מחזיק את קובץ הדפים / api / auth.js . כל קובץ רק מחזיר תגובה טקסט דמה. ראה master
את תגובת ה- API של שלום כאן (עם הודעה מיוחדת עבורך?).
בוא נשכפל את המאגר:
git clone [email protected]:BolajiAyodeji/nextjs-blog.git
זה נותן לנו גישה לכל הסניפים במאגר זה ותוכל לעבור בקלות בין כל אחד מהם כדי לראות כל גרסה וקבצים שלה.
git branch -a

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

לכן כאשר אתה משכפל master
למחשב שלך, remotes/origin/master
הוא master
הסניף המקורי באינטרנט והוא master
נמצא במכונה המקומית שלך. אז אתה תמשוך / תדחוף אל וממנו remotes/origin/master
.
לסיכום Remote הוא ה- URL שמפנה אתכם למאגר באינטרנט בעוד ש- Origin הוא כינוי לכתובת URL מרוחקת זו.

כיצד לשבט ענף ספציפי
עכשיו בואו נשכפל ענף ספציפי ממאגר ההדגמה שלנו. ישנן שתי דרכים לשכפל ענף ספציפי. גם אתה יכול:
- שיבט את המאגר, הבא מיד את כל הסניפים והקופה לסניף ספציפי.
- שיבט את המאגר ותביא רק ענף יחיד.
אפשרות ראשונה
git clone --branch
אוֹ
git clone -b
בעזרת זה אתה מביא את כל הענפים במאגר, קופה לזה שציינת, והענף הספציפי הופך לסניף המקומי שהוגדר עבור git push
ו- git pull
. אבל עדיין הבאת את כל הקבצים מכל ענף. זה אולי לא מה שאתה רוצה נכון? ?
בואו נבדוק את זה:
git clone -b passwordless-auth [email protected]:BolajiAyodeji/nextjs-blog.git
זה מוגדר אוטומטית passwordless-auth
כסניף המקומי אך עדיין עוקב אחר סניפים אחרים.


אפשרות שנייה
git clone --branch --single-branch
אוֹ
git clone -b --single-branch
פעולה זו מבצעת את אותה פעולה כמו אפשרות אחת, אלא --single-branch
שהאופציה הוצגה בגיט גרסה 1.7.10 ואילך. זה מאפשר לך לאחזר רק קבצים מהענף שצוין מבלי להביא ענפים אחרים.
בואו נבדוק את זה:
git clone -b passwordless-auth --single-branch [email protected]:BolajiAyodeji/nextjs-blog.git
זה מוגדר אוטומטית passwordless-auth
כסניף המקומי ורק עוקב אחר סניף זה.


אם תרוץ cd pages/api
תמצא את auth.js
הקובץ passwordless-auth
בסניף כצפוי מההגדרה הקודמת.
סיכום
יתכן שנגמר לך האינטרנט או שטח האחסון, אך עליך לעבוד על משימה בענף ספציפי. לחלופין, ייתכן שתרצה לשכפל ענף ספציפי עם קבצים מוגבלים מסיבות שונות. למרבה המזל, גיט מספקת לך את הגמישות לעשות זאת. להגמיש את השרירים ולנסות זאת, יש הרבה יותר "גיט" ללמוד.
אחד בכל פעם, כן? ✌?