मैं gitHub के साथ gitHub पुल अनुरोध को कैसे देख सकता हूं?


251

मैं पहले से बनाए गए पुल अनुरोध (GitHub वेब इंटरफेस के माध्यम से बनाया गया) की जांच करना चाहता हूं। मैंने अलग-अलग स्थानों को खोजा और पाया जहाँ एक refs / pull या refs / pull / pr

लेकिन जब मैं fetch = +refs/pull/*/head:refs/remotes/origin/pr/*git config फाइल में जोड़ता हूं और git fetch करता हूं

मैं क्या गलत कर रहा हूँ? क्या GitHub को स्वतः ही पुल / xyz सामान बनाना चाहिए, या क्या मुझे कुछ कॉन्फ़िगर करना होगा?


आपकी कॉन्फ़िग फ़ाइल का पूरा दूरस्थ भाग कैसा दिखता है?



मैं इस सवाल पर समाप्त हो गया, लेकिन मुझे वास्तव में stackoverflow.com/q/1783405/2413303
EpicPandaForce

1
दूसरा पैराग्राफ पूर्ण वाक्य नहीं है। "लेकिन जब मैं जोड़ता हूं ... और एक गिट लाने के लिए" - जब आप इन चीजों को करते हैं तो क्या होता है?
cp.engr

जवाबों:


385

अपने स्थानीय रेपो में एक दूरस्थ पीआर लाने के लिए,

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मूल रिपॉजिटरी को ( जैसे help.github.com/articles/configuring-a-remote-for-a-fork , उदाहरण के लिए) को कॉन्फ़िगर किया । उल्लिखित कमांड में बदलाव originकरना सुनिश्चित करें upstream, यदि आप मूल रेपो से पुल अनुरोध प्राप्त करना चाहते हैं।
mvlabat

127

आपको एक शाखा का नाम दिए बिना यह प्राप्त होगा:

git pull origin pull/939/head

मुझे अपनी मशीन पर एक विशिष्ट पुल अनुरोध कैसे मिलेगा?


यह वास्तव में पर्याप्त है टी.के.एस
RLL

यह मेरे लिए काम करता है, टिम्बो की भ्रूण विधि ने कुछ किया है, लेकिन सही काम नहीं किया है
मल्हल

30
ध्यान दें कि यदि आप अपनी मास्टर शाखा पर रहते हैं, उदाहरण के लिए, यह सीधे इस शाखा में प्रतिबद्ध होगा। यदि आप मंचन के लिए पुल अनुरोध को एक अलग शाखा में लाना चाहते हैं, तो @ टिम्बो का उत्तर दें।
फीनिक्स

3
Ditto क्या @ फीनिक्स ने कहा। मैं चाहता हूं कि मेरी मशीन पर अपनी शाखा के तहत पुल अनुरोध शाखा को दोहराया जाए, न कि मास्टर को।
पॉल चेरोच

यह तब भी काम करता है जब आप बाद में पुल अनुरोध से परिवर्तन को अपनी स्थानीय शाखा में खींचना चाहते हैं।
ल्युएटर

52

यह बताता है कि जब आप एक गॉच लाते हैं तो क्या खुशी मिलती है:

जाहिर है, अपने प्रोजेक्ट के URL से मिलान करने के लिए github 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) - स्थानीय स्तर पर एक पुल अनुरोध की जाँच करता है

SYNOPSIS

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

विवरण

GitHub पुल अनुरोध संख्या के आधार पर एक स्थानीय शाखा बनाता है, और बाद में उस शाखा पर स्विच करता है।

से लाने के लिए रिमोट का नाम। के लिए चूक 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

मैं स्थानीय शाखा बनाए बिना और HEAD अलग राज्य में रहना चाहता हूं । यह मुझे जल्दी से अनावश्यक स्थानीय शाखाओं के साथ अपने स्थानीय मशीन को प्रदूषित किए बिना पुल अनुरोध की जांच करने की अनुमति देता है।

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

जहां IDएक पुल अनुरोध आईडी है और upstreamजहां मूल पुल का अनुरोध बनाया गया है (यह हो सकता है origin, उदाहरण के लिए)।

मुझे उम्मीद है यह मदद करेगा।


1
मुझे यह समाधान पसंद है। एक लाभ यह है कि अगर पीआर को अधिक हिट के साथ अपडेट किया जाता है, तो आप इसे फिर से चला सकते हैं और इसे नए कमिट (एस) में खींच लेंगे।
एलेक्स जॉनसन

14

स्टीवन पेनी के जवाब का संदर्भ देते हुए, यह एक परीक्षण शाखा बनाने और पीआर का परीक्षण करने के लिए सबसे अच्छा है। तो यहाँ आप क्या करेंगे।

  1. पीआर को स्थानीय रूप से विलय करने के लिए एक परीक्षण शाखा बनाएं। मान लें कि आप मास्टर शाखा में हैं:

git checkout -b test

  1. परीक्षण शाखा में पीआर परिवर्तन प्राप्त करें

git pull origin pull/939/head:test

अब, आप सुरक्षित रूप से इस स्थानीय परीक्षण शाखा (इस मामले में, नामित परीक्षण ) पर परिवर्तनों का परीक्षण कर सकते हैं और एक बार जब आप संतुष्ट हो जाते हैं, तो इसे GitHub से हमेशा की तरह विलय कर सकते हैं।


1
मैं एक और भी बेहतर करूंगा - मैं एक वर्कट्री बनाऊंगा, इसे एक नई testशाखा में सेट करुंगा और पीआर में इसे खींचूंगा - इस तरह जब मुझे स्थानीय रूप से शाखाएं बहाल करने की आवश्यकता नहीं है; मैं सिर्फ वर्कट्री का निपटान करता हूं। वास्तव में मैं अभी और कभी checkout -bनहीं - मैं हमेशा एक वर्कट्री और फिर शाखा बनाता हूं। डिस्क सस्ती है। बेशक, मेरे पास एक स्क्रिप्ट है जो ऐसा करती है; मैं व्यक्तिगत रूप से आवश्यक सभी कमांड टाइप नहीं करता।
मप्रिको

11

यदि आप Github.com का उपयोग कर रहे हैं, तो "पुल अनुरोध" पर जाएं, प्रासंगिक पुल अनुरोध पर क्लिक करें, और फिर "कमांड लाइन निर्देश" लिंक पर क्लिक करें: Github.com पर कमांड लाइन निर्देश


कहो, क्या वास्तव में एक रास्ता है - जब आप github.com देख रहे हैं मेरा मतलब है - पीआर की नई / परिवर्तित फाइलें डाउनलोड करने के लिए? इसलिए, जब आप गितुब पर एक रेपो को देख रहे हैं, तो आप "जिप के रूप में डाउनलोड करें" बटन पर क्लिक कर सकते हैं, या वास्तव में, आप काफी सरलता से क्लिक कर सकते हैं और प्रोजेक्ट के प्रत्येक (संपूर्ण) फ़ाइल को देख सकते हैं। पीआर के लिए, मैं नहीं देख सकता कि कैसे, बस, "फ़ाइल को देखो" के माध्यम से क्लिक करें - पता है कि मेरा क्या मतलब है? क्या मैं कुछ भूल रहा हूँ? चीयर्स!
फटी

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

उपरोक्त विकल्पों में से कुछ के साथ समस्या यह है कि यदि कोई व्यक्ति पीआर खोलने के बाद पीआर पर अधिक जोर देता है, तो वे आपको सबसे अद्यतन संस्करण नहीं देंगे। मेरे लिए जो सबसे अच्छा काम किया है - पीआर पर जाएं, और 'कमिट्स' दबाएं, सबसे हालिया प्रतिबद्ध हैश देखने के लिए नीचे स्क्रॉल करें यहां छवि विवरण दर्ज करें और फिर बस गिट चेकआउट का उपयोग करें, अर्थात

git checkout <commit number>

उपरोक्त उदाहरण में

git checkout 0ba1a50


2
मैंने इस समस्या को बिल्कुल स्टैकओवरफ्लो . com/a/30584951/git fetch origin pull/ID/head:BRANCHNAME 659732 में वर्णित दृष्टिकोण के साथ मारा । समाधान के लिए धन्यवाद!
21


5

Bitbucket के लिए, आपको शब्द 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

Github ने हाल ही में github-cli नामक एक क्ली यूटिलिटी जारी की । इसे स्थापित करने के बाद, आप इसकी आईडी का उपयोग करके स्थानीय रूप से पुल अनुरोध की शाखा की जांच कर सकते हैं

उदाहरण के लिए: 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.