গিট ট্যাগগুলিও কি ধাক্কা খায়?


188

যেহেতু আমি আমার সংগ্রহশালা তৈরি করেছি এটি প্রদর্শিত হয় যে আমি যে ট্যাগগুলি তৈরি করছি সেগুলি সংগ্রহস্থলটিতে ঠেলাঠেলি করা হয়নি। আমি যখন git tagস্থানীয় ডিরেক্টরিতে করি তখন সমস্ত ট্যাগ উপস্থিত থাকে তবে আমি যখন দূরবর্তী সংগ্রহস্থলটিতে লগইন করি এবং একটি করি তখন git tagকেবল প্রথম কয়েকটি দেখায়।

সমস্যা কি হতে পারে?.


3
git push --follow-tagsএখন দরকারী হতে পারেন, আমার উত্তর নীচে দেখুন
ভনসি


1
সদৃশ সহ সম্মত হন: যদিও এটি পুরানো, অন্য প্রশ্নটি আরও ভালভাবে উত্থাপিত।
সিরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

উত্তর:


244

আপনি এটি করতে পারেন:

git push --tags

27
আমি যথেষ্ট নিশ্চিত যে এর মানে হল যে হেড রেফগুলি ধাক্কা খায় না, এর অর্থ আপনি কেবল ট্যাগগুলিকেই চাপ দিন।
ড্যান রোজনস্টার্ক 21

47
"আমি অন্যদের ব্যবহার না করার বা প্রশিক্ষণের পরামর্শ দিচ্ছি না git push --tagsকারণ আপনার সহকর্মীরা যখন সমস্ত ট্যাগ ঠেকানোর প্রশিক্ষণ প্রাপ্ত হন তখন খারাপ ট্যাগ থেকে পরিত্রাণ পাওয়া খুব কঠিন হতে পারে, কারণ লোকেরা প্রতিবার স্থানীয়ভাবে তাদের পুরানো বাজে ট্যাগগুলিকে চাপ দিতে থাকে they একটি নতুন ট্যাগ ঠেলাতে চান Because এর কারণে, আমি প্রত্যেককেই git push origin <tag_name>এখনই কেউ ব্যবহার করার পরামর্শ দেব "" - স্ট্যাকওভারফ্লো.com
ক্রিয়াকলাপ হ্রাস

আমি মনে করি অন্য উত্তর, stackoverflow.com/a/16164809/11635 গ্রহণ করা উচিত। তা না হলেও এটি অবশ্যই পড়া উচিত - এটি
উপকারিতা এবং বিপরীতে

139

ডিফল্ট গিট রিমোট কনফিগারেশনে আপনাকে ট্যাগগুলি স্পষ্টভাবে ধাক্কা দিতে হবে (যখন তারা নির্দেশিত কমিটের সাথে স্বয়ংক্রিয়ভাবে এনেছে )। আপনার ব্যবহার করা দরকার

$ git push <remote> tag <tagname>

একটি একক ট্যাগ ধাক্কা, বা

$ git push <remote> --tags

সমস্ত ট্যাগ git push --tagsপুশ করতে (বা সাধারণত ডিফল্ট দূরবর্তী দিকে ধাক্কা দিতে origin)।

এটি পুশিং ট্যাগগুলি স্পষ্ট করে তোলার জন্য, এটি অত্যন্ত উদ্দেশ্যপূর্ণ আচরণ। ট্যাগ পুশ করা সাধারণত সচেতন পছন্দ হওয়া উচিত।


জুনিও সি হামানো কী লিখেছেন তা সংক্ষেপে (@ আন্ড্রে মিরাসের মন্তব্যে লিঙ্কিত)

আনার সময়, আপনি কারও দ্বারা প্রকাশিত একটি রিমোট রিপোজিটরির সাথে আলাপ করছেন, যার অর্থ:

  1. ট্যাগগুলির সেট রয়েছে যা এখানে রয়েছে সমস্ত প্রকাশকই লোকেদের দেখতে চায় এবং
  2. কেবল আপনিই নয় অন্য লোকেরাও একই ট্যাগ দেখতে পাবেন।

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

এ কারণেই git fetchস্বয়ংক্রিয়ভাবে ট্যাগগুলি "অনুসরণ করে", অর্থাত্ তারা নির্দেশিত সংশোধনগুলি ডাউনলোড করার সময় ট্যাগগুলি ডাউনলোড করে - অন্য কথায় সমস্ত প্রাসঙ্গিক প্রকাশিত ট্যাগগুলি ডাউনলোড করে ।

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

