כותב סיפורים משלך עם git

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

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

איפה ללמוד git?

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

מה עושה git?

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

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

פרויקט חישוב קטן

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

שֶׁלוֹ. כריסטופר דיאז ריברוס

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

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

שֶׁלוֹ. כריסטופר דיאז ריברוס

עכשיו בואו נבדוק עם git log מה קרה בהיסטוריה של הפרויקט שלנו:

כאן יש לנו מידע רב בצבעים שונים 🙂 בואו ננסה להסביר את זה:

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

origin/master הוא המקביל לאינטרנט, origin הוא שם ברירת המחדל שהוקצה לשלנו URL, ו master הוא הענף בו אתה עובד ... כדי שיהיה פשוט, מי שיש לו / הם אלה שלא נמצאים בצוות שלנו, אלא הם הפניות למה שיש באינטרנט.

ואז יש לנו את המחבר, את התאריך והשעה ואת סיכום ההתחייבות. זו סקירה קטנה של מה שקרה באותה נקודה בהיסטוריה, חשוב מאוד בפרויקטים רבים ויש הרבה מידע שגונה. בואו נסתכל מקרוב על מה שקרה בביצוע עם הפקודה git show <código-de-commit>

שֶׁלוֹ. כריסטופר דיאז ריברוס

הפקודה git show לוקחת אותנו למסך זה בפורמט תיקון, שם תוכלו לראות מה התווסף ומה הוסר (אם משהו הוסר) באותה תקופה בהיסטוריה, עד כה זה רק מראה לנו שה רשומות .gitignore,README.mdLICENSE.

עכשיו בואו נעבור לעניינים, בואו נכתוב קובץ 🙂 ניצור את אבן הדרך הראשונה בהיסטוריה שלנו 😀:

שֶׁלוֹ. כריסטופר דיאז ריברוס

בקצרה, אנו הולכים ליצור תוכנית שתראה לנו את מספר הארגומנטים שהועברו בעת ביצועה, פשוט 🙂

שֶׁלוֹ. כריסטופר דיאז ריברוס

זה היה קל 🙂 עכשיו בואו נראה את הפקודה השימושית הבאה: git status

שֶׁלוֹ. כריסטופר דיאז ריברוס

איזו נשמה טובת לב תרגמה git כדי להקל על המעקב, כאן יש לנו הרבה מידע שימושי, אנחנו יודעים שאנחנו בענף המאסטר, שאנחנו מתעדכנים איתו origin/master(סניף Github), יש לנו קבצים שלא עוקבים אחריהם! וכדי להוסיף אותם עלינו להשתמש git addבואו ננסה 🙂

שֶׁלוֹ. כריסטופר דיאז ריברוס

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

שֶׁלוֹ. כריסטופר דיאז ריברוס

מוסבר בקצרה, הקו הצהוב הוא כותרת ההתחייבות שלנו, אני כותב main.c לצורך התייחסות חזותית בלבד. הטקסט השחור הוא ההסבר על השינויים שבוצעו מאז ההתחייבות הקודמת ועד כה 🙂 אנו שומרים את הקובץ ונראה את ההתחייבות שלנו נשמרת ברישום.

שֶׁלוֹ. כריסטופר דיאז ריברוס

עכשיו אנו הולכים לראות את ההיסטוריה של הפרויקט שלנו עם git log

שֶׁלוֹ. כריסטופר דיאז ריברוס

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

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

שֶׁלוֹ. כריסטופר דיאז ריברוס

כפי שאתה יכול לראות, עכשיו זה מדפיס את המספר שנמסר במקום מספר הטיעונים, אבל שלא סיפרתי לך קודם 🙂 לסקרנים echo $? מציג את קוד היציאה של התוכנית האחרונה שבוצעה, כלומר 1 כי זה הסתיים בטעות. עכשיו בואו נסקור את הסיפור שלנו:

שֶׁלוֹ. כריסטופר דיאז ריברוס

עכשיו אנחנו יודעים שאנחנו מתחייבים לפני Github, שהקובץ main.c עבר שינוי, בוא ניצור את ההתחייבות הבאה על ידי ביצוע git add main.c  ואז git commit???

שֶׁלוֹ. כריסטופר דיאז ריברוס

