मैं GitHub से एक रिपॉजिटरी क्लोन करना चाहूंगा। समस्या यह है कि मुझे मुख्य शाखा नहीं चाहिए; मैं इस अनपेक्षित पुल अनुरोध में संस्करण चाहता हूं ।
क्या मुख्य रिपॉजिटरी के बजाय पुल अनुरोध संस्करण को क्लोन करना मेरे लिए संभव है?
मैं GitHub से एक रिपॉजिटरी क्लोन करना चाहूंगा। समस्या यह है कि मुझे मुख्य शाखा नहीं चाहिए; मैं इस अनपेक्षित पुल अनुरोध में संस्करण चाहता हूं ।
क्या मुख्य रिपॉजिटरी के बजाय पुल अनुरोध संस्करण को क्लोन करना मेरे लिए संभव है?
जवाबों:
आप उस शाखा का क्लोन कर सकते हैं जिसे आप -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'
अब आप किसी भी PR को रन करके चेक कर सकते हैं git pr <pr_number>
, या git pr <pr_number> <remote>
यदि आपका github रिमोट नाम नहीं है 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
परिवर्तन करें, उन्हें करें, PUSH करें और GitHub पर अपने कांटे से नए PR खोलें
आप इस भंडार में दिए गए निर्देशों का पालन कर सकते हैं ताकि उनकी रिपॉजिटरी और शाखा का पता लगाए बिना सीधे रिमोट की जांच कर सकें।
उदाहरण उपयोग
मेरी एक परियोजना (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
है जिसे रिमोट के नाम से बदल दिया जाता है। इसका मतलब यह है कि दूरस्थ सिर (या उस सर्वर पर शाखाओं के प्रमुख) स्थानीय उपसर्गों द्वारा "मैप" किए जाते हैं github/
। इसलिए अगर मैंने किया git fetch github
और GitHub पर एक शाखा थी जो पहले से ही मेरी मशीन पर स्थानीय रूप से ध्यान नहीं दिया गया था, तो यह शाखा डाउनलोड करेगी और मैं इसे इस तरह स्विच कर सकता हूं git checkout -t github/branch_name
:।
दूसरी पंक्ति एक ही काम करती है, लेकिन यह मानक गिट शाखाओं के बजाय पुल अनुरोधों के लिए करती है। इसलिए आप देख रहे हैं refs/pull/*/head
। यह GitHub पर प्रत्येक पुल अनुरोध के प्रमुख को लाता है और इसे मैप करता है 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/#
। यह आपको दूरस्थ URL को कॉपी और पेस्ट करने, शाखा का नाम पता लगाने आदि से रोकता है। फिर आपको अतिरिक्त परेशानी के बिना अच्छी तरह से नामित, संक्षिप्त और सटीक शाखा नाम मिलते हैं। लेकिन मुझे लगता है कि यह भारी लग सकता है।
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
मैं जिस शाखा का मालिक नहीं हूं, उसके लिए मैं एक अनमैरिड पुल अनुरोध कैसे ला सकता हूं?
git pull
वर्तमान शाखा में एक मर्ज बनाता है; आमतौर पर एक पीआर के git fetch
लिए आप मूल लेखक का कोड प्राप्त करना चाहते हैं (यह तब FETCH_HEAD के रूप में सुलभ है)। यदि आप मर्ज करना चाहते हैं, तो यह भी ध्यान देने योग्य है pull/2/merge
(इसके बजाय pull/2/head
) - यह GitHub आपको सटीक मर्ज कमिट देता है जो कि आपने [मर्ज] बटन पर क्लिक किया होगा।
जब कोई उपयोगकर्ता एक पुल अनुरोध सबमिट करता है, तो वे एक कांटा पर एक शाखा से दूसरे उपयोगकर्ता के रिपॉजिटरी में वापस जाने के लिए कुछ बदलाव के लिए कह रहे हैं।
आपके इच्छित परिवर्तन पुल अनुरोध के स्रोत से प्राप्त किए जा सकते हैं। ऐसा करने के लिए, उपयोगकर्ता के रिपॉजिटरी ( 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]
Github की आधिकारिक नई कमांड लाइन इंटरफ़ेस के साथ :
gh repo clone org/repo
cd repo
gh pr checkout 44
जहां 44
पीआर नंबर है, लेकिन शाखा का नाम भी हो सकता है।
अतिरिक्त विवरण और विकल्प और स्थापना निर्देश देखें ।
clone
बल्किfetch
देखने के लिए आए : stackoverflow.com/questions/6743514/…