सवाल गिट रिमोट शाखा लाओ


मेरे सहयोगी और मैं एक ही भंडार पर काम कर रहे हैं, हमने इसे विभिन्न परियोजनाओं के लिए तकनीकी रूप से दो शाखाओं में बांटा है, लेकिन उनके पास समानताएं हैं इसलिए हम कभी-कभी शाखा से * मास्टर को वापस लेना चाहते हैं।

हालांकि, मेरे पास शाखा है। मेरा सवाल यह है कि, मेरे सहयोगी ने उस शाखा को विशेष रूप से कैसे खींच सकता है? ए git clone रिपो के लिए स्थानीय रूप से शाखाएं बनाने लगती नहीं हैं, हालांकि मैं अपने अंत में धक्का देने के बाद उन्हें अवांछित पर देख सकता हूं।

इसके अलावा, जब मैंने मूल रूप से शाखा बनाई तो मैंने किया -b checkout। यकीन नहीं है कि इससे बहुत अंतर आता है?

iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

git fetch origin discover
git checkout discover

ये वे आदेश हैं जिन्हें मैंने भाग लिया था। लेकिन यह निश्चित रूप से काम नहीं कर रहा है। मैं उस शाखा को जांचने में सक्षम होना चाहता हूं और फिर शाखाओं को विभिन्न सहयोगियों या वर्कस्टेशन से बदलता हूं।


1602
2018-03-02 17:06


मूल


के संभावित डुप्लिकेट गिट चेकआउट रिमोट शाखा - Andrew Marshall
मैंनें इस्तेमाल किया: git fetch --all, फिर सभी शाखाओं को देखने के लिए: git branch, फिर मैं शाखा की जांच करता हूं: git checkout nameofnewbranch - Jeff Mattson
अपने प्रश्न ans की जांच करें https://stackoverflow.com/questions/1072261/push-and-pull-branches-in-git/47780374#47780374 - Rizo


जवाब:


आपको एक स्थानीय शाखा बनाने की जरूरत है जो एक दूरस्थ शाखा को ट्रैक करता है। निम्न आदेश नाम की एक स्थानीय शाखा बना देगा daves_branch, दूरस्थ शाखा को ट्रैक करना मूल / daves_branch। जब आप अपने परिवर्तनों को दबाते हैं तो दूरस्थ शाखा अपडेट हो जाएगी।

गिट के अधिकांश संस्करणों के लिए:

git checkout --track origin/daves_branch

--track के लिए शॉर्टेंड है git checkout -b [branch] [remotename]/[branch] जहां [remotename] है मूल इस मामले में और [शाखा] दो बार समान है, daves_branch इस मामले में।

गिट 1.5.6.5 के लिए आपको इसकी आवश्यकता है:

git checkout --track -b daves_branch origin/daves_branch

गिट 1.7.2.3 और उच्चतम के लिए यह पर्याप्त है (शायद पहले शुरू हो सकता है लेकिन यह सबसे पुरानी पुष्टि है जिसे मैं जल्दी से पा सकता हूं):

git checkout daves_branch

ध्यान दें कि हाल के गिट संस्करणों के साथ, यह आदेश स्थानीय शाखा नहीं बनाएगा और आपको 'अलग-अलग सिर' स्थिति में डाल देगा। यदि आप एक स्थानीय शाखा चाहते हैं, तो इसका उपयोग करें --track विकल्प। यहां पूरा विवरण: http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches


2225
2018-03-02 17:45



यह सुनिश्चित करने के लिए "गिट फ़ेच" सुनिश्चित करें कि आपका रेपो दूरस्थ संदर्भों के साथ अपडेट किया गया है और "गिट चेकआउट - ट्रैक मूल / खोज" पर्याप्त होना चाहिए। फिर आप अपने परिवर्तनों के साथ रिमोट को सिंक करने के लिए उस शाखा और "गिट पुश" पर प्रतिबद्ध हो सकते हैं। - ralphtheninja
मैंने कोशिश की और "घातक: गिट चेकआउट: पथ अपडेट करना शाखाओं के साथ असंगत है। क्या आप 'अपस्ट्रीम / डेवलपमेंट' चेकआउट करना चाहते हैं जिसे प्रतिबद्ध के रूप में हल नहीं किया जा सकता है?"। क्या मुझसे कुछ गलत हो रही है? - Neil Barnwell
ऐसा लगता है कि गिट 1.5.6.5 की बजाय इसकी आवश्यकता है: गिट चेकआउट --track -b मूल / daves_branch - Charlie
इससे मेरे लिए गड़बड़ी हुई, उसने मूल / <शाखा> नाम की एक स्थानीय शाखा बनाई जो अब रिमोट शाखा मूल / <शाखा> से संदिग्ध है और मुझे नहीं पता कि पागल स्थानीय शाखा से कैसे छुटकारा पाना है! - Alan Moore
आपको स्थानीय शाखा का नाम स्पष्ट रूप से जोड़ना होगा, अन्यथा गिट पूर्ण शाखा पथ के साथ एक नई स्थानीय शाखा बनाता है, जैसा कि @AlanMoore और @ derekmx271 ऊपर बताया गया है: git checkout -b --track daves_branch origin/daves_branch - Mike Scott


