27 טיפים חיוניים למשתמשי Git ו- GitHub

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

לאלו מכם שלא מכירים את Git או GitHub, הפסקאות הבאות יתנו לכם מספיק רקע כדי להבין את הטיפים. נפרט כתריסר משאבים שימושיים בסוף מאמר זה.

Git היא מערכת בקרת גרסאות מבוזרת, שנכתבה במקור על ידי Linus Torvalds בשנת 2005 עבור ועזרת קהילת הליבה של לינוקס. אני לא כאן כדי למכור אותך ב- Git, אז אני אחסוך ממך את המשחק עד כמה הוא מהיר וקטן וגמיש ופופולרי, אך עליך לדעת שכשאתה משכפל מאגר Git (בקיצור "רפו") , אתה מקבל את כל היסטוריית הגרסאות במחשב שלך, ולא רק תמונת מצב מענף אחד בו זמנית.

Git התחיל ככלי שורת פקודה, כיאה למקורו בקהילת הגרעינים של לינוקס. אתה עדיין יכול להשתמש בשורת הפקודה Git, אם תרצה בכך, אך אינך צריך. בפרט, אם אתה משתמש ב- GitHub כמארח שלך, אתה יכול להשתמש בלקוח GitHub Desktop בחינם ב- Windows או Mac. מצד שני, שורת הפקודה של Git תעבוד עבור כל מארח שהיא מגיעה מותקנת מראש ברוב מערכות ה- Mac וה- Linux.

רק אתה יכול להחליט אם הכי נעים לך להשתמש בשורת הפקודה או בלקוח מקורי עם ממשק משתמש גרפי. אם אתה אוהב ממשק משתמש, בנוסף ללקוח GitHub (Windows ו- Mac), כדאי לך לשקול את SourceTree (Windows ו- Mac, חינם), TortoiseGit (Windows בלבד, חינם) ו- Gitbox (Mac בלבד, $ 14.99). לחלופין, תוכל להשתמש בעורך או ב- IDE התומך ב- Git באופן פנימי (ראה טיפ מס '11).

טיפ Git / GitHub מס '1: שיבוט כמעט כל דבר

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

ההגדרה git cloneמדף ידני:

משכפל מאגר לספרייה חדשה שנוצרה, יוצר סניפים למעקב מרחוק לכל ענף במאגר המשובט (גלוי באמצעות git branch -r), ויוצר ובודק ענף ראשוני שמזלג מהענף המשובט הפעיל כעת.

לאחר השיבוט, מישור git fetchללא ויכוחים יעדכן את כל ענפי המעקב מרחוק, ו- git pullללא ארגומנטים יתמזג בנוסף את ענף המאסטר המרוחק לענף המאסטר הנוכחי, אם בכלל.

טיפ Git / GitHub מס '2: משוך לעתים קרובות

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

טיפ Git / GitHub מס '3: התחייב מוקדם ולעתים קרובות

התחייבות היא עדכון מפורט לפרויקט, הכולל שינוי אחד או יותר בקובץ אחד או יותר. חשוב על זה כעל תיעוד של יחידת עבודה שהושלמה, שניתן להחיל או להסיר מהפרויקט כשלם הגיוני. בצע כל שינוי הגיוני שתשלים, עוד לפני שתבדוק אותו. ההתחייבויות חלות רק על המאגר המקומי שלך. ראה טיפים מס '4 ו -5 למסקנות לטיפ זה.

ההגדרה git commitמדף ידני:

שומר את התוכן הנוכחי של האינדקס בהתחייבות חדשה יחד עם הודעת יומן מהמשתמש המתארת ​​את השינויים.

טיפ Git / GitHub מס '4: הגיבו על ההתחייבות שלכם כפי שהייתם מגיבים לאחרים שלהם

ישנם 10 סוגים של קודנים: אלה שמגיבים את התחייבותם ואלו שלא. (בדיחה ישנה. רמז: באיזה בסיס אני משתמש?)

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

טיפ Git / GitHub מס '5: דחוף כאשר השינויים שלך נבדקים

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

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

טיפ Git / GitHub מס '6: הסתעפו בחופשיות

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

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

טיפ Git / GitHub מס '7: מיזגו בזהירות

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

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

ראה גם טיפ מס '8.

גם אם הכל הולך דרומה במהלך א ' git merge, אתה לא מוזר:

אם ניסיתם מיזוג שהביא לסכסוכים מורכבים ורוצים להתחיל מחדש, תוכלו להתאושש עם git merge —abort.

git mergeבדרך כלל פקודת ההמשך היא git mergetoolבהנחה שאתה רוצה להשתמש בממשק משתמש למיזוג. אם אתה מעדיף את השיטה הישנה-הספר, אתה יכול לערוך את הקבצים בסכסוך עם עורך תכנות האהוב שלך, מלא להסיר את <<<<<<<, =======, ו >>>>>>>הקווים, לשמור את הקבצים המתוקנים, ואת git addכל קובץ שתיקנת.

טיפ Git / GitHub מס '8: סטאש לפני החלפת סניפים

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

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

הזן git stash. וואלה! כעת שמרת את כל השינויים שלך בענף WIP (עבודה בתהליך), ותוכל לעבור לענף הייצור מהספרייה הנקייה שלך. כשתסיים עם זה, חזור למקום בו היית git stash apply.

טיפ Git / GitHub מס '9: השתמש בגיסטים כדי לשתף קטעים ומשחות

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

טיפ Git / GitHub מס '10: חקור את GitHub

בפרויקטים רבים של קוד פתוח מעניין יש מאגרים ב- GitHub. חקור GitHub מספק ממשק גלישה למציאת חלק מהם, אך בעיקר קל יותר להקליד כמה אותיות משם הפרויקט בתיבת החיפוש כדי למצוא את הדוחות שלו. לדוגמה, הקלד jqאו backאו angכדי למצוא שלוש ממסגרות ה- JavaScript הפתוחות העיקריות.

טיפ Git / GitHub מס '11: תרמו לפרויקטים של קוד פתוח

כל עוד אתה גולש בפרויקטים של קוד פתוח, למה לא לתרום להם? זה לא קשה כמו שאתה חושב, ותלמד הרבה. לדוגמה, תוכל לשכפל את פרויקט jquery / jquery (jQuery Core) ולעיין ב- README.MD. ליד החלק העליון תראה:

ברוח פיתוח תוכנה בקוד פתוח, jQuery תמיד מעודד תרומה לקוד הקהילה. כדי לעזור לך להתחיל ולפני שאתה קופץ לכתיבת קוד, הקפד לקרוא את ההנחיות החשובות לתרומות אלה ...

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

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