גיט השווה בין שני ענפים

Git Compare Two Branches



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

C00 => C01 => C03 => C06 (מאסטר)









C02 => C04 => C05 (פיתוח)



הצעדים הבאים ננקטו:





  • C00: נוסף hello_world.py (סניף ראשי)
  • - יצר את ענף הפיתוח
  • C01: שונה hello_world.py כדי להוסיף שלום שני (סניף ראשי)
  • C02: שונה hello_world.py כדי להוסיף ענף פיתוח אומר שלום (ענף פיתוח)
  • C03: נוסף readme.txt (ענף ראשי)
  • C04: שונה hello_world.py כדי להוסיף ענף פיתוח אומר שוב שלום (ענף פיתוח)
  • C05: נוסף info.txt (ענף פיתוח)
  • C06: שונה readme.txt להוספת שורה שנייה (ענף אב)

אחרי כל ההתחייבויות, לסניף 'המאסטר' יש את הקבצים הבאים:

hello_world.py
readme.txt



ולענף 'פיתוח' יש את הקבצים הבאים:

hello_world.py
info.txt


השוואת ראשי שני ענפים

אתה יכול להשתמש בשם הענפים כדי להשוות את ראשיהם של שני ענפים:

$git diffאדון..פיתוח

diff --ללכתל/hello_world.py ב/hello_world.py
אינדקס e27f806..3899ed3100644
---ל/hello_world.py
+++ ב/hello_world.py
@@-2,7+2,7 @@

def main():
הדפס('שלום ראשון!')
- הדפס('שלום שני!')
-
+ הדפסה('סניף פיתוח אומר שלום')
+ הדפסה('סניף הפיתוח אומר שוב שלום')
אם__name__ =='__רָאשִׁי__':
רָאשִׁי()
diff --ללכתל/info.txt ב/info.txt
חָדָשׁקוֹבֶץמצב100644
אינדקס 0000000..0ab52fd
--- /dev/ריק
+++ ב/info.txt
@@-0,0+1 @@
+מידע חדש
diff --ללכתל/readme.txt ב/readme.txt
נמחקקוֹבֶץמצב100644
אינדקס e29c296..0000000
---ל/readme.txt
+++/dev/ריק
@@-1,2+0,0 @@
-1שורה ראשונה של readme.txt
-2שורה שנייה של readme.txt

הפקודה diff מסתכלת רקורסיבית על השינויים. הוא הפעיל את השונות הבאות:

diff –git a/hello_world.py b/hello_world.py
diff –git a/info.txt b/info.txt
diff –git a/readme.txt b/readme.txt

כאן 'a' מייצג את ענף 'המאסטר' ו- 'b' מייצג את ענף הפיתוח. ה- 'a' מוקצה תמיד לפרמטר הראשון ו- 'b' לפרמטר השני. המשמעות של /dev /null היא שלענף אין את הקובץ.


השוואה בין התחייבויות

בדוגמה שלנו, לענף 'המאסטר' יש את ההתחייבויות הבאות:

$סטטוס git
על אדון הסניפים
אין מה להתחייב, מדריך העבודה נקי

$יומן git --שורה אחת
caa0ddd C06: שונה readme.txt להוספת שורה שנייה(ענף מאסטר)
efaba94 C03: נוסף readme.txt(ענף מאסטר)
ee60eac C01: שונה hello_world.py כדי להוסיף שלום שני(ענף מאסטר)
22b4bf9 C00: נוסף hello_world.py(ענף מאסטר)

לענף הפיתוח יש את התחייבויות הבאות:

$סטטוס git
על פיתוח סניפים
אין מה להתחייב, מדריך העבודה נקי

$יומן git --שורה אחת
df3a4ee C05: נוסף info.txt(ענף פיתוח)
0f0abb8 C04: שונה hello_world.py כדי להוסיף ענף פיתוח אומר שוב שלום(ענף פיתוח)
3f611a0 C02: שונה hello_world.py כדי להוסיף ענף פיתוח אומר שלום(ענף פיתוח)
22b4bf9 C00: נוסף hello_world.py(ענף מאסטר)

נניח שאנו רוצים להשוות את hello_world.py עבור התחייבות C01 ו- C02. אתה יכול להשתמש במגמות כדי להשוות:

$git diffee60eac: hello_world.py 3f611a0: hello_world.py

diff --ללכתל/ee60eac: hello_world.py ב/3f611a0: hello_world.py
אינדקס e27f806..72a178d100644
---ל/ee60eac: hello_world.py
+++ ב/3f611a0: hello_world.py
@@-2,7+2,7 @@

def main():
הדפס('שלום ראשון!')
- הדפס('שלום שני!')
+ הדפסה('סניף פיתוח אומר שלום')

אם__name__ =='__רָאשִׁי__':
רָאשִׁי()

אתה יכול להשתמש באותו עיקרון גם להשוות התחייבויות בתוך אותו ענף.


כלי מיזוג חזותי

להסתכל על השוואות מבוססות טקסט יכול להיות קשה. אם תגדיר את ה- Git difftool עם יישום מיזוג חזותי כמו DiffMerge אוֹ מעבר להשוואה , תוכל לראות הבדלים טוב יותר.

מחקר נוסף:

הפניות: