গিট কমিট এবং ট্যাগ এক সাথে পুশ করুন


387

আমি সেই কারণটি সম্পর্কে সচেতন যে git push --tagsএটি পুরানোগুলির পৃথক অপারেশন git push। আপনি পুঙ্খানুপুঙ্খভাবে একটি চাপ দিতে চান না তাই পুশিং ট্যাগগুলি সচেতন পছন্দ হওয়া উচিত। সেটা ঠিক আছে. তবে দুটোকে একসাথে ঠেলে দেওয়ার উপায় কি? (বাদে git push && git push --tags।)


4
আপনার সমস্যা কি git push && git push --tags?
ফুজ

21
বিশেষত কিছুই নয়, সংযোগটি দু'বার প্রতিষ্ঠিত হওয়ার কারণে এটি কেবল ধীর।
রবার্টসন

16
নীচে আমার আপডেট হওয়া উত্তরটি দেখুন: --follow-tagsগিট 1.8.3 থেকে একটি নতুন বিকল্প রয়েছে
ভোনসি

24
এগুলি আলাদাভাবে না করার আরেকটি কারণ হ'ল একই প্রতিশ্রুতির জন্য দুটি সিআই বিল্ড ট্রিগার করা এড়ানো, যখন আপনার জায়গায় that ধরণের অটোমেশন থাকে।
অ্যালেক্স আর

এছাড়াও --tagsলাইটওয়েট এবং সটীক ট্যাগ মধ্যে পার্থক্য নেই উৎস
karlsebal

উত্তর:


554

আপডেট মে 2015

2.4.1 গিট হিসাবে , আপনি করতে পারেন

git config --global push.followTags true

যদি ডিফল্টরূপে সত্য - সক্ষম - ফলো-ট্যাগ অপশন সেট করা থাকে।
- কোন-অনুসরণ-ট্যাগ উল্লেখ করে ধাক্কা দেওয়ার সময় আপনি এই কনফিগারেশনটি ওভাররাইড করতে পারেন।

ওয়েট হার্টের জবাব দিয়ে ম্যাট রজার্স এই থ্রেডে উল্লেখ করেছেন :

--follow-tags কেবল টীকাগুলি ঠেলে দেয়

git tag -a -m "I'm an annotation" <tagname>

এটি ধাক্কা দেওয়া হবে (এর বিপরীতে git tag <tagname>, হালকা ওজনের ট্যাগ, যা ধাক্কা দেওয়া হবে না, যেমনটি আমি এখানে উল্লেখ করেছি )

আপডেট এপ্রিল 2013

যেহেতু Git 1.8.3 (এপ্রিল 22d, 2013) , আপনি আর 2 কমান্ড করতে শাখা ধাক্কা, এবং তারপর ট্যাগ ধাক্কা আছে :

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

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

git push --follow-tags

এটি সমস্ত স্থানীয় ট্যাগগুলিকে ধাক্কা দেবে না , কেবলমাত্র কমিট দ্বারা রেফারেন্সযুক্ত একটি যা ধাক্কা দিয়ে থাকে git push

গিট 2.4.1+ (Q2 2015) বিকল্পটি চালু করবে push.followTags: দেখুন " কীভাবে তৈরি করবেন" git push"শাখার মধ্যে ট্যাগগুলি অন্তর্ভুক্ত করবেন? "

আসল উত্তর, সেপ্টেম্বর 2010

পারমাণবিক বিকল্পটি git push --mirrorহ'ল, যা সমস্ত রেফারিকে আওতায় আনবে refs/

আপনি আপনার বর্তমান শাখা প্রতিশ্রুতি দিয়ে মাত্র একটি ট্যাগ ঠেলাতে পারেন:

git push origin : v1.0.0 

আপনি --tagsবিকল্পটি একটি রেসপেকের সাথে সংযুক্ত করতে পারেন:

git push origin --tags :

(যেহেতু --tagsমাধ্যম: অধীন সকল refs refs/tagsধাক্কা হয়, refspecs স্পষ্টভাবে কমান্ড লাইন তালিকাভুক্ত ছাড়াও )


আপনি এই এন্ট্রি থাকে " Git পুশ" আবাহন একটি একক সঙ্গে শাখা এবং ট্যাগ ঠেলে " "

জোল্টন ফেজেসি গিট মেলিং তালিকায় সবেমাত্র একটি সহজ টিপ পোস্ট করেছিলেন :

আমি .git/configএটি সমাধান করতে ব্যবহার করি :

