ענף שיבוט גיט - כיצד לשכפל ענף ספציפי

בשונה ממערכות בקרת גרסאות מרכזיות ישנות יותר כגון 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בסניף כצפוי מההגדרה הקודמת.

סיכום

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

אחד בכל פעם, כן? ✌?