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


251

আমি পূর্বে তৈরি একটি পুল অনুরোধ (গিটহাব ওয়েব ইন্টারফেসের মাধ্যমে তৈরি) পরীক্ষা করতে চাই। আমি অনুসন্ধান করেছি এবং বিভিন্ন জায়গা পেয়েছি যেখানে একটি রেফ / টানা বা রেফগুলি / টান / পিআর

তবে আমি যখন fetch = +refs/pull/*/head:refs/remotes/origin/pr/*গিট কনফিগারেশন ফাইলটিতে যুক্ত করি এবং একটি গিট আনতে পারি

আমি কি ভুল করছি? গিটহাবের কি স্বয়ংক্রিয়ভাবে টানা / এক্সআইজেড স্টাফ তৈরি করা উচিত, বা আমাকে কিছু কনফিগার করতে হবে?


আপনার কনফিগারেশন ফাইলের সম্পূর্ণ দূরবর্তী বিভাগটি দেখতে কেমন?



আমি এই প্রশ্নের উপর শেষ পর্যন্ত, কিন্তু আমি আসলে প্রয়োজন stackoverflow.com/q/1783405/2413303
EpicPandaForce

1
দ্বিতীয় অনুচ্ছেদটি সম্পূর্ণ বাক্য নয়। "তবে যখন আমি যুক্ত করি ... এবং একটি গিট আনতে" - আপনি যখন এই জিনিসগুলি করেন তখন কি হয়?
cp.engr

উত্তর:


385

আপনার স্থানীয় রেপোতে একটি দূরবর্তী PR আনতে,

git fetch origin pull/ID/head:BRANCHNAME

IDপুল অনুরোধ আইডিটি কোথায় এবং BRANCHNAMEআপনি তৈরি করতে চান এমন নতুন শাখার নাম। একবার আপনি শাখা তৈরি করে নিলে, সহজভাবে

git checkout BRANCHNAME

আরও জানতে অফিসিয়াল গিটহাব ডকুমেন্টেশন দেখুন।


11
আমি এটিকে আমার স্থানীয় ফোরকড রেপোতে একটি প্রবাহের রেপো থেকে পিআর আনতে ব্যবহার করেছি, আপনি উত্সের পাশাপাশি উত্স প্রতিস্থাপন করতে পারেন।
Jngai1297

18
আমার কমান্ডটি git fetch origin pull/1/head:githubusernameএমন প্রত্যাশার মতো শেষ হয়েছিল , যা আমি প্রত্যাশা করছিলাম না
অ্যান্থনি

1
কীভাবে ফিরিয়ে দেব?
fico7489

8
@ BRANCHNAMEশাখার নাম আপনি যা চান তা অ্যান্টাইনই । আমি অনুমান করছি আপনি এমন একটি নাম ব্যবহার করার চেষ্টা করেছিলেন যা ইতিমধ্যে বিদ্যমান ছিল (যেমন master) এবং এটি কার্যকর হয়নি, সুতরাং আপনি আপনার ব্যবহারকারীর নামটি চেষ্টা করেছিলেন, যা কাজ করেছিল, কারণ এই নামটির সাথে তাদের কোনও শাখা ছিল না। আপনি যা বলছিলেন তা আমি ভুল বুঝেছি।
নাটোয়ামি

1
এটি এমন ক্ষেত্রে হতে পারে যে আপনি নিজের স্থানীয় originকাঁটাচামচটি সেইভাবে আপনার কাঁটাতেupstream এবং মূল সংগ্রহস্থলের দিকে নির্দেশ করেছেন ( উদাহরণস্বরূপ হেল্প.github.com/articles/configuring-a-remote-for-a-fork এর জন্য)। আপনি যদি মূল রেপো থেকে পুল অনুরোধ আনতে চান তবে উল্লিখিত কমান্ডে পরিবর্তন originকরতে ভুলবেন না upstream
mvlabat

126

এটি আপনাকে একটি শাখার নাম না দিয়ে এনে দেবে:

git pull origin pull/939/head

আমি কীভাবে আমার মেশিনে একটি নির্দিষ্ট টান অনুরোধ পেতে পারি?


এটি আসলেই যথেষ্ট,
tks

এইটি আমার জন্য কাজ করেছে, টিম্বোর আনার পদ্ধতিটি কিছু করেছে তবে সঠিক জিনিস নয়
ম্যালহাল

30
মনে রাখবেন যে আপনি যদি মাস্টার শাখায় থাকাকালীন এটি করেন তবে এটি সরাসরি এই শাখায় প্রতিশ্রুতিবদ্ধ। আপনি যদি মঞ্চের জন্য টানার অনুরোধটিকে একটি পৃথক শাখায় আনতে চান তবে @ টিম্বোর উত্তরটি চেষ্টা করুন।
ফিনিক্স

3
ডিটো @ ফিনিক্স কী বলেছে। আমি চাই টান অনুরোধ শাখাটি তার নিজস্ব শাখার অধীনে আমার মেশিনে নকল করা উচিত, মাস্টার নয়।
পল চেরনোচ

এটি পরে কাজ করে যদি আপনি পরে স্থানীয় স্থানীয় শাখায় টানার অনুরোধ থেকে পরিবর্তনগুলি টানতে চান।
luator

52

আপনি যখন গিট আনতে যাবেন তখন সেই সংক্ষিপ্তসারটি বর্ণনা করে:

স্পষ্টতই, আপনার প্রকল্পের URL টির সাথে গিথুব url পরিবর্তন করুন। এটি দেখতে এইভাবে শেষ হয়:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:joyent/node.git
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

এখন সমস্ত টানার অনুরোধগুলি আনুন:

$ git fetch origin
From github.com:joyent/node
 * [new ref]         refs/pull/1000/head -> origin/pr/1000
 * [new ref]         refs/pull/1002/head -> origin/pr/1002
 * [new ref]         refs/pull/1004/head -> origin/pr/1004
 * [new ref]         refs/pull/1009/head -> origin/pr/1009
...

একটি নির্দিষ্ট টান অনুরোধ পরীক্ষা করে দেখুন:

$ git checkout pr/999
Branch pr/999 set up to track remote branch pr/999 from origin.
Switched to a new branch 'pr/999'

সেই কাজটি স্বয়ংক্রিয় করতে আপনার 259 ইস্যুতে তালিকাভুক্ত বিভিন্ন স্ক্রিপ্ট রয়েছে । Git-অতিরিক্ত প্রকল্প কমান্ড প্রস্তাব (বাস্তবায়িত জনসংযোগ 262
git-pr )

git-pr(1) - স্থানীয়ভাবে একটি অনুরোধ পরীক্ষা করে দেখুন

সংক্ষিপ্তসার

git-pr <number> [<remote>]
git-pr clean

বর্ণনা

গিটহাবের পুল অনুরোধ নম্বরটির ভিত্তিতে একটি স্থানীয় শাখা তৈরি করে এবং সেই শাখায় পরে স্যুইচ করুন।

থেকে আনতে রিমোটের নাম। ডিফল্টorigin

উদাহরণ

এটি এর 226থেকে টানার অনুরোধটি পরীক্ষা করে origin:

$ git pr 226

remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 3), reused 9 (delta 3)
Unpacking objects: 100% (12/12), done.
From https://github.com/visionmedia/git-extras
  * [new ref] refs/pull/226/head -> pr/226
Switched to branch 'pr/226'

38

আমি স্থানীয় শাখা না তৈরি করা এবং চেকআউটকে অগ্রাধিকার দিতে পছন্দ করি এবং হেড বিচ্ছিন্ন অবস্থায় থাকি । এটি আমার স্থানীয় মেশিনকে অপ্রয়োজনীয় স্থানীয় শাখাগুলি দিয়ে দূষিত না করে দ্রুত টানা অনুরোধ পরীক্ষা করতে সহায়তা করে।

git fetch upstream pull/ID/head && git checkout FETCH_HEAD

কোথায় IDএকটি টান অনুরোধ আইডি এবং upstreamকোথায় আসল পুল অনুরোধ তৈরি করা হয়েছে (এটি হতে পারে)origin উদাহরণস্বরূপ )।

আমি আসা করি এটা সাহায্য করবে.


1
আমি এই সমাধানটি পছন্দ করি। সুবিধাগুলির মধ্যে একটি হ'ল যদি আরও কমিটের সাথে জনসংযোগ আপডেট করা হয় তবে আপনি এটি আবার চালাতে পারেন এবং এটি নতুন কমিট (গুলি) এ টানবে।
অ্যালেক্স জনসন

14

স্টিভেন পেনিটির উত্তর উল্লেখ করে, একটি পরীক্ষা শাখা তৈরি করা এবং জনসংযোগ পরীক্ষা করা ভাল। আপনি এখানে কি করবেন তাই এখানে।

  1. স্থানীয়ভাবে জনসংযোগ একীভূত করতে একটি পরীক্ষা শাখা তৈরি করুন। ধরে নিচ্ছেন আপনি মাস্টার শাখায় রয়েছেন:

git checkout -b test

  1. পরীক্ষার শাখায় PR পরিবর্তন করুন Get

git pull origin pull/939/head:test

এখন, আপনি নিরাপদে এই স্থানীয় পরীক্ষা ডালে পরিবর্তনগুলি (এই ক্ষেত্রে, নামে পরীক্ষা করতে পারেন পরীক্ষা ) এবং একবার আপনি সন্তুষ্ট হলে, GitHub থেকে যথারীতি এটা মার্জ করতে পারবেন।


1
আমি আরও একটি ভাল যেতে চাই - আমি একটি ওয়ার্ক্রিট তৈরি করব, এটি একটি নতুন testশাখায় সেট করব এবং পিআর-তে টানব - সেভাবে স্থানীয়ভাবে যখন শাখাগুলি পুনরুদ্ধার করার প্রয়োজন হয় না; আমি শুধু ওয়ার্কট্রি নিষ্পত্তি করি। আসলে আমি checkout -bআর কখনও বলি না - আমি সর্বদা একটি ওয়ার্ট্রি তৈরি করি এবং তারপরে শাখা করি। ডিস্ক সস্তা। অবশ্যই, আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা এটি করে; আমি স্বতন্ত্রভাবে প্রয়োজনীয় সমস্ত কমান্ড টাইপ করি না।
এম্পেরিকো

11

আপনি যদি গিথুব ডট কম ব্যবহার করছেন তবে "পুল অনুরোধগুলি" এ যান, সম্পর্কিত পুল অনুরোধটিতে ক্লিক করুন এবং তারপরে "কমান্ড লাইন নির্দেশাবলী" লিঙ্কটিতে ক্লিক করুন: Github.com এ কমান্ড লাইন নির্দেশাবলী


বলুন, আসলে কোনও উপায় আছে - আপনি যখন github.com এ দেখছেন আমার অর্থ - পিআর এর নতুন / পরিবর্তিত ফাইলগুলি ডাউনলোড করতে? সুতরাং, আপনি যখন গিথুবটিতে একটি রেপো খুঁজছেন, আপনি "সহজ হিসাবে ডাউনলোড করুন" জিপ হিসাবে বোতামটি ক্লিক করতে পারেন বা সত্যই আপনি বেশ সহজ সরলভাবে প্রকল্পটির প্রতিটি (পুরো) ফাইলটি দেখতে এবং দেখতে পারেন। জনসংযোগের জন্য, আমি কীভাবে "ফাইলটি দেখার জন্য" ক্লিক করতে পারি তা দেখতে পাচ্ছি না - আমার অর্থ কী? আমি কিছু অনুপস্থিত করছি? চিয়ার্স!
ফ্যাটি 13

9

সংগ্রহস্থল থেকে টানা অনুরোধগুলি আনতে git configআপনি একটি নতুন বিধি লিখতে কমান্ডটি ব্যবহার করতে পারেন .git/config:

$ git config --local --add remote.origin.fetch '+refs/pull/*/head:refs/remotes/origin/pr/*'

এবং তারপরে ঠিক:

$ git fetch origin
Fetching origin
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/container-images/memcached
 * [new ref]         refs/pull/2/head -> origin/pr/2
 * [new ref]         refs/pull/3/head -> origin/pr/3

8

উপরের কয়েকটি বিকল্পের সমস্যাটি হ'ল যদি কেউ পিআর খোলার পরে PR তে আরও প্রতিশ্রুতি দেয় তবে তারা আপনাকে সবচেয়ে আপডেট হওয়া সংস্করণ দেয় না give আমার জন্য যা ভাল কাজ করেছে তা হল - পিআর এ যান এবং 'কমিটস' টিপুন, সাম্প্রতিক কমিটের হ্যাশটি দেখতে নীচে স্ক্রোল করুন এখানে চিত্র বর্ণনা লিখুন এবং তারপরে কেবল গিট চেকআউট ব্যবহার করুন, অর্থাত্‍

git checkout <commit number>

উপরের উদাহরণে

git checkout 0ba1a50


2
স্ট্যাকওভারফ্লো . com/a/30584951/659732 এgit fetch origin pull/ID/head:BRANCHNAME উল্লিখিত পদ্ধতির সাথে আমি ঠিক এই সমস্যাটি আঘাত করেছি । সমাধানের জন্য ধন্যবাদ!
জোউইজ


5

বিটবকেটের জন্য আপনার শব্দটি প্রতিস্থাপন pullকরতে হবে pull-requests

প্রথমে, আপনি git ls-remote originআদেশ দ্বারা পুল অনুরোধ URL শৈলীর বিষয়টি নিশ্চিত করতে পারেন ।

$ git ls-remote origin |grep pull
f3f40f2ca9509368c959b0b13729dc0ae2fbf2ae    refs/pull-requests/1503/from
da4666bd91eabcc6f2c214e0bbd99d543d94767e    refs/pull-requests/1503/merge
...

আপনি দেখতে পারেন, এটি refs/pull-requests/1503/fromপরিবর্তে হয়refs/pull/1503/from

তারপরে আপনি যে কোনও একটির উত্তর কমান্ড ব্যবহার করতে পারেন।


4

আমি ঘটনাক্রমে গিট-এক্সট্রা দ্বারা সরবরাহ করা প্রায় একই রকম লেখা শেষ করেছি। সুতরাং আপনি যদি আরও কিছু অতিরিক্ত কমান্ডের গুচ্ছ ইনস্টল না করে একক কাস্টম কমান্ড পছন্দ করেন তবে এই git-prফাইলটি আপনার কোথাও রাখুন $PATHএবং আপনি কেবল লিখতে পারেন:

git pr 42
// or
git pr upstream 42
// or
git pr https://github.com/peerigon/phridge/pull/1

4

যদি আপনি "গিথুব কাঁটাচামচ" কর্মপ্রবাহ অনুসরণ করে থাকেন, যেখানে আপনি কাঁটাচামচ তৈরি করেন এবং দূরবর্তী উজানের রেপো যুক্ত করেন:

14:47 $ git remote -v
origin  git@github.com:<yourname>/<repo_name>.git (fetch)
origin  git@github.com:<yourname>/<repo_name>.git (push)
upstream        git@github.com:<repo_owrer>/<repo_name>.git (fetch)
upstream        git@github.com:<repo_owner>/<repo_name>.git (push)

আপনার বর্তমান শাখায় টানতে আপনার আদেশটি দেখতে পাবেন:

git pull upstream pull/<pull_request_number>/head

একটি নতুন শাখায় টানতে কোডটি দেখতে দেখতে এই রকম হবে:

git fetch upstream pull/<pull_request_number>/head:newbranch

3

গিথুব সম্প্রতি গ্রিথ ইউটিলিটি প্রকাশ করেছে গিথুব-ক্লিট । এটি ইনস্টল করার পরে, আপনি এর আইডি ব্যবহার করে স্থানীয়ভাবে একটি পুল অনুরোধের শাখাটি চেকআউট করতে পারেন

উদাহরণ: gh pr checkout 2267

নোট করুন যে এই প্যাকেজটি এখনও বিটাতে রয়েছে


1

স্থানীয় শাখায় রিমোট পিআর শাখা পান:

git fetch origin ‘remote_branch’:‘local_branch_name’

স্থানীয় শাখার প্রবাহকে দূরবর্তী শাখায় সেট করুন।

git branch --set-upstream-to=origin/PR_Branch_Name local_branch

যখন আপনি স্থানীয় পরিবর্তনগুলি আবার পিআর শাখায় ঠেলাতে চান

git push origin HEAD:remote_PR_Branch_name


0

মনে করুন আপনার উত্স এবং প্রবাহের তথ্য নীচের মতো

   $ git remote -v
   origin  git@github.com:<yourname>/<repo_name>.git (fetch)
   origin  git@github.com:<yourname>/<repo_name>.git (push)
   upstream   git@github.com:<repo_owner>/<repo_name>.git (fetch)
   upstream   git@github.com:<repo_owner>/<repo_name>.git (push)

এবং আপনার শাখার নাম মত

   <repo_owner>:<BranchName>

তারপর

   git pull origin <BranchName>

কাজ করা উচিত


আপনি যখন কোড ভাগ করেছেন, দয়া করে আপনার কোডটি ব্যাখ্যা করার চেষ্টা করুন
ইউনুস টেমুরলেঙ্ক

-3

যদি তাদের কমিটগুলি সেখানে তাদের কাঁটাযুক্ত রেপোর মাস্টার শাখায় থাকে তবে আপনি কেবল নিম্নলিখিতটি করতে পারেন।

git fetch git@github.com:<repo_owner>/<repo_name>.git
git checkout FETCH_HEAD
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.