मैंने उपयोग कर लिया है fetch के बाद checkout ...

git fetch <remote> <rbranch>:<lbranch> 
git checkout <lbranch>

... कहा पे <rbranch> रिमोट शाखा है या स्रोत रेफरी तथा <lbranch> अभी तक है न के बराबर स्थानीय शाखा या गंतव्य रेफरी आप ट्रैक करना चाहते हैं और आप शायद रिमोट शाखा या स्रोत रेफरी के समान नाम देना चाहते हैं। यह नीचे समझाया गया है विकल्प के स्पष्टीकरण में <refspec>

गिट इतना स्मार्ट है कि ऑटो अगर मैं पहले कमांड को पूरा करता हूं टैब रिमोट शाखा के पहले कुछ पत्रों के बाद। आईई: मुझे स्थानीय शाखा का नाम भी नहीं देना है, गिट स्वचालित रूप से मेरे लिए रिमोट शाखा का नाम कॉपी करता है। धन्यवाद गिट!

के रूप में भी इस तरह के एसओ पोस्ट में जवाब दिखाता है, अगर आप स्थानीय शाखा का नाम नहीं देते हैं fetch, जब भी आप इसका उपयोग करके इसे चेक आउट करते हैं तब भी आप इसे बना सकते हैं -b झंडा। अर्थात:  git fetch <remote> <branch> के बाद git checkout -b <branch> <remote>/<branch> मेरे शुरुआती उत्तर के समान ही है। और जाहिर है अगर आपके रेपो है केवल एक रिमोट, तो आप बस कर सकते हैं git checkout <branch> बाद fetch और यह आपके लिए एक स्थानीय शाखा तैयार करेगा। ईजी: आपने अभी एक रेपो क्लोन किया है और रिमोट से अतिरिक्त शाखाएं देखना चाहते हैं।

मेरा मानना ​​है कि कुछ दस्तावेज के लिए fetch हो सकता है verbatim से कॉपी किया गया हो सकता है pull। विशेष रूप से अनुभाग पर <refspec> में विकल्प एक ही है। हालांकि, मुझे विश्वास नहीं है fetch क्या कभी merge, ताकि यदि आप कोलन के गंतव्य पक्ष को खाली छोड़ दें fetch  कुछ भी नहीं करना चाहिए

ध्यान दें कि git fetch <remote> <refspec> के लिए छोटा है git fetch <remote> <refspec>: जो इसलिए कुछ नहीं करेगा, लेकिन git fetch <remote> <tag> के समान है git fetch <remote> <tag>:<tag> जो रिमोट की प्रतिलिपि बनाना चाहिए <tag> स्थानीय स्तर पर।

मुझे लगता है कि यह केवल सहायक है अगर आप स्थानीय रूप से रिमोट शाखा की प्रतिलिपि बनाना चाहते हैं, लेकिन जरूरी नहीं कि इसे तुरंत जांचें। अन्यथा अब मैं उपयोग करूंगा उपरोक्त स्वीकृत उत्तर, जो कि पहले खंड में विस्तार से समझाया गया है चेकआउट विवरण और बाद में में विकल्प स्पष्टीकरण के तहत खंड --track, क्योंकि यह 1-लाइनर है। कुंआ... एक 1-लाइनर की तरह, क्योंकि आप करेंगे फिर भी भागना है git fetch <remote> प्रथम।

एफवाईआई: का आदेश <refspecs> (स्रोत: गंतव्य) विचित्र प्री गिट -17 विधि के लिए बताता है रिमोट शाखाओं को हटाने। आईई: गंतव्य refspec में कुछ भी पुश।


744
2018-04-19 00:45



