क्या हम रिमोट पुल के दौरान सभी टैग लाने के लिए Git डिफ़ॉल्ट सेट कर सकते हैं?


154

वर्तमान में मेरे पास निम्नलिखित की तरह एक git रिमोट सेटअप है:

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*

जब मैं git pullब्रांच मास्टर पर जारी करता हूं , तो सभी रिमोट हेड्स को रीमोट / अपस्ट्रीम में लाया जाता है, फिर रेमोट्स / अपस्ट्रीम / मास्टर को मर्ज कर दिया जाता है। जिन टैग्स तक पहुंचा जा सकता है, उन्हें भी उसी समय लाया जाता है, जो बहुत सुविधाजनक है।

मैं git pullइसके अलावा रिमोट से सभी टैग लाना चाहता हूं , न कि सीधे उन सिर से जो पहुंच रहे हैं। मैंने मूल रूप से सेट करने की कोशिश की tagopt == --tags, लेकिन यह पाया कि केवल टैग लाने के लिए और इस तरह सब कुछ तोड़ दिया। (जूनियो भी कहता है कि यह एक भयावह गलतफहमी है )।

क्या git pullरिमोट हेड के अलावा, सभी रिमोट टैग को डिफ़ॉल्ट रूप से लाने का कोई तरीका है ?


1
अपने आप को एक अनुस्मारक: सुनिश्चित करें कि आपने वास्तव में पहले टैग को धकेल दिया है (स्वचालित रूप से काम नहीं करता है): git push origin <tag_name>
Hafenkranich

tagoptसमाधान का उपयोग करना अब गलत धारणा नहीं है; 1.9 / 2.0 (Q1 2014) के रूप में, यह सामान्य रूप से प्राप्त होने वाले जो भी है उसके अलावा सभी टैग प्राप्त करेगा ।
मैगफ्रीडा

जवाबों:


95

आपको अपने स्थानीय कॉन्फ़िगरेशन में टैग के लिए एक refspec जोड़कर इसे पूरा करने में सक्षम होना चाहिए। वस्तुतः:

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*
    fetch = +refs/tags/*:refs/tags/*

5
अहा, मैंने कभी महसूस नहीं किया कि आपके पास कई लाईन लाइनें हो सकती हैं, मैंने मान लिया कि आखिरी बस ओवरराइड होगी। यह बहुत अच्छा और स्पष्ट है।
jleahy

1
2.21 के साथ इसका उपयोग करने से सावधान रहें, Apple.stackexchange.com/questions/352404/…
Vadorequest

306

एक साधारण git fetch --tagsने मेरे लिए काम किया।


13
@ फ़िज़िक्स शायद शीर्षक को "डिफ़ॉल्ट रूप से" शामिल करने के लिए बदल दिया जाना चाहिए। इस पोस्ट ने मेरे सवाल का जवाब दिया।
मैट कनीसेर

2
इसने मेरे लिए काम नहीं किया। मैं टैग के साथ देख सकते हैं git ls-remote
dangeroushobo

यह सटीक प्रश्न का उत्तर नहीं दे सकता है, लेकिन यह शीर्षक में प्रश्न का उत्तर देता है और यही मुझे वेब खोज के माध्यम से मिला।
ह्यूबर्ट ग्रेज्सकोविआक

68

--forceविकल्प स्थानीय टैग ताज़ा लिए उपयोगी है। मुख्यतः यदि आपके पास फ़्लोटिंग टैग हैं:

git fetch --tags --force

गिट पुल विकल्प में भी --forceविकल्प हैं, और विवरण समान है:

जब git fetch का उपयोग <rbranch>: <lbranch> refspec के साथ किया जाता है, तो यह स्थानीय शाखा <lbranch> को अद्यतन करने से इंकार कर देता है जब तक कि दूरस्थ शाखा <rbranch> यह नहीं आती है, यह <lbranch> का वंशज है। यह विकल्प उस चेक को ओवरराइड करता है।

लेकिन, के अनुसार --no-tags:

डिफ़ॉल्ट रूप से, दूरस्थ रिपॉजिटरी से डाउनलोड की जाने वाली वस्तुओं को इंगित करने वाले टैग को स्थानीय रूप से लाया और संग्रहीत किया जाता है।

यदि वह डिफ़ॉल्ट स्टेटमेंट कोई प्रतिबंध नहीं है, तो आप भी कोशिश कर सकते हैं

git pull --force

2
git pull --forceशामिल नहीं हैgit fetch --tags --force
Geniy

21

मेरे लिए निम्नलिखित काम करने लगा।

git pull --tags

केवल टैग प्राप्त करना, आपका शायद मतलब था: `git fetch --tags`
Yuseferi

पहले से ही एक उत्तर है git fetch --tags। मैं एक वैकल्पिक उत्तर देना चाहता था। खींच = लाना + मर्ज। तो भ्रूण भी होता है।
वसंत गणेश के


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.