এজন্য আপনাকে ট্যাগটিকে জনসাধারণ হিসাবে চিহ্নিত করতে সুস্পষ্টভাবে ট্যাগ ঠেকানো দরকার।


বিকল্প হিসাবে আপনি সর্বদা সমস্ত ট্যাগ পুশ করতে আপনি যে রিমোটটি চাপেন তা কনফিগার করতে পারেন, যেমন .git/config:

[দূরবর্তী "প্রকাশ"] # বা যা কিছু নাম দেওয়া হয়েছে
    url = ...
    ধাক্কা = + রেফার্স / মাথা / *: রেফার্স / হেডস / *
    পুশ = + রেফার্স / ট্যাগ / *: রেফ / ট্যাগ / *

এর অর্থ বল সমস্ত মাথা (সমস্ত শাখা) এবং সমস্ত ট্যাগকে চাপ দিন (আপনি যদি চাপের সাথে চাপ না দিতে চান তবে রেফস্পেক থেকে '+' উপসর্গটি সরিয়ে দিন)।


এটি কি সবসময়ই সমস্ত প্রধানের 'ফোর্স পুশ' করে না?
স্টিফান নিউউ

@ স্টেফান: হ্যাঁ তা করে। আপডেট করা হয়েছে।
জাকুব নরবস্কি

19
"পুশিং ট্যাগগুলি সুস্পষ্ট করার জন্য এটি খুব উদ্দেশ্যমূলক আচরণ। ট্যাগগুলি ঠেলাঠেলি সাধারণত সচেতন পছন্দ হওয়া উচিত।" আমি যুক্তি বুঝতে পারছি না। আপনি কীভাবে গিটকে ট্যাগগুলি স্বয়ংক্রিয়ভাবে ঠেলাঠেলি করে খারাপ লাগবে তা ব্যাখ্যা করতে পারেন?
রায়ান লন্ডি

13
@ ক্যারলেসা, এই পোস্টে git.661346.n2.nabble.com/… , জুনিও সি হামানো (গিটের বর্তমান রক্ষণাবেক্ষণকারী) ব্যাখ্যা করে যে ট্যাগগুলি স্বয়ংক্রিয়ভাবে চাপানো কেন খারাপ।
আন্দ্রে মিরাস

@ আন্দরমিরস এই দুর্দান্ত লিঙ্কটির জন্য আপনাকে ধন্যবাদ। যদি আমরা জুনিওর পোস্টটিকে এই উত্তরে সংহত করতে পারি তবে এটি চমৎকার হবে।
হোমার 6

67

নোট করুন যে গিট ১.৮.৩ (এপ্রিল 22d, 2013) থেকে , আপনাকে আর শাখা ঠেলাঠেলি করতে, এবং তারপরে ট্যাগগুলি ঠেলে 2 কমান্ড করতে হবে না:

নতুন --follow-tagsবিকল্পটি " git push" শাখা বাইরে বের করার সময় প্রাসঙ্গিক টিকে থাকা ট্যাগগুলিকে ধাক্কা দিতে বলে ।

নতুন প্রতিশ্রুতি দেওয়ার সময় আপনি এখন চেষ্টা করতে পারেন:

git push --follow-tags

এটি সমস্ত স্থানীয় ট্যাগগুলিকে ধাক্কা দেবে না , কেবলমাত্র কমিট দ্বারা উল্লিখিত টীকাগুলি যা দিয়ে চাপানো হয় git push


জুনিয়ো সি হামানো ( ) দ্বারা এটি কমিট সি 2 gitsterএফ 15 এ প্রবর্তিত হয়েছে :

নতুন বিকল্পটি " --follow-tags" " git push" কে উল্লিখিত ট্যাগগুলি ধাক্কা দিতে বলে যা অন্যদিকে থেকে অনুপস্থিত এবং ইতিহাসে পৌঁছতে পারে যা অন্যথায় ঠেলাঠেলি করে।

উদাহরণস্বরূপ, আপনি যদি " simple", " current" বা " upstream" ধাক্কা ব্যবহার করেন তবে আপনি সাধারণত আপনার বর্তমানের প্রতিশ্রুতিবদ্ধ ইতিহাসকে চাপ দিন HEADএবং অন্য কিছুই নয়।
এই বিকল্পের সাহায্যে, আপনি যে সমস্ত কমেন্টস ট্যাগ থেকে এই প্রতিশ্রুতিটি অন্যদিকে পৌঁছে যেতে পারেন সেগুলিও চাপ দিন।


কনফিগারেশনটি ডিফল্টরূপে push.followTagsঅন্তর্ভুক্ত করতে দেয় --follow-tags(গিট 2.4.1+, কিউ 2 2015)। " গিট কমিট এবং ট্যাগ একই সাথে চাপুন " দেখুন


