نحوه افزودن کامیت خودتان به Pull Request شخص دیگر

نحوه افزودن کامیت خودتان به Pull Request شخص دیگر

امروزه تعداد کسانی که کارهای متن باز انجام می دهند بسیار افزایش پیدا کرده است. حتی گاهی افراد هر هفته یک روز کامل را به آن اختصاص می دهند. در پروژه های متن باز، گاهی پیش می آید که یک درخواست Pull داریم که نیاز به یک اصلاح کوچک دارد. برای مثال یک فایل پیکربندی به روز شده، یک تنظیم کوچک برای محدودیت های نسخه در composer.js یا یک اشتباه تایپی در Readme.
در این حالت ما می توانیم درخواست Pull را داده و آن تغییرات را اعمال کنیم که اکثرا به همین شیوه عمل می کنند.
اما آیا راه ساده تری وجود ندارد؟ آیا نمی توانیم کامیت های خود را به درخواست Pull شخص دیگری اضافه کنیم؟ پاسخ مثبت است و یک راه آسان وجود دارد که در این مقاله قصد داریم در مورد آن صحبت کنیم.

می خواهیم این کار را با یک مثال برای شما شرح دهیم. فرض کنید شما در حال کار بر روی آخرین نسخه راهنمای Hitchhiker برای Galaxy در Repository به مسیر fordprefect/the-guide هستید. یک Contributor منبع باز قدرتمند به نام arthurdent ریپازیتوری شما را Fork کرده و درخواست Pull می کند.
درخواست Pull درست به نظر می رسد، اما فرض کنید arthurdent یک غلط املایی دارد. برای مثال کلمه "towel" را در یک بخش به اشتباه "tolwe" نوشته است. مشارکت کنندگان یا همان Contributor های برنامه های منبع باز عالی هستند، اما اگر او هرگز به این درخواست Pull توجه نکند چطور؟ به جای اینکه از او بخواهید آن را حل کند، شما می خواهید سریعا یک مشکل خودتان را Push کنید.
برای حل این مشکل به ترتیب مراحل زیر را انجام می دهیم.

مرحله اول: Clone

اگر قبلا این کار را نکرده اید، با استفاده از دستور زیر ریپازیتوری خود را به صورت لوکال Clone کنید:

git clone git@github.com:fordprefect/the-guide.git

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

برای دیدن Fork کاربر دیگر (و Push کردن کامیت ها)، Fork او را به عنوان یک ریموت به ریپازیتوری لوکال خود اضافه خواهید کرد.

git remote add arthurdent git@github.com:arthurdent/the-guide.git

وقتی که دستور git remote -v را اجرا کنید، باید Fork را به عنوان یک ریموت جدید به نام arthurdent ببینید:

sites/git/the-guide on master ➜ git remote -v
  origin    git@github.com:fordprefect/the-guide.git (fetch)
  origin    git@github.com:fordprefect/the-guide.git (push)
  arthurdent        git@github.com:arthurdent/the-guide.git (fetch)
  arthurdent        git@github.com:arthurdent/the-guide.git (push)

مرحله سوم : fetch

ریموت جدید را fetch (واکشی) کنید:

git fetch arthurdent

مرحله چهارم: Check Out

Branch آن ها را به صورت لوکال Check Out کنید.
شما باید Branch مورد نظر را که برای درخواست Pull از آن استفاده کرده اند را check out کنید. اگر مطمئن نیستید که آن ها از کدام Branch استفاده کرده اند، در بالای درخواست Pull نگاه کنید (به عنوان مثال arthurdent:master). نام آن را غیر از master به صورت لوکال قرار دهید تا هیچ تداخلی (Conflict) با Branch اصلی شما وجود نداشته باشد.

git checkout -b arthurdent-master arthurdent/master

مرحله پنجم: Commit و Push

تغییرات خود را به صورت محلی انجام داده و کامیت کنید، سپس Push را انجام دهید.

git commit -am "Fix how you spelt towel"
git push arthurdent HEAD:master

بسیار خوب! اگر همه چیز خوب پیش برود، مشاهده خواهید کرد که این کامیت در پایین درخواست Pull وجود دارد.

مشکلات احتمالی

! [remote rejected] HEAD -> master (permission denied)
    error: failed to push some refs to 'git@github.com:arthurdent/the-guide.git'

اگر هنگام Push یک خطایی دریافت کردید، ممکن است کاربر دیگری تیک چک باکس درخواست Pull با محتوای “Allow edits from maintainers” را برداشته باشد. از آن ها بخواهید این چک باکس را در صفحه درخواست Pull علامت بزنند و دوباره امتحان کنید.
در این مقاله سعی کردیم به صورت ساده، نحوه اضافه کردن کامیت ها به درخواست Pull یک شخص دیگر را به شما نشان دهیم. در صورتی که نکاتی در ذهن شما وجود دارد و ما آن ها را از قلم انداخته ایم و یا با خطاهای دیگر مواجه شده اید، آن ها را با ما در میان بگذارید.

نظرات
اگر login نکردی برامون ایمیلت رو بنویس: