جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.

×
×
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

تفاوت git pull و git merge چیست؟


1
0
2323

سلام

من از نرم افزار source tree استفاده میکنم برای git و مدیرت کردن کارهای ورژن کنترل.

توی source tree دوتا گزینه وجود داره که هردوش از نظر من یک کار رو انجام میده.

  • git pull
  • git merge

هردوش میره آخرین ورژن هایی که بچه های تیم آپلود کردن روی ریپازیتوری رو میگیره و میاره تو کامپیوتره تو. من بهش میگم sync کردن یعنی تو با آخرین کدهای زده شده بروز میشی.

سوالم اینجاست که چه موقع باید از گیت پول git pull استفاده کنم و چه موقع از گیت مرج git fetch؟ من همیشه از git pull استفاده کردم و همه چیز درست بوده یه بارم از git merge استفاده کردم که باز کدهای لوکال بروز رسانی شد و مثل گیت پول رفتار کرد.

کسی راهنمایی می کنه که چه فرقی دارن؟ یعنی الگوریتمشون متفاوته ولی کاربردشون یکیه؟ مرسی

علمی کنترل-نسخه گیت
سوال شده در سروش قادری نسب
788 امتیاز


خیر pull و fetch یکسان نیستند. درواقع pull علاوه بر fetch بلافاصله بعدش merge هم میکنه با لوکال برنچ. ــ ساناز رضایی در 5 سال قبل

@ساناز.رضایی آهان بله جواب زیر رو خوندم و متوجه شدم ممنون ــ سروش قادری نسب در 5 سال قبل
1
خوشحالم که تفاوتشون رو متوجه شدی. بله جوابی که برات نوشته شده خیلی کامل و دقیق توضیح داده تفاوتشون رو دقیقا اشاره کرده که توی git pull علاوه بر fetch، فرایند merge هم اتفاق میوفته. ــ ساناز رضایی در 5 سال قبل

500 کاراکتر باقی مانده

1 جواب

4

TL;DR

کامند git pull در واقع ۲ دستور git fetch و git merge را اجرا میکند.


تفاوت local branch و remote branch:

به طور کلی ۲ نوع برنچ در گیت وجود داره

  1. local branch: این برنچ روی سیستم شما به صورت لوکال ذخیره شده.
  2. remote branch: این برنچ در واقع روی یک سیستم دیگه وجود داره و برای استفاده شما نیاز دارید یک کپی به صورت local branch داشته باشید.

در واقع شما یک کپی از ریموت برنچ ها روی repository خودتون دارید. وقتی برنچ ریموت تغییر میکند این تغییرات مستقیم بر روی برنچ لوکال شما اعمال نمیشود. و گیت از تغییراتی که روی ریموت اعمال شده بی خبر میباشد.

تصویر زیر یک repository بر روی لوکال و ریموت رو نشان میده. همونطور که میبینید برنچ ریموت B جلوتر از برنچ لوکال B میباشد. (تغییرات توسط یکی دیگر از اعضای تیم انجام شده و روی ریموت push شده)

remote repo
              F---E--G--H remote branch B
             /
    A---B---C---D         remote branch A
---------------------------------------------------------------
local repo
              F---E local branch B
             /
    A---B---C---D   local branch A

دستور git fetch

این دستور اطلاعات جدید رو از repository ریموت دریافت میکند ولی هیچ تغییری روی برنچ های local‌ اعمال نمیکند.

در مثال بالا پس از اجرا کردن دستور git fetch گیت متوجه میشود که repository لوکال شما چه تفاوت هایی نسبت به repository ریموت دارد. (در اصل این اطلاعات را روی برنچی با نام remote-name/branch-name ذخیره میکند)


دستور git merge

اگر دستور git merge از روی یک برنچ بر روی برنچ دیگری اجرا شود به این معنا است که تغییرات برنچ دوم رو روی برنچ اول اعمال کن. مثال:

              F---E local branch B
             /
    A---B---C---D   local branch A

اگر روی برنچ A باشید و git merge B‍ را اجرا کنید این اتفاق میافته (تغییرات برنچ B روی A اعمال میشه و یک commit جدید ساخته میشه).

              F---E     local branch B
             /     \
    A---B---C---D---G   local branch A

دستور git pull

این دستور به از روی یک local branch بر روی یک remote branch اعمال میشود و باعث میشود ابتدا با استفاده از git fetch اطلاعات جدید از remote دریافت شود سپس با استفاده از git merge تغییرات دریافت شده روی branch اعمال شود

در مثال:

remote repo
              F---E--G--H remote branch B
             /
    A---B---C---D         remote branch A
---------------------------------------------------------------
local repo
              F---E local branch B
             /
    A---B---C---D   local branch A

اگر دستور روی برنچ B باشید و دستور git pull remote-name B را اجرا کنید تغییرات جدید برنچ remote B بر روی local A اعمال میشود (ابتدا اطلاعات fetch و سپس بر روی برنچ B مرج میشود)

remote repo
              F---E--G--H remote branch B
             /
    A---B---C---D         remote branch A
---------------------------------------------------------------
local repo
              F---E--G--H local branch B
             /
    A---B---C---D   local branch A
ویرایش شده در 5 سال قبل
جواب داده شده در S Kill
558 امتیاز


+1 برای توضیح local branch و remote branch. جزئیات رو خیلی خوب کنار هم گذاشتید و توضیح دادید. مرسی از شما ــ ساناز رضایی در 5 سال قبل

مرسی خیلی خوب توضیح دادید من چندتا کورس آموزشی دیده بودم برای یاد گرفتن گیت و الان کامل متوجش شدم مرسی آقای kil ــ مریم نادري در 5 سال قبل

عالی بود ممنون فقط از سر کنجکاوی میپرسم TL;DR یعنی چی؟ اون ; اشتباه تایپیه؟ ــ سروش قادری نسب در 5 سال قبل
4
متشکرم. خیر tl;dr اصطلاحه و مخفف "too long; didn't read" است. وقتی به کار میره که بخوای نتیجه و نکات مهم یک متن طولانی را در چند خط برای خواننده بنویسی. ــ S Kill در 5 سال قبل

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


وب سایت لام تا کام جهت نمایش استاندارد و کاربردی در تمامی نمایشگر ها بهینه شده است.

تبلیغات توضیحی


داپ اَپ اولین پلتفرم کش‌بک در ایران
اگه میخوای از خریدهایی که میکنی، پاداش نقدی دریافت کنی داپ اَپ رو نصب کن.

تبلیغات تصویری