গিথহাবের কাছে টানার অনুরোধ থেকে ক্লোন?


128

আমি গিটহাবের একটি সংগ্রহস্থল ক্লোন করতে চাই। সমস্যা হ'ল আমি প্রধান শাখা চাই না; আমি এই অগ্রহণযোগ্য পুল অনুরোধের সংস্করণ চাই ।

আমার পক্ষে মূল সংগ্রহস্থলের পরিবর্তে পুল অনুরোধের সংস্করণটি ক্লোন করা সম্ভব?


2
তুমি এখানে না এসে যদি cloneকিন্তু fetchদেখুন: stackoverflow.com/questions/6743514/...
সিরো Santilli郝海东冠状病六四事件法轮功

উত্তর:


87

-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

112

এটি করার সহজতম উপায়টি হ'ল:

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


49
আরও ভাল: git fetch origin pull/<#>/head:<local_branch_name>( মাধ্যমে )
স্ক্লামার

5
আমি নিজেকে এই তাই উত্তর প্রায়ই উল্লেখ, তাই আমি আমার এই আটকে .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
মাইকেল ম্যাকক্যায়েড

43
git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH

উদাহরণ:

$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611

পরিবর্তনগুলি করুন, তাদের প্রতিশ্রুতিবদ্ধ করুন, পুশ করুন এবং গিটহাবটিতে আপনার কাঁটাচামচায় নতুন পিআর খুলুন


আমি কীভাবে এই শাখাগুলি স্থানীয়ভাবে মার্জ করতে পারি? আমি ঠিক উপরে ক্লোন করেছি এবং উপরের মতো একটি নিমজ্জনিত পুল অনুরোধ পেয়েছি branch
এরগিন্দুরান

17

আপনার সংগ্রহস্থল এবং শাখা সনাক্ত না করে সরাসরি দূরবর্তীটি পরীক্ষা করতে সক্ষম হওয়ার জন্য আপনি এই টুকরোটিতে থাকা নির্দেশাবলী অনুসরণ করতে পারেন।

ব্যবহারের উদাহরণ

আমার একটি প্রকল্পের জন্য (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ধরে নেওয়া (এটি ইতিমধ্যে বিদ্যমান নেই)। এটি দুর্দান্ত এবং এর অর্থ আপনাকে অন্য ব্যক্তির দূরবর্তী স্থান বা শাখাগুলির উপর নজর রাখতে হবে না।


2
কেন না? এটি সুবিধাজনক এবং দক্ষ উপায়ে কীভাবে করবেন তা ব্যাখ্যা করে।
আয়ান স্ট্যাপলটন কর্ডাসকো

কারণ আমি একজন নুব, এবং সেই নথিটি বোঝা মুশকিল। আমি git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_cloneটুকরোটি দস্তাবেজ থেকে "এটি না পাওয়ার" থেকে কখনই অর্জন করতে পারতাম না ।
ফ্রেশিয়েবল

6
গিস্ট ডকুমেন্টটি যা করে তা হ'ল গিটহাব থেকে আনার জন্য অতিরিক্ত সেট (তথ্যের রেফারেন্স বা রেফারেন্স) যোগ করা। আপনি যখন করবেন তখন আপনি git fetch githubকরতে পারেন git co -t github/pr/#। এটি আপনাকে দূরবর্তী ইউআরএল অনুলিপি করা এবং আটকানো থেকে বিরত রাখে, শাখার নাম ইত্যাদি বের করে আনে এবং তারপরে অতিরিক্ত ঝামেলা ছাড়াই আপনি নামী, সংক্ষিপ্ত এবং সঠিক শাখার নাম পান। তবে আমি বুঝতে পারি এটি অপ্রতিরোধ্য মনে হতে পারে।
ইয়ান স্ট্যাপলটন কর্ডাসকো

ওহ্হ দারুন. আমি এই +1 জানতাম না! আপনি কি আমাকে পুরোপুরি যোগ্য উদাহরণ দিতে পারেন?
ফ্রেশিয়েবল

@ সিগমাভাইরাস 24 তথ্যের জন্য অনেক ধন্যবাদ; আমি ভাবছি যদি বিটবাকেটের জন্য একই কৌশলটি উপস্থিত থাকে?
পেট্র কোজেলকা

8

1
নোট git pullবর্তমান শাখায় মার্জ তৈরি করে; সাধারণত যে PR এর জন্য আপনি কেবল git fetchমূল লেখকের কোড পেতে চান (এটি তখন FETCH_HEAD হিসাবে অ্যাক্সেসযোগ্য)। আপনি যদি মার্জ করতে চান, তবে এটির pull/2/mergeপরিবর্তে এটি উল্লেখ করারও দরকার pull/2/head- এটি গিটহাব আপনাকে হ'ল মার্জ বোনের প্রতিশ্রুতি দেয় যা আপনি যদি এখন [মার্জ] বোতাম টিপেন তবে ঘটবে।
বেনি চেরনিয়াভস্কি-পাসকিন

6

যখন কোনও ব্যবহারকারী একটি টানার অনুরোধ জমা দেয়, তখন তারা কাঁটাচামড়ার ক্লোনটির একটি শাখা থেকে অন্য ব্যবহারকারীর ভান্ডারে ফিরে যাওয়ার জন্য কিছু পরিবর্তন জিজ্ঞাসা করে।

আপনি যে পরিবর্তনগুলি চান তা পুল অনুরোধের উত্স থেকে পাওয়া যেতে পারে। এটি করার জন্য, ব্যবহারকারীর সংগ্রহস্থল ( git://github.com/berstend/frappe.git) ক্লোন করুন এবং তারপরে ( feature/mongoose-support) থেকে পুল অনুরোধটি তৈরি করেছেন তার শাখাটি পরীক্ষা করে দেখুন ।


1

গিট-এক্সট্রা ইনস্টল করার পরে

(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]

1

গিথুবের অফিসিয়াল নতুন কমান্ড লাইন ইন্টারফেসের সাথে :

gh repo clone org/repo
cd repo
gh pr checkout 44

44পিআর নম্বর কোথায় , তবে শাখার নামও হতে পারে।


অতিরিক্ত বিশদ এবং বিকল্প এবং ইনস্টলেশন নির্দেশাবলী দেখুন


0

এই টান অনুরোধটি সেই ব্যক্তির কাঁটাচামচ থেকে কমিটগুলি দেখায় যাতে আপনি দেখতে পান যে সে feature/mongoose-supportশাখা থেকে তার পরিবর্তনগুলি চাপছে।

আপনি তার সংগ্রহস্থলটিকে ক্লোন করতে এবং সেই শাখায় চেকআউট করতে পারেন


0

আমার জন্য, এটি হিসাবে সহজ ছিল

git fetch origin pull/4/head

4এখানে কোথায় পাওয়া গেছে:

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.