מיזוג Git-no-ff אופציה

Git Merge No Ff Option



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

איך המיזוג נראה עם ובלי קדימה קדימה

לאחר קדימה מהירה, היסטוריית ה- git שלך תיראה כך:







C0 -> C1 -> C2—> C3



עבור אותו מספר התחייבויות, הנה היסטוריית מיזוג ללא קדימה קדימה:







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

מעבר בדוגמא

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



חלק 1: התקנה

ראשית, באפשרותך ליצור את מאגר git בשלבים הבאים:

$ mkdir my_project
$ cd my_project
$ git init
$ מגע a.txt
$ git add -A
$ git commit -m 'C0: הוספת a.txt'

כעת ניצור ענף בשם תכונות ונבצע מספר שינויים:

תכונות סניף $ git
תכונות קופה של $ git
$ מגע b.txt
$ git add -A
$ git commit -m 'C1: הוספת b.txt'
$ מגע c.txt
$ git add -A
$ git commit -m 'C2: הוספת c.txt'
$ מגע d.txt
$ git add -A
$ git commit -m 'C3: הוספת d.txt'

סעיף 2: מיזוג באמצעות העברה מהירה

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

$git checkoutלִשְׁלוֹט
$מיזוג gitמאפיינים

תְפוּקָה:

מעדכן 08076fb..9ee88eb
קדימה קדימה
b.txt | 0
c.txt | 0
d.txt | 0
3 קבצים השתנו, 0 הוספות (+), 0 מחיקות (-)
צור צור 100644 b.txt
צור צור 100644 c.txt
צור צור 100644 d.txt

אם תבדוק את ההיסטוריה, תראה:

יומן $ git -מקוון
9ee88eb C3: הוספת d.txt
c72b92c C2: הוספת c.txt
2e4039e C1: הוספת b.txt
08076fb C0: הוספת a.txt

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

סעיף 3: ללא העברה מהירה

חזור על סעיף 1 לתיקייה חדשה.

לאחר מכן, נסה מיזוג ללא העברה מהירה:

$git checkoutלִשְׁלוֹט
$git מיזוג -no-ffתכונה

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

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

שנה את ההערות. במקרה זה, אתה יכול פשוט להוסיף C4: לפני מיזוג ה'תכונות 'של הענף. הפלט אמור להיראות כך:

מיזוג שבוצע על ידי האסטרטגיה ה'רקורסיבית '.
b.txt | 0
c.txt | 0
d.txt | 0
3 קבצים השתנו, 0 הוספות (+), 0 מחיקות (-)
צור צור 100644 b.txt
צור צור 100644 c.txt
צור צור 100644 d.txt

כעת, אם אתה בודק את ההיסטוריה, היא אמורה להיראות כך:

יומן $ git -מקוון
e071527 C4: מיזוג 'תכונות' של ענף
bb79c25 C3: הוספת d.txt
692bd8c C2: הוספת c.txt
a0df62a C1: הוספת b.txt
7575971 C0: הוספת a.txt

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

סיכום

דגל ה- git מיזוג no-ff עוזר ליצור היסטוריה קריאה יותר. זה מאפשר לך לשים תגים שמראים בבירור היכן התרחשו המיזוגים. זה יכול לחסוך לך זמן ומאמץ במהלך איתור באגים.

מחקר נוסף:

הפניות: