Git Reflog - כיצד לשחזר ענף שנמחק שלא אוחד



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

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

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





    1. מהו Git Reflog?
    2. איך ומתי סניף נמחק?
    3. שחזר ענף שנמחק
    4. איזו עבודה משוחזרת עם התאוששות הענף שנמחק?
    5. Git רפלוג פקודות משנה

אז בואו נתחיל במאמר זה.



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

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

מהו Git Reflog?

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



יש vs זה ג'אווה

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

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

פקודה: לך רפלוג

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

שלב 1: רשימת הענפים הממוזגים למאסטר

ראשית, צפה בקטע ' לִשְׁלוֹט אם אתה נמצא בסניף אחר באמצעות הפקודה:

$ git לקופה

תְפוּקָה

מאסטר בקופות גיט - רפלוג של גיט - אדוריקה

כעת, כדי לקבל רשימה של סניפים ממוזגים, הזכר את הפקודה הבאה:

סניף $ git - התמזג

תְפוּקָה:

שלב 1.1: לאחר מכן, מחק את הענף הממוזג:

$ git branch -d גליון # 902

תְפוּקָה:

הסניף 'גיליון מס' 902 'נמחק בהצלחה מכיוון שהוא כבר מוזג לענף' מאסטר '.

שלב 2: כעת, בואו נפרט את הענפים שאינם מוזגים למאסטר.

סניף $ git - לא מוזג

תְפוּקָה

שלב 2.2: לבסוף, בואו נמחק ענף לא מאוחד עם הפקודה הבאה:

$ git branch -d prepod

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

תְפוּקָה

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

איך ומתי סניף נמחק?

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

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

מקרה 1 - מפתח יכול למזג או למחוק את הסניף

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

פקודה: 'Git branch -d branch_name'

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

פקודה: 'Git branch -D branch_name'

עם הפקודה הנ'ל, המפתח הואמחק בכוח את הענף העוקף את אזהרת git

$ git branch -D preprod

תְפוּקָה

הערה : ענף 'preprod' לא יופיע עוד כאשר אתה מריץ את הפקודה 'git branch'. אז, כןהעבודה שלנו שנשמרה בענף זה תאבד.

מקרה 2 - מפתח מוחק סניף במאגר משותף

שקול תרחיש, שבו מפתח בעל גישה לקריאה / כתיבה מנסה למחוק בכוח את הענף המרוחקבאמצעות הפקודה 'git push' עם הדגל '–מחק'.

מקור git push - מחק תיקון מהיר

תְפוּקָה

מיון c ++ ()

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

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

מקרה 3 - סקריפט וו עם הרשאות על מוחק את הסניף

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

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

שחזר סניף שנמחק באמצעות Git Reflog

שלב 1 : יומני היסטוריה של כל הפניות

קבל רשימה של כל יומני ההיסטוריה המתועדים המקומיים עבור כל ההפניות ('מאסטר', 'uat' ו- 'prepod') במאגר זה.

לך רפלוג

שלב 2 : זהה את חותמת ההיסטוריה

כפי שניתן לעיין בתצלום המצוין לעיל, מזהה התחייבות מודגש: e2225bb יחד עם אינדקס מצביעי HEAD: 4 זה כאשר ' מכירה חוזרת הענף נוצר מהמצביע הנוכחי HEAD המצביע על העבודה האחרונה שלך.

שלב 3 : לְהַחלִים

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

git checkout -b preprod HEAD @ {4}

תְפוּקָה

וואלה! ' מכירה חוזרת הענף משוחזר בחזרה עם כל קוד המקור שלך.

הערה : תן לי בלהגיב על הפקודה 'git checkout' ששימשה לעיל ולעזור לך להבין טוב יותר:

פקודת 'git checkout' היא פקודה עמוסת יתר (בדיוק כמו כל פונקציה עמוסה בג'אווה). זה החלק שבו הענף בפועל מתאושש.

פקודה יחידה זו בודקת תחילה את חותמת הזמן הקודמת של ההיסטוריה מצביע HEAD @ {4} ואז יוצר סניף עם השם 'preprod' באמצעות האפשרות '-b' וכן עובר את ספריית העבודה שלך לענף החדש שנוצר.

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

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

כיצד להתמודד עם חלון קופץ ב -

איזו עבודה משוחזרת עם התאוששות הענף שנמחק?

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

כדי להביא את הפניות ביומן של ענף או תג מסוים, הפעל את הפקודה - 'git reflog'.

דוגמה: כדי לבדוק את הפניות ביומן של ענף 'uat' בלבד השתמש בפקודה - 'git reflog uat'.

Git רפלוג פקודות משנה

לך רפלוג

פקודה לפתוח את הדף הידני

$ git reflog - עזרה

תְפוּקָה

לך רפלוג הופעה

מציג את יומני ההפניה המופיעים בשורת הפקודה.

מופע מופע git רפלוג @ {0}

לך רפלוג לָפוּג

פקודה זו משמשת לגיזום ערכי הרישום הישנים יותר.

תוקף הגיוס של git יפוג

לך רפלוג לִמְחוֹק

פקודה זו מוחקת ערכים בודדים מהיסטוריית הרפלוג.

מחק glog reflog

לך רפלוג קיים

פקודה זו בודקת אם ל- ref (ענף או תג) יש רישום רישום - היסטוריית יומני הרישום.

רפלוג git קיים

מלבד הפקודות הנ'ל, הפקודה 'Git Reflog' לוקחת פקודות משנה שונות ואפשרויות שונות בהתאם לפקודות המשנה שהוזכרו לעיל. להמשך קריאה לרוץ “ git reflog –עזרה ”מחלון המסוף.

עם זה, אנו מגיעים לסוף מאמר זה ב- Git Reflog.הכוונה של DevOps היא ליצור תוכנה באיכות טובה יותר במהירות ובאמינות רבה יותר תוך הזמנת תקשורת ושיתוף פעולה רב יותר בין הצוותים. אם אתה מסוקרן ממאמר זה, ג לעזאזל עם מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפזורים ברחבי העולם. קורס הדרכת ההסמכה של Edureka DevOps עוזר ללומדים להבין מה זה DevOps ולצבור מומחיות בתהליכים וכלים שונים של DevOps כגון Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack ו- GIT לאוטומציה של שלבים מרובים ב- SDLC.

יש לך שאלה עבורנו? אנא הזכיר זאת במדור ההערות במאמר 'Git Reflog' ונחזור אליך בהקדם האפשרי.