3
এটি কেবলমাত্র সমস্ত এনোটোটেটড ট্যাগকে ঠেলে দেয় । বেশিরভাগ লোক / প্রকল্পগুলি লাইটওয়েট ট্যাগ ব্যবহার করে । সুতরাং বেশিরভাগ ক্ষেত্রেই git push --follow-tagsবেশি git push
জোর

3
@ জার্ল হ্যাঁ, আমি আমার উত্তরে "মন্তব্যযুক্ত" উল্লেখ করেছি। তবে আমি সত্যিই কেবল টীকাযুক্ত ট্যাগ ব্যবহার করেছি, খাঁটি অভ্যন্তরীণ ব্যবহারের জন্য লাইটওয়েট ট্যাগগুলি সংরক্ষণ করে (অর্থাত্ কখনও কোনওভাবেই ধাক্কা দেওয়া হবে না)।
ভনসি

: @VonC: এখন সেখানে যে এই ডিফল্ট তোলে কনফিগ বিকল্প আছে, হিসাবে আপনি এখানে উল্লেখ stackoverflow.com/a/3745250/946850
krlmlr

19

আমি সাধারণত যা করি তা হ'ল:

[দূরবর্তী "প্রকাশ"] # বা যা কিছু নাম দেওয়া হয়েছে
    url = ...
    ধাক্কা:
    পুশ = + রেফার্স / ট্যাগ / *: রেফ / ট্যাগ / *

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


আমি কি এটি ব্যবহারকারীর গ্লোবাল গিট কনফিগারেশনে রাখতে পারি? যদি হ্যাঁ, কিভাবে? ধন্যবাদ! :)
gucki

দেখে মনে হচ্ছে আপনি ট্যাগগুলিকে জোর করছেন তবে শাখা নয়।
অ্যাড্রিয়ান রত্নপালা

ঠিক আছে, হ্যাঁ, এবং না, আমি এটি লিখেছি যে এটি নতুন ট্যাগগুলিকে চাপ দেবে, এটি তাদের ধাক্কা দেবে না এবং এটি এমন শাখাগুলিকে ধাক্কা দেবে না যেগুলি আপনি ইতিমধ্যে নিজেকে ধাক্কা দেননি।
মাদুর

আমি জাকুবের পরামর্শটি চেষ্টা করেছিলাম, তবে এটি শাখাগুলি চাপছিল যা আমি কেবল স্থানীয়ভাবে চাইছিলাম। এই পরামর্শ, মাদুর, নিখুঁত কাজ করে। এটি ট্যাগগুলি সিঙ্ক করে তবে শাখাগুলি সিঙ্ক করে না যতক্ষণ না তারা দূরবর্তী ট্র্যাকিং শাখাগুলি হয় (যেমন এটি রিমোটটিতে নতুন শাখা ঠেলে দেবে না, তবে তারা ইতিমধ্যে রিমোটে থাকলে সেগুলি আপডেট করবে)। দ্রষ্টব্য: যদি আপনার একই ট্যাগের একটি ট্যাগ এবং একটি শাখা থাকে তবে আপনি "একের বেশি ম্যাচগুলি" ত্রুটি পান। পড়ুন lostechies.com/jasonmeridth/2010/02/27/refspec-matches-more-than-one/
জোসেফডপুরসেল

5

এবং আপনি যদি সমস্ত ট্যাগ আনতে বাধ্য করতে চান তবে আপনি এটি কনফিগারেশনে সেট করতে পারেন:

git config remote.origin.tagopt --tags

ডক্স থেকে:

এই মানটি --no-ট্যাগে সেট করা দূরবর্তী থেকে আনার সময় স্বয়ংক্রিয় ট্যাগটি অক্ষম করে। এটিকে --tags এ সেট করা দূরবর্তী থেকে প্রতিটি ট্যাগ আনবে, এমনকি তারা দূরবর্তী শাখা প্রধানগুলি থেকে না পারা গেলেও। এই পতাকাগুলি সরাসরি গিট-ফেচ (১) এ পাস করা এই সেটিংটিকে ওভাররাইড করতে পারে। গিট-ফেচ (1) এর বিকল্পগুলি - ট্যাগগুলি এবং - কোনও ট্যাগগুলি দেখুন।


1
প্রশ্নটি আরও 'পুশ' ওরিয়েন্টেড ছিল, দূরবর্তী দিকে ধাক্কা দেওয়ার সময় আপনার উত্তরটিও কি প্রয়োগ হয়?
লা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.