[remote "origin"]
    url = ...
    fetch = +refs/heads/*:refs/remotes/origin/*
    push = +refs/heads/*
    push = +refs/tags/*

এই লাইনগুলি যুক্ত করা git push originআপনার সমস্ত শাখা এবং ট্যাগ আপলোড করবে। আপনি যদি তাদের কয়েকটি আপলোড করতে চান তবে আপনি সেগুলি গণনা করতে পারেন।

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

$ git push && git push --tags

সাবধান , অসীম কিশোর মন্তব্য করেছেন

push = +refs/heads/*হবে আপনার সব শাখা জোর করে পাহাড় জমে

এই এখনই আমাকে বিট, তাই এফওয়াইআই।


রেনি শেইবি এই আকর্ষণীয় মন্তব্যটি যোগ করেছেন :

--follow-tagsপরামিতি অধীনে শুধুমাত্র ট্যাগগুলি বিভ্রান্তিকর হয় .git/refs/tagsবিবেচনা করা হয়।
যদি git gcচালানো হয় তবে ট্যাগগুলি এ থেকে সরানো .git/refs/tagsহয় .git/packed-refs। এরপরে git push --follow-tags ...আর প্রত্যাশার মতো কাজ করে না।


3
আপনি যে পোস্টটি এর প্রতি সংযোগ আছে এক মন্তব্য সঠিকভাবে যে পয়েন্ট আউট push = +refs/heads/*লাইন বল -pushes সব আপনার শাখা। এই এখনই আমাকে বিট, তাই এফওয়াইআই।
অসীম কিশোর

2
পুনরায়: --follow-tagsপতাকাটি গিট 1.8.3 এ যুক্ত হয়েছে, আমি কি আমার গিট ইনস্টলেশনটি ডিফল্টরূপে কনফিগার করতে পারি?
ট্রেভর বার্নহ্যাম

1
@TrevorBurnham না, কেবল মান push.default( git-scm.com/docs/git-config ) ধাক্কা ডিফল্ট কর্ম নির্ধারণ করতে পারেন ( nothing, matching, upstream, simpleহিসাবে stackoverflow.com/a/10002469/6309 )। আপনি --follow-tagস্পষ্টভাবে যোগ করা প্রয়োজন ।
ভনসি

1
@ ভনসি যদি আমি জোর করে ট্যাগ ঠেকাতে চাই তবে কী হবে? git push --follow-tags -fআমার জন্য কাজ করেনি।
মৌর্য্যাত

1
--follow-tagsপরামিতি অধীনে শুধুমাত্র ট্যাগগুলি বিভ্রান্তিকর হয় .git/refs/tagsবিবেচনা করা হয়। যদি git gcচালানো হয় তবে ট্যাগগুলি এ থেকে সরানো .git/refs/tagsহয় .git/packed-refs। এরপরে git push --follow-tags ...আর প্রত্যাশার মতো কাজ করে না।
রেনি শেইবি

4

হতে পারে এটি কাউকে সহায়তা করে:

 1. git commit -a -m "msg"  
 2. git tag 0.1.0                // creates a new tag locally     
 3. git push origin tag 0.1.0    // pushes the tag & the code in the remote repo          

আমি আপনার সমাধানটি git-2.21.0.windows.1 দিয়ে চেষ্টা করেছি এবং দেখতে পেয়েছি 3 টি কেবল ট্যাগ ঠেলাঠেলি করে
ডাস্টিন সান

এটা আমার শেষে ভাল কাজ করছে। আপনি 3 টি কমান্ড ঠিকানায় চেষ্টা করছেন এবং দূরবর্তী রেপো সেট (গিট রিমোট -v)?
রাজেশ গুপ্ত

আমি পদক্ষেপ 1 এ "গিট কমিট-এম" msg "ব্যবহার করেছি এবং কোনও প্যারামিটার ছিল না This এটি কারণ হতে পারে the ফলোআপের জন্য আপনাকে ধন্যবাদ!
ডাস্টিন সান


0

গিট জিইউআই

গিট জিইউআই-তে একটি পুশ বোতাম রয়েছে - শ্লেষকে ক্ষমা করুন, এবং এটি যে ডায়ালগ বক্সটি খুলবে তাতে ট্যাগগুলির জন্য একটি চেকবক্স রয়েছে।

আমি ট্যাগ ছাড়াই কমান্ড লাইন থেকে একটি শাখা --follow-tagsঠেলেছি এবং তারপরে উপরে বর্ণিত বিকল্পটি ব্যবহার করে আবার শাখাটি পুশ করার চেষ্টা করেছি। বিকল্পটি নীচে বর্ণিত ট্যাগ হিসাবে বর্ণনা করা হয়েছে। আমার ট্যাগগুলি সহজ ট্যাগ ছিল।

আমি কিছু স্থির করেছিলাম, সংশোধন করার সাথে প্রতিশ্রুতিটিকে ট্যাগ করেছি, (যাতে সহকর্মীরা এই চিকিত্সাটি চয়ন করতে পারেন) তারপরে সফ্টওয়্যার সংস্করণ নম্বরটি পরিবর্তন করে আমার তৈরি করা রিলিজ ট্যাগ করেছে (যাতে সহকর্মীরা সেই রিলিজটি ক্লোন করতে পারে)।

সমস্ত কিছুই আপ-টু-ডেট ছিল বলে গিট ফিরে এল। এটি ট্যাগ পাঠায় না! ট্যাগগুলি টীকায়িত হয়নি Perhaps সম্ভবত এই শাখায় নতুন কিছু ছিল না।

আমি যখন গিট জিইউআইয়ের সাথে অনুরূপ ধাক্কা দিয়েছিলাম তখন ট্যাগগুলি প্রেরণ করা হয়েছিল।

গিট জিইউআই সহ ট্যাগ পাঠানো হয়েছে

আপাতত, আমি আমার পরিবর্তনগুলি গিট জিইউআইয়ের সাথে আমার দূরবর্তী স্থানগুলিতে চাপতে যাচ্ছি কমান্ড লাইন এবং দিয়ে নয় --follow-tags

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