গিটহাবের একটি প্রকল্পে আমার কাঁটাচামচ রয়েছে এমন একটি নতুন টান অনুরোধ রয়েছে যা আমি আমার কাঁটাতে টানতে চাই যা লেখক এখনও টানেনি।
আমার কাঁটাচামচে অন্য কাঁটাচামচ থেকে টানার অনুরোধ প্রয়োগ করার কি সহজ উপায় আছে? এখানে কি আর কিছু আছে যা আমি মিস করছি?
গিটহাবের একটি প্রকল্পে আমার কাঁটাচামচ রয়েছে এমন একটি নতুন টান অনুরোধ রয়েছে যা আমি আমার কাঁটাতে টানতে চাই যা লেখক এখনও টানেনি।
আমার কাঁটাচামচে অন্য কাঁটাচামচ থেকে টানার অনুরোধ প্রয়োগ করার কি সহজ উপায় আছে? এখানে কি আর কিছু আছে যা আমি মিস করছি?
উত্তর:
আপনি নিজে এটি বেশ সহজেই করতে পারেন:
আপনার রেপোর রিমোট হিসাবে অন্য কাঁটাচামচ যুক্ত করুন:
git remote add otherfork git://github.com/request-author/project.git
তার রেপো কমিটস আনতে
git fetch otherfork
এরপরে আপনার কাছে টানা অনুরোধটি প্রয়োগ করার জন্য দুটি বিকল্প রয়েছে (যদি আপনি পিক 1 বেছে নিতে না চান)
আপনি যদি উত্স এবং টান অনুরোধের মধ্যে সংযুক্ত করা হয় এমন শেষ পরিণতিগুলি প্রয়োগ করার বিষয়ে চিন্তা না করেন তবে আপনি কেবল যে শাখার উপরে টানানোর অনুরোধটি তৈরি হয়েছিল তা পুনরায় চালু করতে পারেন
git rebase master otherfork/pullrequest-branch
আপনি যদি কেবল টানার অনুরোধে কমিটগুলি চান তবে তাদের SHA1 সনাক্ত করুন এবং করুন
git cherry-pick <first-SHA1> <second-SHA1> <etc.>
git pull URL branchname
আপনি গিথুব ওয়েবপৃষ্ঠার মাধ্যমেও এটি করতে পারেন।
আমি ধরে নিচ্ছি, আপনার কাছে ইতিমধ্যে MyFork
সাধারণ রেপো ( BaseRepo
) এর একটি কাঁটাচামচ ( OtherFork
) থাকা উচিত যাতে আপনি আগ্রহী একটি কাঁটাচামচ ( ) থেকে পলিংয়ের অনুরোধ রয়েছে।
OtherFork
) থেকে নেভিগেট করুন যা আপনার অনুরোধটি শুরু করেছে যা আপনি নিজের কাঁটাতে যেতে চান ( MyFork
)OtherFork
OtherFork
শাখা নির্বাচন করতে ভুলবেন না। বাম পাশে নির্বাচন করুন যেমন বেস আপনার কাঁটাচামচ (মাল MyFork
) ( গুরুত্বপূর্ণ )।View pull request
পরিবর্তন করা উচিত Create pull request
। এটি ক্লিক করুন।এখন আপনার কাঁটাচামচ ( MyFork
) এ একটি মুলতুবি টান অনুরোধ থাকা উচিত , যা আপনি কেবল গ্রহণ করতে পারেন।
OtherFork
ডান হাত থেকে 'তুলনা' ড্রপডাউন থেকে তৈরি করা অনুরোধের সাথে সামঞ্জস্য করা শাখাটি নির্বাচন করেছি । এরপরে আমি উপরে বর্নিত হিসাবে বেসের কাঁটাচামড়া হিসাবে বাম দিকটি নির্বাচন করেছিলাম যাতে টান অনুরোধ তৈরি করতে সক্ষম হয়েছিল।
টেককুব যেমন বলেছেন আগে, আপনি সরাসরি শাখাটি টানতে পারেন। গিটহাবের সাথে বেশিরভাগ সময়, শাখাটি প্রকল্পটির অনুরোধকারী ব্যবহারকারীর কাঁটাচামচটিতে কেবল "মাস্টার" থাকে।
উদাহরণ: git pull https://github.com/USER/PROJECT/ BRANCH
এবং একটি বাস্তব উদাহরণ হিসাবে:
বলুন যে আপনি সাফারিবুকস নামে একটি গিথুব প্রকল্পটি কাঁটাচামচ করেছেন এবং উত্সাহী প্রকল্পে নিম্নলিখিত টান অনুরোধ রয়েছে, যা আপনি নিজের কাঁটাচামচ রাখতে চান:
তারপরে, আপনার কাঁটাচামড়ার ক্লোনড প্রকল্প ফোল্ডারে, চালান:
git pull https://github.com/fermionic/safaribooks.git fix-str-decode
git pull https://github.com/{upstream/project} refs/pull/{id}/head
পরিবর্তে ব্যবহার করা ভাল ।
প্রকল্পের জন্য টানুন অনুরোধগুলি বিভিন্ন বিভিন্ন লেখক (কাঁটাচামচ) থেকে আসতে পারে এবং আপনি সম্ভবত প্রতিটি কাঁটাচামচের জন্য পৃথক রিমোট চান না। এছাড়াও, আপনি টান অনুরোধ জমা দেওয়ার সময় লেখক যে শাখাটি ব্যবহার করেছিলেন সে সম্পর্কে বা লেখকের মাস্টার ব্রাঞ্চে আর কী থাকতে পারে সে সম্পর্কে কোনও ধারণা তৈরি করতে চান না। সুতরাং টান অনুরোধটি উল্লেখ করা ভাল যেমন এটি অন্য ফর্মগুলিতে প্রদর্শিত হওয়ার পরিবর্তে আপস্ট্রিম সংগ্রহস্থলে প্রদর্শিত হয়।
ধাপ 1:
git remote add upstream <url>
আপনি সম্ভবত ইতিমধ্যে এই পদক্ষেপটি সম্পন্ন করেছেন, তবে তা না হলে আপনি প্রবাহের প্রকল্পের জন্য একটি দূরবর্তী সংজ্ঞায়িত করতে চান। ইউআরএল হ'ল প্রকল্পটির ক্লোন ইউআরএল for কাঁটাচামচের জন্য একটি রিমোট কনফিগার করতে এবং একটি কাঁটাচামচ সিঙ্ক করতে আরও তথ্য । upstream
রিমোটকে আপনি যে নামটি দিচ্ছেন তা হ'ল এবং এটি কিছু হতে পারে, upstream
এটি প্রচলিত নাম।
ধাপ ২:
git pull upstream refs/pull/{id}/head
... {id}
টান অনুরোধ নম্বরটি কোথায় upstream
থেকে সরানোর জন্য দূরবর্তীটির নাম, যেমন আপনি যদি ঠিক 1 পদক্ষেপ অনুসরণ করেন তবে কেবল "আপস্ট্রিম"। এটি একটি ইউআরএলও হতে পারে, এক্ষেত্রে আপনি পদক্ষেপ 1 এড়িয়ে যেতে পারেন।
ধাপ 3:
মার্জ কমিটের জন্য একটি কমিট বার্তা লিখুন। আপনি ডিফল্ট রাখতে পারেন, যদিও আমি পুল অনুরোধ নম্বর, এটি সংশোধন করে দেওয়া সমস্যা এবং একটি সংক্ষিপ্ত বিবরণ দিয়ে একটি দুর্দান্ত এক-লাইন সংক্ষিপ্তসার দেওয়ার পরামর্শ দিচ্ছি:
Merge PR#42, fixing VIM-652, support for mapping arbitrary IDEA actions
git pull upstream refs/pull/{id}/head
আপনার স্থানীয় FETCH_HEAD
git log ..FETCH_HEAD
git merge FETCH_HEAD
আমার জন্য কাজ করেছে এমন আরও কিছু বিশদ তথ্য।
কাঁটাযুক্ত রেপোর জন্য আমার .git / কনফিগারেশন ফাইলটি দেখতে এমন দেখাচ্ছে:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "origin"]
url = git@github.com:litzinger/angular-carousel.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
[remote "source"]
url = git://github.com/revolunet/angular-carousel.git
fetch = +refs/heads/*:refs/remotes/source/*
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
তারপরে "গিট ফেচ উত্স" চালান, যা পরে কাঁটাযুক্ত রেপো থেকে সমস্ত পুল অনুরোধ তালিকাভুক্ত করে।
* [new ref] refs/pull/54/head -> origin/pr/54
* [new ref] refs/pull/67/head -> origin/pr/67
* [new ref] refs/pull/69/head -> origin/pr/69
* [new ref] refs/pull/71/head -> origin/pr/71
এবং তারপরে একটি নির্দিষ্ট পুল অনুরোধে মার্জ করতে "গিট মার্জ মাস্টার উত্স / pr / 67" চালান
refs/pull/
নেমস্পেসে ইঙ্গিত সহ দুর্দান্ত সম্পর্কিত পরামর্শ পাওয়া যাবে ।
আমি যা করব তা নীচে;
git checkout master
git remote add #NAME# #ADDRESS TO REPO#
git fetch #USERNAME#
git checkout -b test_fork
git rebase #NAME#/#BRANCH#
আমি পরিবর্তনগুলি এখন একটি পরীক্ষার শাখায় মার্জ করেছি, নামকরণ করেছি test_fork
। যাতে কোনও পরিবর্তন আমার গাছকে ময়লা করে না।
এটি আরও বেশি পছন্দসই হলে নির্দিষ্ট প্রতিশ্রুতি বাছাই করতে উপরে বর্ণিত হিসাবে আপনি চেরি-পিক ব্যবহার করতে পারেন।
শুভ যাত্রা :)
আমি এটির জন্য একটি সহজ ড্যান্ডি স্ক্রিপ্ট ব্যবহার করি। আমি স্ক্রিপ্টটি টাইপ করে চালাচ্ছি:
git prfetch upstream
এবং এটি প্রবাহের কাঁটাচামচ থেকে সমস্ত অনুরোধ পেয়েছে।
স্ক্রিপ্ট তৈরি করতে একটি ফাইল তৈরি করুন ~/bin/git-prfetch
।
ফাইলটিতে নিম্নলিখিতগুলি থাকা উচিত:
#!/bin/bash
if [ -z "$1" ]; then
echo "Please supply the name of a remote to get pull requests from."
exit 1
fi
git fetch $1 +refs/heads/\*:refs/remotes/$1/\* +refs/pull/\*/head:refs/remotes/$1/pr/\*
আপনার পথটিতে সেটিংস করে স্ক্রিপ্ট অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন:
export PATH="$HOME/bin:$PATH"
~/.bashrc
পরিবর্তনটি স্থায়ী করতে আপনি এই ফাইলটি যুক্ত করতে পারেন।
এখন, নিশ্চিত হয়ে নিন যে আপনি কাঁটাচামচটি যুক্ত করেছেন যাতে আপনি এর থেকে টানার অনুরোধগুলি পেতে চান:
git remote add upstream https://github.com/user/repo.git
এবং তারপর
git prfetch upstream