आप मानते हैं कि गिट स्वत: पूर्णता सेटअप है। code-worrier.com/blog/autocomplete-git - antonagestam
यह एक स्थानीय शाखा में रिमोट कोड प्राप्त करने के लिए मेरे लिए काम किया। हालांकि रिमोट शाखा को ट्रैक करने के लिए मेरी स्थानीय शाखा नहीं मिली थी। - Aknosis
यह मेरे लिए काम करता है, स्वीकृत उत्तर नहीं था। - Parthian Shot
किसी कारण के लिए, git fetch remote branch मेरे लिए एक शाखा प्रमुख नहीं जोड़ा, हालांकि सभी रेफरी मिल गईं, इसलिए जब मैंने स्वीकृत उत्तर में चरणों का पालन करने का प्रयास किया, तो मुझे त्रुटि मिली pathspec did not match any file(s) known to git., लेकिन वो rbranch:lbranch दृष्टिकोण काम किया। दिलचस्प बात यह है कि यह उसी टैग को भी लाया जो उसी उपसर्ग के साथ शुरू हुआ, जैसे कि यह एक वाइल्डकार्ड है (rbranch*)। - haridsv
Nit: गिट स्वतः पूर्ण नहीं करता है, यह बैश खोल है जो यह कर रहा है। - legalize


यदि आप एक नई रिमोट शाखा "चेकआउट" करने की कोशिश कर रहे हैं (जो केवल रिमोट पर मौजूद है, लेकिन स्थानीय रूप से नहीं), तो आपको इसकी आवश्यकता होगी:

git fetch origin
git checkout --track origin/<remote_branch_name>

यह मानता है कि आप से प्राप्त करना चाहते हैं मूल। यदि नहीं, तो प्रतिस्थापित करें मूल आपके दृवारा दूरस्थ नाम।


270
2018-05-17 12:14



उत्पत्ति से "खींचें" भ्रमित भाषा है, ऊपर से अपनी टिप्पणी को मूल से "लाने" में बदलने के लिए बेहतर है। पुल एक ऐसा आदेश है जो एक fetch और विलय करता है और यह निश्चित रूप से नए आने वालों को भ्रमित करता है (मुझे शामिल) - Davos
मेरे लिए काम किया! इसे अब मेरे नोट्स में जोड़ना :) धन्यवाद! - hmd
मेरे लिए काम किया, मुझे सही रिमोट शाखा नहीं मिली थी, इसलिए स्वीकृत उत्तर एक भ्रमित संदेश के साथ मेरे लिए असफल रहा। +1 - Nathan Hinchey
सरल और मीठा, मुझे यकीन है कि ज्यादातर उपयोगकर्ता केवल इस ऑपरेशन को पहले स्थान पर करना चाहते हैं। - vikramvi
यही वह है जो मैं हमेशा ढूंढ रहा हूं! धन्यवाद @paneer_tikka - Kris Randall


Mybranch को चेकआउट करने के लिए जो दूरस्थ रूप से मौजूद है और स्थानीय रूप से नहीं - यह मेरे लिए काम करता है:

git fetch --all
git checkout myBranch

मुझे यह संदेश मिला:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'

88
2017-11-12 03:36



दूसरे शब्दों में आपको लिखना नहीं है -t? - Andrew Samuelsen
मुझे लगता है कि इस जवाब में एक त्रुटि है। मैंने मूल रूप से बिना आदेश दिया था -t और पा लिया You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. क्योंकि एक ही नाम की स्थानीय शाखा नहीं थी। मुझे फिर से भागना पड़ा -t ठीक करने के लिए। - stanri
यह मेरे लिए अच्छा काम करता है - मेरे सहयोगी ने एक नई रिमोट शाखा जोड़ दी थी जिसे मैं अपने स्थानीय रेपो में जोड़ना चाहता था। मैंने लेटिंग जारी रखी लेकिन स्थानीय शाखा को दिखाई देने वाली नई शाखा नहीं देखी। मुझे एहसास नहीं हुआ कि मैं बस दौड़ सकता था checkoutइसे बनाने के लिए। धन्यवाद! - skwidbreth
गिट संस्करणों पर निर्भर करता है। जैसा कि यहां कहीं और कहा गया है, नवीनतम संस्करण, केवल गिट चेकआउट <मूल पर शाखा का नाम> की आवश्यकता है। समान नाम स्थानीय बनाम रिमोट शाखाओं के साथ सावधान रहें - वे गड़बड़ कर देंगे - leRobot


