
در Git، شاخه ها به شما کمک می کنند تا تغییرات را از شاخه اصلی به شاخه ویژگی جدا کنید. پس از اتمام کار، معمولاً می خواهید شاخه ویژگی را در شاخه اصلی ادغام کنید. قبل از انجام این کار، باید تفاوت بین شاخه اصلی و شاخه توسعه خود را بدانید.
در اینجا یک نمای کلی از نحوه بررسی تفاوت بین دو شاخه در Git آورده شده است.
برای پیدا کردن تفاوت بین دو شاخه، از دستور git diff استفاده کنید و شاخه های جدا شده با دو نقطه را مشخص کنید:
git diff branch1..branch2
این تفاوت بین رئوس را مقایسه می کند شعبه 1 و شاخه 2.
برای پیدا کردن تفاوت بین دو شاخه از جایی که جدا شده بودند به نوک شاخه جدیداستفاده کنید git diff با سه نقطه به جای دو:
git diff branch1...branch2
برای پیدا کردن تفاوت commit بین دو شاخه، استفاده کنید git log به شرح زیر است:
git log branch1..branch2
برای پیدا کردن تفاوت یک فایل بین دو شاخه، اجرا کنید git diff با – <файл> گزینه.
git diff branch1..branch2 .. <file-name-or-path>
این یک راهنمای جامع برای مقایسه شاخه های Git برای یافتن تفاوت بین این دو شاخه است. این به شما می آموزد که چگونه مکانیسم های مقایسه فوق با مثال ها و تصاویر مفید کار می کنند. پس از خواندن این راهنما، می دانید که چگونه تفاوت بین شاخه ها و همچنین فایل های خاص را ببینید. همچنین، شما می دانید که چگونه فقط تفاوت های ارتکاب را بررسی کنید.
بیایید به آن بپریم!
نحوه پیدا کردن تفاوت بین شاخه های Git
دو راه اصلی برای یافتن تفاوت بین دو شاخه Git، اجرای آن است git diff با دو یا سه نقطه بین شاخه های مقایسه شده. بیشتر اوقات، اولین چیزی است که می خواهید انجام دهید.
بیایید نگاهی دقیقتر به عملکرد این دستورات و تفاوت آنها بیندازیم.
git diff branch1..branch2 (2 امتیاز)
برای اینکه به راحتی تفاوت بین دو شاخه Git را پیدا کنید، استفاده کنید git diff دستور، دو شاخه مقایسه شده را مشخص می کند که با 2 نقطه از هم جدا شده اند.
git diff branch1..branch2
مثلااگر تو داری اصلی شعبه و الف ویژگی شعبه، می توانید تفاوت بین این دو را با:
$ git diff main..feature
این دستور تفاوت بین رئوس دو شاخه را بررسی می کند (فصل). همچنین به شما نشان می دهد که چه چیزی بین این دو شاخه متفاوت است.
راه دیگری برای بیان آن این است که می توانید از این دستور برای بررسی آنچه در حال تعهد است استفاده کنید شعبه 1 اما وجود دارد شاخه 2 انجام نده.
در اینجا یک تصویر برای بررسی تفاوت بین آنها وجود دارد اصلی و ویژگی با استفاده از دستور بالا شاخه می کنیم:
یک مثال
بیایید یک مثال عینی از نحوه عملکرد این کار با یک پروژه نمونه ببینیم.
در اینجا یک گزارش نمونه از پروژه نمونه من است اصلی شاخه:
$ git log --oneline 42442b0 (HEAD -> main, origin/new-code-changes, origin/main, origin/feature, origin/HEAD) Update test.txt 4a734bf Create test.txt file b8e3511 Initial commit
سه تعهد به این شعبه داده شده است.
و این هم دفتر خاطرات ویژگی شاخه (شاخه شده از اصلی شاخه):
$ git log --oneline 7219142 (HEAD -> feature) Add a new Python file 42442b0 (origin/new-code-changes, origin/main, origin/feature, origin/HEAD, main) Update test.txt 4a734bf Create test.txt file b8e3511 Initial commit
همانطور که می بینید، ویژگی شعبه تعهد دیگری از اصلی شاخه. به طور خاص، commit افزایشی یک فایل جدید به پروژه اضافه می کند.
اما بیایید این را با آزمایش آن تأیید کنیم git diff دستوری که تازه یاد گرفتی
$ git diff main..feature diff --git a/example.py b/example.py new file mode 100644 index 0000000..e69de29
خروج “حالت فایل جدید 100644” تفاوت بین را نشان می دهد اصلی و ویژگی یک شاخه اضافه کردن یک فایل جدید است که در واقع همینطور است. همچنین می توانید نام این فایل جدید را یک خط در بالا مشاهده کنید a/example.py b/example.py (دوبار چون Git دو نسخه از یک فایل را با هم مقایسه می کند).
در خروجی a/example.py b/example.py بر آ/ و ب/ پیشوندهایی نامیده می شوند که منبع را نشان می دهند (آ/) و منشاء (/ب) برای مقایسه. اگر می خواهید پیشوندها را بی صدا کنید، تماس بگیرید git diff با – بدون پیشوند گزینه: git diff main..feature –no-prefix
git diff branch1…branch2 (3 امتیاز)
راه دیگر برای مشاهده تفاوت بین شاخه ها استفاده از دستوری است که بسیار شبیه به بخش قبلی است. تنها تفاوت این است که به جای استفاده از 2 امتیاز، از 3 استفاده می کنید.
git diff branch1...branch2
این دستور تفاوت بین رأس را بررسی می کند شاخه 2 و در آخرین جد مشترک (تعهدی که پس از آن شاخه ها تقسیم شدند).
این به بهترین شکل با یک تصویر نشان داده می شود.
توجه داشته باشید که در بیشتر مواقع می خواهید دستور را فقط با دو نقطه استفاده کنید. این به این دلیل است که هنگام توسعه یک ویژگی جدید در a ویژگی شاخه، ممکن است تعهدات جدیدی به آن وجود داشته باشد اصلی شعبه ساخته شده توسط توسعه دهندگان دیگر. برای اینکه ببینیم چه تفاوتی بین آنها وجود دارد ویژگی شعبه و آخرین نسخه از اصلی شاخه، شما باید استفاده کنید git diff با کولون چون سر شاخه ها را با هم مقایسه می کند.
یک مثال
بیایید یک مثال عینی ببینیم.
اینجا لاگ پروژه نمونه من است اصلی شاخه:
$ git log --oneline 25377fe (HEAD -> main) Change the contents of the test.txt file 42442b0 (origin/new-code-changes, origin/main, origin/feature, origin/HEAD) Update test.txt 4a734bf Create test.txt file b8e3511 Initial commit
و این هم دفتر خاطرات من ویژگی شاخه:
$ git log --oneline 7219142 (HEAD -> feature) Add a new Python file 42442b0 (origin/new-code-changes, origin/main, origin/feature, origin/HEAD) Update test.txt 4a734bf Create test.txt file b8e3511 Initial commit
همانطور که از لاگ ها می بینید، آخرین (بالا) commit در اصلی و ویژگی شاخه ها با یکدیگر تفاوت دارند.
ارتکاب با هش “42442b0” آخرین کامیت مشترک (جد مشترک) بین دو شاخه است. این آخرین نامزدی قبل از ایجاد من بود ویژگی شاخه.
حالا ببینیم چیه git diff با سه نقطه بین شاخه ها می گوید:
$ git diff main...feature diff --git a/example.py b/example.py new file mode 100644 index 0000000..e69de29
این نشان می دهد که تنها تفاوت بین اصلی و ویژگی فایل جدیدی است که در آن اضافه کردم ویژگی شاخه. اما فراموش نکنید که تعهد جدیدی نیز در آن وجود دارد اصلی شاخه در این خروجی نشان داده نشده است.
به این دلیل است که git diff با 3 امتیاز مقایسه بالای ویژگی به کامیت اجداد مشترک (که کامیتی است که بعد از آن ایجاد کردم) ویژگی شاخه). در مقایسه با جد مشترک، هیچ تعهد جدیدی در آن وجود نداشت اصلی شعبه نیز به دلیل اصلی و در ویژگی همان شعبه بودند.
برای مقایسه، بیایید راه اندازی کنیم git diff دستوری که از دو نقطه بین شاخه های مقایسه شده استفاده می کند:
$ git diff main..feature diff --git a/example.py b/example.py new file mode 100644 index 0000000..e69de29 diff --git a/test.txt b/test.txt index c23e6c4..654c7f4 100644 --- a/test.txt +++ b/test.txt @@ -1 +1,3 @@ -this is a change to the test.txt file +This is just a test commit! I'm adding a new text file to the project on the remote repo. + +Let's add another line of text to the file in the remote repo and try fetching the changes locally.
همانطور که می بینید، این دستور نه تنها فایل متعهد به را نمایش می دهد ویژگی شعبه بلکه تغییر فایل در اصلی شعبه موجود نیست ویژگی شاخه.
این امر تفاوت بین استفاده از 2 امتیاز و 3 امتیاز را هنگام متمایز کردن دو شاخه برجسته می کند. همچنین نشان می دهد که چرا تقریباً همیشه می خواهید از 2 امتیاز استفاده کنید git diff دستور به جای 3. اولین نشان می دهد که تفاوت واقعی بین شاخه ها قبل از ادغام چقدر است.
commit های بین دو شاخه را مقایسه کنید
مواقعی وجود دارد که ممکن است فقط به تفاوت تعهدات بین دو شاخه اهمیت دهید. این می تواند مفید باشد اگر بخواهید در سطح بالایی ببینید چه چیزی بین 2 شاخه تغییر کرده است، نه اینکه به جزئیات تغییرات نگاه کنید.
برای این کار استفاده کنید git log و شاخه هایی را که می خواهید مقایسه کنید به صورت زیر مشخص کنید:
git log branch1..branch2
این دستور فقط تفاوت commit را نشان می دهد، نه جزئیات تغییرات ایجاد شده در commit ها را.
یک مثال
بیایید به یک مثال خاص مشابه نمونه های قبلی نگاه کنیم.
در اینجا گزارش git برای پروژه نمونه من است اصلی شاخه:
$ git log --oneline 25377fe (HEAD -> main) Change the contents of the test.txt file 42442b0 (origin/new-code-changes, origin/main, origin/feature, origin/HEAD) Update test.txt 4a734bf Create test.txt file b8e3511 Initial commit
و در اینجا ورود به سیستم برای ویژگی شاخه.
$ git log --oneline 7219142 (HEAD -> feature) Add a new Python file 42442b0 (origin/new-code-changes, origin/main, origin/feature, origin/HEAD) Update test.txt 4a734bf Create test.txt file b8e3511 Initial commit
با نگاهی به تاریخچه کامیت بین دو شاخه، می توانید متوجه شوید که آخرین کامیت ها با یکدیگر تفاوت دارند.
حالا بیایید این را با اجرا بررسی کنیم git log branch1..branch2 فرماندهی این دو شاخه
$ git log feature..main commit 25377fe1b8d7d6378e829dcf914d5a7da65c0838 (main) Author: artturijalli Date: Thu Nov 24 11:10:03 2022 +0200 Change the contents of the test.txt file
این نشان دهنده تعهدی است که در آن وجود دارد اصلی شاخه، اما نه در ویژگی یکی
حالا بیایید ترتیب را با هم عوض کنیم git log دستور برای دیدن آنچه در موجود است ویژگی اما نه در اصلی.
$ git log main..feature commit 72191429d3b94b5f991a3fbd0050c9b24973d629 (HEAD -> feature) Author: artturijalli Date: Thu Nov 24 10:47:35 2022 +0200 Add a new Python file
یک فایل را بین دو شاخه مقایسه کنید
در Git همچنین می توانید تغییرات یک فایل خاص را بین دو شاخه بررسی کنید. برای این کار استفاده کنید git diff دستور، شاخه ها و مسیر فایلی را که می خواهید بررسی کنید مشخص کنید.
git diff branch1..branch2 -- <file-name-or-path>
این نشان دهنده تفاوت محتوای فایل بین دو شاخه است.
یک مثال
یک بار دیگر، اجازه دهید به یک مثال خاص از یک پروژه تحت کنترل نسخه نگاه کنیم.
در پروژه نمونه فایلی به نام وجود دارد test.txt. در Git دو شعبه وجود دارد، اصلی و ویژگی.
که در اصلی شعبه، من تغییراتی در فایلی به نام test.txt. به طور خاص، متنی را اضافه کردم که میخوانداین یک تغییر در فایل test.txt است“.
این تغییرات در وجود ندارد ویژگی شاخه.
بیایید git diff را بین اجرا کنیم اصلی و ویژگی برای دیدن این تغییرات:
$ git diff feature..main test.txt diff --git a/test.txt b/test.txt index 654c7f4..c23e6c4 100644 --- a/test.txt +++ b/test.txt @@ -1,3 +1 @@ -This is just a test commit! I'm adding a new text file to the project on the remote repo. - -Let's add another line of text to the file in the remote repo and try fetching the changes locally. +this is a change to the test.txt file
در اینجا، خطوط متنی که با ” شروع می شود–” در هر دو وجود دارد اصلی و ویژگی شاخه ها test.txt فایل ها. اما آخرین خطی که با ” شروع می شود+” یعنی این خط به آن اضافه شده است اصلی شاخه اما وجود ندارد ویژگی شاخه.
خلاصه
امروز یاد گرفتید که چگونه تفاوت بین دو شاخه Git را ببینید.
برای خانه، بیشتر اوقات “تفاوت بین دو شاخه A و B” به تفاوت بین نوک شاخه ها اشاره دارد.فصل). برای بررسی این تفاوت، می توانید استفاده کنید git diff و شاخه های جدا شده با دو نقطه (..) را مشخص کنید.
git diff branch1..branch2
این تمام اطلاعات مربوط به تفاوت های بین دو شاخه، مانند تغییرات، اضافات و حذف فایل ها را نشان می دهد.
برای مشاهده فقط تفاوت commit بین دو شاخه، استفاده کنید git log به همین ترتیب دستور دهید:
git log branch1..branch2
برای تعیین تغییرات یک فایل خاص بین دو شاخه، استفاده کنید git diff تعیین شاخه ها و نام فایل (یا مسیر):
git diff branch1..branch2 <file-name>
گاهی اوقات ممکن است بخواهید بررسی کنید که تفاوت بین دو شاخه در مقایسه با نقطه ای که شاخه ایجاد شده است، یعنی جد مشترک چیست. می توانید این کار را با اجرای دستور git diff با سه نقطه بین شاخه ها انجام دهید.
git diff branch1...branch2
با تشکر برای خواندن. کد نویسی مبارک!
همچنین بخوانید
git pull در مقابل git fetch