هماهنگ سازی مخزن Fork شده با مخزن اصلی

هر زمان که بخواین یه مخزن رو توی گیتهاب برای خودتون ذخیره کنین یا بخواین بهش یه Contribution داشته باشید، باید در مرحله اول اون مخزن رو Fork کنین. ولی اگر صاحب مخزن اصلی اونو آپدیت کنه چی؟ چطور باید مخزن Fork شده تون رو باهاش هماهنگ و آپدیت نگه دارین؟ (مخزن = Repository)

نحوه هماهنگ سازی دو مخزن ها باهم

برای آپدیت و هماهنگ نگه داشتن مخزن لوکال تون با مخزن اصلی باید دو مرحله رو پشت سر بزارین:

مرحله اول: اضافه کردن ریموت Upstream

تو این مرحله یه ریموت به مخزن اصلی ست میکنیم. خط فرمان رو باز کنین و برید توی فولدر مخزنی که فورکش کردین: حالا دستور git remote -v رو وارد کنین تا لیست ریموت های ست شده روی فورکتون مشخص بشه:

$ git remote -v
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

میبینین که یه ریموت به فورکتون توی مخزن ست شده. حالا باید یه ریموت دیگه به مخزن اصلی اولیه ست کنیم:

git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

به این ریموت Upstream میگن. برای اینکه مطمئن بشین ریموت Upstream به مخزنتون اضافه شده دوباره دستور git remote -v رو توی خط فرمان اجرا کنین:

$ git remote -v
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

مرحله دوم: انجام آپدیت و هماهنگ سازی دو مخزن

توی همون خط فرمان، این دستور رو وارد کنین تا آخرین تغییرات مخزن اصلی به مخزن لوکالتون اضافه بشه:

$ git fetch upstream
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

در این لحظه آخرین تغییرات رو وارد سیستمتون کردین. برای اضافه شدنش به مخزن این دستورها رو اجرا کنین:

$ git checkout master
Switched to branch 'master'

حالا برنچ فعلی رو مرج کنین با Upstream

$ git merge upstream/master
Updating a422352..5fdff0f
Fast-forward
 README                    |    9 -------
 README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

توی این حالت اگر تغییری وجود نداشته باشه،‌ گیت fast-forward اجرا میکنه:

$ git merge upstream/master
Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

خوشحال میشم ایده هاتون رو در مورد این مطلب توی کامنت ها ببینم تا فیبدک هامون رو به هم منتقل کنیم. اگر از خوندن این مطلب لذت بردین میتونین اونو با دیگران به اشتراک بزارید. همینطور میتونین از سایر مطالب بلاگ هم استفاده کنین و یا اگر دوس داشته باشید، کنارمون بنویسید. برای راهنمای انتشار مطلب در پول ریکوئست میتونین از این لینک استفاده کنین.