उपयोग git branch -a (स्थानीय और दूरस्थ शाखाएं दोनों) या git branch -r (केवल रिमोट शाखाएं) सभी रिमोट और उनकी शाखाओं को देखने के लिए। फिर आप एक कर सकते हैं git checkout -t remotes/repo/branch रिमोट के लिए और एक स्थानीय शाखा बनाएँ।

उस रिमोट के लिए सभी रिफ और टैग देखने के लिए एक गिट एलएस-रिमोट कमांड भी है।


37
2018-03-02 17:16



git checkout remotes/repo/branch गिट चेकआउट को पथस्पेक के लिए देखो, रिमोट रेपो नहीं। - Erin
हां, रिमोट रेपो पर एक शाखा को चेकआउट करना भी संभव है? जाहिर है (या शायद यह इतना स्पष्ट नहीं था), रिमोट पहले प्राप्त किए जाते हैं ताकि आप उन्हें स्थानीय रूप से प्राप्त कर सकें। गिट बुक पर उनके लिए एक अच्छा अनुभाग है: git-scm.com/book/en/Git-Branching-Remote-Branches - Daniel Lee


शीर्षक और सवाल उलझन में हैं:

  • गिट रिमोट शाखा लाओ
  • मेरे सहयोगी विशेष रूप से उस शाखा को कैसे खींच सकते हैं।

यदि सवाल यह है कि रिमोट ब्रांच को चेकआउट करने के लिए रिमोट शाखा कैसे मिल सकती है या कैसे एक आसान समाधान है:

गिट (> = 1.6.6) के साथ आप उपयोग करने में सक्षम हैं:

git checkout <branch_name>

यदि स्थानीय है <branch_name> नहीं मिला है लेकिन मिलान करने वाले नाम के साथ एक रिमोट में एक ट्रैकिंग शाखा मौजूद है, इसके बराबर के रूप में व्यवहार करें:

git checkout -b <branch_name> --track <remote>/<branch_name>

गिट चेकआउट के लिए प्रलेखन देखें

अपने दोस्त के लिए:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'

33
2018-03-31 10:48



धन्यवाद Guillaume! मैंने अभी इस आदेश का उपयोग किया और मेरे सटीक मामले को दर्शाने के लिए इसके बारे में एक पोस्ट लिखा: leniel.net/2014/05/... - Leniel Maccaferri
<! - गिट चेकआउट <रिमोट-शाखा-नाम> -> अपेक्षित काम करता है, धन्यवाद गिलाउम! - Sachidananda Naik


git checkout -b serverfix origin/serverfix

यह एक आम पर्याप्त ऑपरेशन है कि गिट --ट्रैक शॉर्टेंड प्रदान करता है:

git checkout --track origin/serverfix

वास्तव में, यह इतना आम है कि उस शॉर्टकट के लिए भी एक शॉर्टकट है। यदि शाखा नाम जिसे आप चेकआउट (ए) की कोशिश कर रहे हैं, अस्तित्व में नहीं है और (बी) केवल एक रिमोट पर किसी नाम से मेल खाता है, तो गिट आपके लिए एक ट्रैकिंग शाखा तैयार करेगा:

git checkout serverfix

दूरस्थ शाखा की तुलना में एक अलग नाम के साथ एक स्थानीय शाखा स्थापित करने के लिए, आप आसानी से एक अलग स्थानीय शाखा नाम के साथ पहले संस्करण का उपयोग कर सकते हैं:

git checkout -b sf origin/serverfix

अब, आपकी स्थानीय शाखा एसएफ स्वचालित रूप से मूल / सर्वरफिक्स से खींच जाएगी।

स्रोत: स्कॉट चकॉन और बेन स्ट्रॉब द्वारा लिखित प्रो गिट द्वितीय संस्करण(पठनीयता के लिए कटौती)


24
2018-03-18 00:21



काम करता है! धन्यवाद! - Karl Pokus


git fetch

git branch -r

git checkout <branch_name>

12
2017-12-04 20:53





इस सरल आदेश के साथ:

git checkout -b 'your_branch' origin/'remote branch'

11
2018-05-18 09:38



काम करता है कि एक महान सरल जवाब। शीर्ष आईएमओ की ओर होना चाहिए - russiansummer


आप रिमोट शाखा को एक शॉट में भी ला सकते हैं और चेकआउट कर सकते हैं: -

git fetch && git checkout the-branch-name

10
2018-03-25 06:43