আমি গিটহাবের একটি সংগ্রহস্থল ক্লোন করতে চাই। সমস্যা হ'ল আমি প্রধান শাখা চাই না; আমি এই অগ্রহণযোগ্য পুল অনুরোধের সংস্করণ চাই ।
আমার পক্ষে মূল সংগ্রহস্থলের পরিবর্তে পুল অনুরোধের সংস্করণটি ক্লোন করা সম্ভব?
আমি গিটহাবের একটি সংগ্রহস্থল ক্লোন করতে চাই। সমস্যা হ'ল আমি প্রধান শাখা চাই না; আমি এই অগ্রহণযোগ্য পুল অনুরোধের সংস্করণ চাই ।
আমার পক্ষে মূল সংগ্রহস্থলের পরিবর্তে পুল অনুরোধের সংস্করণটি ক্লোন করা সম্ভব?
উত্তর:
-b
বিকল্পটি এবং টানুন অনুরোধের মাধ্যমে আপনি যে শাখাটি চান তা ক্লোন করতে পারেন :
git clone https://github.com/user_name/repo_name.git -b feature/pull_request_name dir_name
আপনার ক্ষেত্রে, আপনি যে শাখাটি ক্লোন করতে চান তা হ'ল টান অনুরোধের উত্স শাখা ( feature/mongoose-support
):
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support ./mongoose-support
এটি করার সহজতম উপায়টি হ'ল:
git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD
আপনি এখন একটি নতুন শাখায় থাকবেন যা টানার অনুরোধের রাজ্যে রয়েছে।
আপনি চালিয়ে একটি উপনাম সেট আপ করতে চাইতে পারেন
git config --global alias.pro '!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'
এখন আপনি চালিয়ে যে কোনও পিআর চেকআউট করতে পারেন git pr <pr_number>
, বা git pr <pr_number> <remote>
যদি আপনার গিথব রিমোটের নাম না দেওয়া হয় origin
।
.gitconfig
অধীনে ফাইল [alias]
: pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f"
। এইভাবে আমি টাইপ করি git pr upstream 62
এবং পরবর্তী জিনিসটি আমি জানি, আমি প্রবাহ থেকে PR # 62 এর একটি নতুন শাখায় আছি! আপনি যদি সর্বদা ব্যবহার origin
করেন $1
তবে এটির পরিবর্তে আপনি হার্ডকোড করতে পারেন , তবে এটি আমার জন্য স্যুইচ করে।
co
git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH
উদাহরণ:
$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611
পরিবর্তনগুলি করুন, তাদের প্রতিশ্রুতিবদ্ধ করুন, পুশ করুন এবং গিটহাবটিতে আপনার কাঁটাচামচায় নতুন পিআর খুলুন
আপনার সংগ্রহস্থল এবং শাখা সনাক্ত না করে সরাসরি দূরবর্তীটি পরীক্ষা করতে সক্ষম হওয়ার জন্য আপনি এই টুকরোটিতে থাকা নির্দেশাবলী অনুসরণ করতে পারেন।
ব্যবহারের উদাহরণ
আমার একটি প্রকল্পের জন্য (github3.py) আমার নিম্নলিখিতটি রয়েছে github3.py/.git/config
[remote "github"]
fetch = +refs/heads/*:refs/remotes/github/*
fetch = +refs/pull/*/head:refs/remotes/github/pr/*
url = git@github.com:sigmavirus24/github3.py
প্রথম লাইনটি github
দূরবর্তীটির নাম দ্বারা প্রতিস্থাপিত ব্যতিক্রমের সাথে প্রতিটি দূরবর্তীটির জন্য আদর্শ । এর অর্থ কী যে দূরবর্তী মাথাগুলি (বা that সার্ভারের শাখাগুলির প্রধানগুলি) পূর্ববর্তী স্থানীয় রিমোটগুলিতে "ম্যাপ করা" github/
। তাই আপনি যদি আমি git fetch github
এবং GitHub থেকে একটি শাখা ইতিমধ্যে আমার মেশিনে স্থানীয়ভাবে লাভ করে নি থাকত, তাহলে শাখা ডাউনলোড হবে এবং আমি তাই মত পাল্টাতে পারে: git checkout -t github/branch_name
।
দ্বিতীয় লাইনটি একই কাজ করে তবে এটি স্ট্যান্ডার্ড গিট শাখাগুলির পরিবর্তে অনুরোধগুলির জন্য এটি করে। এজন্য আপনি দেখতে পাচ্ছেন refs/pull/*/head
। এটি গিটহাবের প্রতিটি টানার অনুরোধের শিরোনাম এনে এটিকে মানচিত্র করে github/pr/#
। সুতরাং যদি কেউ একটি টানার অনুরোধ প্রেরণ করে এবং এটি 62 নম্বরযুক্ত (উদাহরণস্বরূপ) হয় তবে আপনি তা করতে পারেন:
git fetch github
git checkout -t github/pr/62
এবং তারপরে আপনি একটি স্থানীয় শাখায় থাকবেন যাকে বলে pr/62
ধরে নেওয়া (এটি ইতিমধ্যে বিদ্যমান নেই)। এটি দুর্দান্ত এবং এর অর্থ আপনাকে অন্য ব্যক্তির দূরবর্তী স্থান বা শাখাগুলির উপর নজর রাখতে হবে না।
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
টুকরোটি দস্তাবেজ থেকে "এটি না পাওয়ার" থেকে কখনই অর্জন করতে পারতাম না ।
git fetch github
করতে পারেন git co -t github/pr/#
। এটি আপনাকে দূরবর্তী ইউআরএল অনুলিপি করা এবং আটকানো থেকে বিরত রাখে, শাখার নাম ইত্যাদি বের করে আনে এবং তারপরে অতিরিক্ত ঝামেলা ছাড়াই আপনি নামী, সংক্ষিপ্ত এবং সঠিক শাখার নাম পান। তবে আমি বুঝতে পারি এটি অপ্রতিরোধ্য মনে হতে পারে।
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
আমার নিজস্ব নয় এমন একটি শাখার জন্য আমি কীভাবে নিমজ্জিত পুল অনুরোধ আনতে পারি?
git pull
বর্তমান শাখায় মার্জ তৈরি করে; সাধারণত যে PR এর জন্য আপনি কেবল git fetch
মূল লেখকের কোড পেতে চান (এটি তখন FETCH_HEAD হিসাবে অ্যাক্সেসযোগ্য)। আপনি যদি মার্জ করতে চান, তবে এটির pull/2/merge
পরিবর্তে এটি উল্লেখ করারও দরকার pull/2/head
- এটি গিটহাব আপনাকে হ'ল মার্জ বোনের প্রতিশ্রুতি দেয় যা আপনি যদি এখন [মার্জ] বোতাম টিপেন তবে ঘটবে।
যখন কোনও ব্যবহারকারী একটি টানার অনুরোধ জমা দেয়, তখন তারা কাঁটাচামড়ার ক্লোনটির একটি শাখা থেকে অন্য ব্যবহারকারীর ভান্ডারে ফিরে যাওয়ার জন্য কিছু পরিবর্তন জিজ্ঞাসা করে।
আপনি যে পরিবর্তনগুলি চান তা পুল অনুরোধের উত্স থেকে পাওয়া যেতে পারে। এটি করার জন্য, ব্যবহারকারীর সংগ্রহস্থল ( git://github.com/berstend/frappe.git
) ক্লোন করুন এবং তারপরে ( feature/mongoose-support
) থেকে পুল অনুরোধটি তৈরি করেছেন তার শাখাটি পরীক্ষা করে দেখুন ।
গিট-এক্সট্রা ইনস্টল করার পরে
(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install)
আপনি সহজভাবে ব্যবহার করতে পারেন git pr
$ git pr 62 [remote]
গিথুবের অফিসিয়াল নতুন কমান্ড লাইন ইন্টারফেসের সাথে :
gh repo clone org/repo
cd repo
gh pr checkout 44
44
পিআর নম্বর কোথায় , তবে শাখার নামও হতে পারে।
অতিরিক্ত বিশদ এবং বিকল্প এবং ইনস্টলেশন নির্দেশাবলী দেখুন ।
clone
কিন্তুfetch
দেখুন: stackoverflow.com/questions/6743514/...