עכשיו היינו קצת יותר ספציפיים, שכן יישמנו פונקציה ושינינו את קוד האימות. כעת, לאחר שנשמר, נסקור את השינוי האחרון שלנו. אנחנו יכולים לראות את זה עם git show HEAD

שֶׁלוֹ. כריסטופר דיאז ריברוס

כעת תוכלו לראות את הקווים האדומים והירוקים, הוספנו את הספרייה stdlib.h, שינה הרבה מהקוד והוסיף את הפונקציה לסיפור שלנו.

כעת אנו הולכים לראות את היומן: (git log)

שֶׁלוֹ. כריסטופר דיאז ריברוס

אנו יכולים לראות כי לפנינו גרסת Github שני התחייבויות, אנו הולכים להשוות את הסמן מעט 🙂 לשם כך אנו משתמשים git push origin master

עם זה אנו אומרים, שלח את ההתחייבויות שלי לכתובת האתר origin על הסניף master

שֶׁלוֹ. כריסטופר דיאז ריברוס

מזל טוב! עכשיו השינויים שלך הם בגיתוב, אתה לא מאמין לי? בואו נסקור את זה 😉

שֶׁלוֹ. כריסטופר דיאז ריברוס

עכשיו יש לנו את 3 ההתחייבויות על Github 🙂

תקציר

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


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   פול דיג'ו

    היי ... אני לא יודע אם אתה, אבל אני לא יכול לראות את התמונות בדו"ח זה ...

    לגבי

  2.   פול דיג'ו

    זו הייתה בעיה בדפדפן שלי. מצטער על אי הנוחות.

  3.   עולם טפרוג דיג'ו

    אני עדיין צריך לקרוא את זה ביתר פירוט, אני מתחיל.

  4.   גיירמו דיג'ו

    מאמר נהדר להתחיל עם git, אם כי אני ממליץ לרשום הערות כדי להבין את הפרט.
    כמה דברים לא היו ברורים לי:
    בשביל מה האפשרות הוסף .gitignore Cלמרות שאני מניח שאראה את זה כשאתאמן את זה,
    מדוע עליכם לבצע מחדש את git add main.c לפני ביצוע ה- git הבא, האם add main.c אומר ל- git להשוות את הקובץ עם גרסת הרשת? האם זה לא משווה באופן אוטומטי את כל הקבצים שנוספו למעקב?

    1.    ChrisADR דיג'ו

      שלום גיירמו 🙂 טוב שמצאת את זה מועיל לענות על שאלותיך:

      .gitignore הוא קובץ המספר ל- git מאילו פורמטים או דפוסים להתעלם, במקרה זה בחירה C גורמת להתעלם מ- o קבצים ואחרים שנוצרים בזמן האוסף, וזה טוב כי אחרת git שלך ישתגע באופן מיידי מכל אוסף ומעקב 🙂 אתה יכול לבדוק את המספר הגדול של פורמטים שמשמיטים בתבנית C שלה על ידי ביצוע cat או עם עורך טקסט.

      למרות ש- git יעקוב אחר כל קובץ שנוסף לעץ העובד, יש לבחור באופן ספציפי אילו קבצים יכנסו להתחייבות הבאה, כדי לתת לך דוגמה, נניח שהעבודה שלך הובילה אותך לשנות 5 קבצים שונים לפני להיות מסוגל לראות את התוצאה. אם אתה רוצה להיות קצת יותר ספציפי ולהסביר מה נעשה בכל אחד, אתה יכול לעשות git add file1; git commit; git add file2; git commit… .3,4,5; git commit. באופן זה הסיפור שלך נקי והשינויים מוגדרים היטב. ובמקרה שתצטרך לשנות משהו, או לבטל (נושאים מתקדמים יותר) תוכל להחזיר דברים ספציפיים או להוסיף דברים ספציפיים מבלי לשנות את השאר.

      מקווה שזה יעזור 🙂 ברכות ותודה ששאלתם

    2.    ChrisADR דיג'ו

      נ.ב: git add לא אומר להשוות לגרסה ברשת, אבל עם ההתחייבות הקודמת בשורת העבודה שלך, אם היא הייתה מקומית (ירוקה) היא תשווה אותה לזו, אם היא הייתה מרוחקת (אדומה) היא להשוות עם האחר. רק כדי להבהיר 😉

      1.    גיירמו דיג'ו

        מושלם, כמובן שזה מבהיר.