গিটে বর্তমান শাখায় সর্বশেষ ট্যাগের নাম কীভাবে পাবেন?


462

গিটের মধ্যে অতি সাম্প্রতিক ট্যাগটি পাওয়ার সহজতম উপায় কী?

git tag a HEAD
git tag b HEAD^^
git tag c HEAD^
git tag

আউটপুট:

a
b
c

প্রতিটি ট্যাগের ডেটটাইম পেতে এবং তাদের তুলনা করার জন্য আমার কি কোনও স্ক্রিপ্ট লেখা উচিত?


1
সর্বশেষ নির্মিত ট্যাগ বা সর্বশেষ ট্যাগ আদেশের তারিখ দ্বারা আদেশ? আপনার গৃহীত উত্তর সর্বশেষ নির্মিত ট্যাগ দেখায়। কেউ যদি অস্তিত্বের ট্যাগগুলি পরিবর্তন করার সিদ্ধান্ত নেয় তবে এটি সমস্যা হতে পারে ...
পায়েবেসেল

উত্তর:


412

আপনি একবার দেখে নিতে পারেন git describe, যা আপনি যা জিজ্ঞাসা করছেন তার কাছাকাছি কিছু করে।


194
--abbrev=0এটির সাথে নিকটতম টীকাযুক্ত ট্যাগটি ফিরে আসা উচিত
Jakub Narębski

13
বর্তমান শাখায়
ব্রিটোহলোরান

42
পেতে সর্বশেষ সটীক ট্যাগ যা লক্ষ্য বানায় শুধুমাত্র বর্তমান কমিট মধ্যে বর্তমান শাখা , ব্যবহার git describe --exact-match --abbrev=0
নাফটুলি কে

5
এই উত্তরটি, মন্তব্য সহ, আমার জন্য সঠিক ট্যাগ সরবরাহ করে নি। @ কিলিয়ানিক একটি সঠিক সমাধান সরবরাহ করেছে।
হারমান জে। রাডটক III

19
git describe --tagsএবং গিথুব প্রকাশের পৃষ্ঠাতে কম্বের শেষ ট্যাগটির তুলনা করুন
অ্যাড্রিয়ানো রিসেন্ডে

627

অতি সাম্প্রতিক ট্যাগটি পেতে:

git describe --tags

অতি সাম্প্রতিক টীকায়িত ট্যাগ পেতে :

git describe --abbrev=0

2
হ্যাঁ, ম্যান পেজ হিসাবে git describeবলেছেন: --abbrev=<n> [...] An <n> of 0 will suppress long format, only showing the closest tag.
জিয়েরগোস কাইলাফাস

22
অথবা কেবলgit describe --tags
জেমস_উম্যাক

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

10
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। জমা দেওয়ার জন্য ধন্যবাদ।
crmpicco

6
আপনি যদি git checkout $(git describe --abbrev=0 --tags)
সর্বশেষতম

320

সমস্ত শাখায় সর্বশেষ ট্যাগযুক্ত প্রতিশ্রুতির ট্যাগ আউটপুট দেবে

git describe --tags $(git rev-list --tags --max-count=1)

8
বা TAG=$(git describe --tags $(git rev-list --tags --max-count=1))@ উইলিয়াম-পার্সেল
কিলিয়ান্ক

20
এটি সেরা উত্তর। এটি কেবল বর্তমান শাখা নয়, সমস্ত "শাখা" জুড়ে ট্যাগ পেয়েছে যেমন বর্তমান "সঠিক" উত্তর দেয়।
ব্রিটোহলোরান

61
প্রশ্ন বাদে বিশেষভাবে বর্তমান শাখার জন্য জিজ্ঞাসা করে।
মাইচেলথোফিশ

3
@ মিমহেল্টওফিশ, যখন আমি এটি জানতাম না, তখন আমি এটি পরে আবিষ্কার করেছি এবং সে অনুযায়ী আমার উত্তরটি সংশোধন করেছি। এর জন্যে দুঃখিত.
kilianc

3
নোটস: এই কমান্ডটি "নতুন" ট্যাগটি প্রদান করে এমনকি এই ট্যাগটি অন্য একটি শাখায় রয়েছে।
অ্যালান ঝিলিয়াং ফেং

47

অতি সাম্প্রতিক ট্যাগটি পেতে, আপনি এটি করতে পারেন:

each প্রতি-রেফ-রেফস / ট্যাগগুলির জন্য গিট --sort = -taggerdate - formatt = '% (পুনঃনামকরণ)' - অ্যাকাউন্ট = 1

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


2
এটি প্রায় হুবহু আমি (সমস্ত শাখা জুড়ে সাম্প্রতিকতম ট্যাগ) খুঁজছেন হয়, কিন্তু Git আমার সংস্করণ (1.7.7.6) সঙ্গে অন্তত ট্যাগ উভয়ের জন্য একই আদেশ উত্পাদিত হয় --sort=-authordateএবং --sort=authordate
লারস্ক

3
আহা, কারণ আপনি যা চান তা তাই --sort=-taggerdate। ট্যাগগুলির জন্য, authordateএবং committerdateখালি (শর্ট কী হিসাবে এতই বেহুদা)।
লারস্ক

8
git for-each-ref refs/tags --sort=-taggerdate --format='%(refname:short)' --count=1আরও উন্নত :)
ক্রিস্টোফ এবলি

5
সত্যিই, কোনও মন্তব্য ছাড়াই প্রায় 5 বছরের পুরানো একটি নিখুঁত সঠিক উত্তরটি ডাউনভোটিং? এটা ঠিক অভদ্র।
উইলিয়াম পার্সেল

1
এবং --points-at=$SHAআপনাকে একটি প্রতিশ্রুতিবদ্ধ হ্যাশের ট্যাগ দেবে।
রায়ান

34

এ কেমন?

TAG=$(git describe $(git rev-list --tags --max-count=1))

প্রযুক্তিগতভাবে, অগত্যা আপনি সর্বশেষ ট্যাগটি পাবেন না, তবে সর্বশেষ প্রতিশ্রুতি যা ট্যাগ হয়, যা আপনি যা খুঁজছেন তা হতে পারে বা নাও পারে।


এটি বর্তমান শাখায় সর্বশেষতম ট্যাগটি পাবে না তবে কোনও শাখার জন্য। কোনটি দুর্দান্ত, কারণ যা আমার প্রয়োজন ঠিক তাই ঘটায়। ধন্যবাদ উইনসেন্ট
jasongregori

2
আপনি ব্যবহার করতে পারেন আপনি ট্যাগ মিলে যাওয়ার ধরণটি পেতে প্রয়োজন তাহলে --tags=<pattern>মধ্যে rev-list। উদাহরণস্বরূপ, শেষ সংস্করণ ট্যাগটি পানgit describe --tags $(git rev-list --tags='v[0-9].[0-9]*' --max-count=1)
উইরোন

1
g (গিট বর্ণনা করুন - কনটেনস $ (গিট রেভ-পার্স হেড))
বৈদাস জিলিওনিস

ধন্যবাদ, এটি কাজ করেছে, তবে, আমাকেgit describe --tags $(git rev-list --tags --max-count=1)
জিয়ানলুকা কাসাটি

25

আপনি মৃত্যুদণ্ড কার্যকর করতে পারেন: git describe --tags $(git rev-list --tags --max-count=1)এখানে কথা বলেছেন: সর্বশেষ ট্যাগের নাম কীভাবে পাবেন?


আমি শীর্ষ / গ্রহণযোগ্য উত্তর দিয়ে শুরু করেছি এবং আমার পথে কাজ করেছি। এটিই প্রথম উত্তর যা আসলে আমাকে সর্বশেষ ট্যাগ দেয় (নিশ্চিত নয় কেন সরল পুরাতন git describe ...আগের ট্যাগটি দেয়?!)
জেরেমি ডেভিস

এটিই আমার পক্ষে কাজ করে। কিছু --abbrev=0উত্তর চেষ্টা করেছিলাম এবং তারা আমার যে ট্যাগটি চায় তার একটি অংশ কেটে দেয়।
লুক ডেভিস

22

"অতি সাম্প্রতিক" গিটের ক্ষেত্রে দুটি অর্থ হতে পারে।

আপনার অর্থ হতে পারে, "কোন ট্যাগটির তৈরির তারিখ সর্বশেষে রয়েছে" এবং এখানে বেশিরভাগ উত্তরই সেই প্রশ্নের জন্য। আপনার প্রশ্নের শর্তাবলী, আপনি ট্যাগ ফিরে করতে চাই c

অথবা আপনার অর্থ হতে পারে "কোনও নামযুক্ত শাখার বিকাশের ইতিহাসে কোন ট্যাগটি সবচেয়ে নিকটতম", সাধারণত আপনি যে শাখায় রয়েছেন HEAD,। আপনার প্রশ্নে, এটি ট্যাগ ফিরে আসবে a

এগুলি অবশ্যই আলাদা হতে পারে:

A->B->C->D->E->F (HEAD)
       \     \
        \     X->Y->Z (v0.2)
         P->Q (v0.1)

কল্পনা করুন যে বিকাশকারী সোমবার Zহিসাবে ট্যাগ v0.2হয়েছে, এবং তারপরে মঙ্গলবারের Qমতো ট্যাগ হয়েছে v0.1v0.1এটি আরও সাম্প্রতিক, তবে v0.2উন্নয়নের ইতিহাসে হেডের কাছাকাছি, এই দিক থেকে যে পথটি চলছে সেগুলি হেডের কাছাকাছি সময়ে শুরু হয়।

আমি মনে করি আপনি সাধারণত এই দ্বিতীয় উত্তরটি চান, বিকাশের ইতিহাসের কাছাকাছি। আপনি git log v0.2..HEADপ্রতিটি ট্যাগের জন্য ইত্যাদি ব্যবহার করে এটি খুঁজে পেতে পারেন । এটি আপনাকে হেডে কমিটের সংখ্যা দেয় যেহেতু v0.2হেডের অনুসরণের পথটি অন্যদিকে চলে যাওয়ার পরে শেষ হয় ।

এখানে একটি পাইথন স্ক্রিপ্ট রয়েছে যা এই চেকটি চালাচ্ছে সমস্ত ট্যাগের মাধ্যমে পুনরাবৃত্তি করে এবং তারপরে ট্যাগ পাথটি বিচ্যুত হওয়ার পরে শিরোনামে স্বল্পতম কমিটের সাহায্যে ট্যাগটি মুদ্রণ করে:

https://github.com/MacPython/terryfy/blob/master/git-closest-tag

git describeকিছুটা আলাদা কিছু করে, এটি হেড থেকে ইতিহাসে ফিরে যাওয়ার পথে প্রথম ট্যাগটি খুঁজে পেতে (যেমন) হেড থেকে পিছনে ট্র্যাক করে। গিট শর্তে, git describeএমন ট্যাগগুলির সন্ধান করুন যা হেড থেকে "পৌঁছনীয়" সুতরাং এটি এর মতো ট্যাগগুলি v0.2হেড থেকে ফেরার পথে নয়, তবে সেখান থেকে সরে যাওয়া কোনও পথ খুঁজে পাবে।


21

git describe --tags

বর্তমান শাখার দ্বারা দেখা সক্ষম হতে সর্বশেষ ট্যাগটি প্রদান করে


15
git log --tags --no-walk --pretty="format:%d" | sed 2q | sed 's/[()]//g' | sed s/,[^,]*$// | sed  's ......  '

আপনি যদি সর্বশেষের ট্যাগের চেয়েও বেশি প্রয়োজন

(গিট বর্ণনা করুন - ট্যাগগুলি মাঝে মাঝে ভুল হ্যাশ দেয়, তবে আমি জানি না কেন, তবে আমার জন্য - ম্যাক্স-কাউন্ট 2 কাজ করে না)

আপনি বিপরীত কালানুক্রমিকভাবে সর্বশেষ 2 ট্যাগ নামের সাথে তালিকাটি পেতে পারেন, গিট 1.8.4 এ পুরোপুরি কাজ করে। গিটের পূর্ববর্তী সংস্করণগুলির জন্য (যেমন 1.7। *), আউটপুটটিতে কোনও "ট্যাগ:" স্ট্রিং নেই - কেবল শেষ সেড কলটি মুছুন

যদি আপনি 2 টিরও বেশি সর্বশেষ ট্যাগ চান - তবে এই "সেড 2 কিউ" কে "সেড 5 কিউ" বা আপনার যা প্রয়োজন তা পরিবর্তন করুন

তারপরে আপনি প্রতিটি ট্যাগের নামটি সহজেই পরিবর্তনশীল বা অন্যটিতে পার্স করতে পারেন।


এটি সত্যিই সহায়ক, অনেক বিকাশকারী নিয়োগ বিরতিতে পূর্ববর্তী ট্যাগটিতে ফিরে রোলিং দ্বারা রিলিজ প্রক্রিয়াটি স্বয়ংক্রিয় করার চেষ্টা করবে। চমৎকার উপাদান!!!
আকডি

1
এটি আরও গ্রহণ করার জন্য: git log --tags --no-walk --pretty="format:%D" | sed -nr '5q;s;^.*(tag: )([^,]*).*;\2;p' যেখানে %Dচারপাশের অক্ষরগুলি বাদ দেওয়া হয় ()এবং sed5 ক্লাবের সূচনা 5 ক এর আগে 4 লাইন ছেড়ে যায়, তারপরে 'ট্যাগ: `এবং প্রথম', 'এর মধ্যে সমস্ত অক্ষর মুদ্রণ করে। সুতরাং ... ধরে নিচ্ছি যে ট্যাগের ভিতরে কোনও কমা ব্যবহার করা হয়নি, এটি পুরোপুরি কার্যকর।
কমেটসং

14

সমস্ত পরামর্শ ( ম্যাথু ব্রেট ব্যাখ্যা ব্যতীত , এই উত্তর পোস্টের আপ টু ডেট) - এ কী ভুল ?

কেবল যে কোনো কমান্ড jQuery এর গীত ইতিহাসের উপর অন্যান্য দ্বারা সরবরাহকৃত চালানো যখন তোমার দিকে ইতিহাসের বিভিন্ন পয়েন্ট ও চেক ফলাফলের চাক্ষুষ ট্যাগিং ইতিহাস উপস্থাপনা (আমি করেনি তাই আপনি এই পোস্টটিকে দেখতে):

$ git log --graph --all --decorate --oneline --simplify-by-decoration

আজকাল অনেক প্রকল্প মূললাইন থেকে পৃথক শাখায় প্রকাশ (এবং তাই ট্যাগিং) সম্পাদন করে ।

এর দৃ strong় কারণ রয়েছে । কেবল কোনও সুপ্রতিষ্ঠিত জেএস / সিএসএস প্রকল্প দেখুন look ব্যবহারকারীদের কনভেনশনগুলির জন্য তারা ডিভিসিএসে বাইনারি / মিনিফাইড রিলিজ ফাইল বহন করে। প্রাকৃতিকভাবে প্রকল্প রক্ষণাবেক্ষণকারী হিসাবে আপনি আপনার মেনলাইন ডিফার্ট ইতিহাসকে অকেজো বাইনারি ব্লব দিয়ে আবর্জনা ফেলতে চান না এবং মেইনলাইনের বাইরে বিল্ডিং আর্টফিটগুলি প্রতিশ্রুতিবদ্ধ করতে চান না ।

কারণ গিটটি ডিএজি ব্যবহার করে এবং রৈখিক ইতিহাস নয় - দূরত্বের মেট্রিকের সংজ্ঞা দেওয়া খুব কঠিন তাই আমরা বলতে পারি - HEADওরে রেভ আমার নিকটতম !

আমি নিজের যাত্রা শুরু করি (ভিতরে দেখুন, আমি এই দীর্ঘ পোস্টে অভিনব প্রমাণ চিত্রগুলি অনুলিপি করিনি):

গিতে শাখা প্রশাখার ক্ষেত্রে অতীতে নিকটতম ট্যাগটি কী?

ট্যাগল এবং পুনর্বিবেচনার মধ্যে কার্যকারিতা হ্রাসের সাথে আমার দূরত্বের 4 টি যুক্তিসঙ্গত সংজ্ঞা রয়েছে:

  • সবচেয়ে কম পথের দৈর্ঘ্য থেকে HEADথেকে একত্রীকরণ বেস ট্যাগ দিয়ে
  • তারিখ এর একত্রীকরণ বেস মধ্যে HEADএবং ট্যাগ
  • রেডের সংখ্যা যা হেড থেকে পৌঁছতে পারে তবে ট্যাগ থেকে পৌঁছনীয় নয়
  • নির্বিশেষে একত্রিত বেসের ট্যাগের তারিখ

আমি কীভাবে সংক্ষিপ্ততম পথের দৈর্ঘ্য গণনা করতে জানি না ।

স্ক্রিপ্ট যে অনুযায়ী সাজানোর ট্যাগ তারিখ এর একত্রীকরণ বেস মধ্যে HEADএবং ট্যাগ:

$ git tag \
     | while read t; do \
         b=`git merge-base HEAD $t`; \
         echo `git log -n 1 $b --format=%ai` $t; \
       done | sort

এটি বেশিরভাগ প্রকল্পে ব্যবহারযোগ্য।

স্ক্রিপ্ট যা শৃঙ্খলাবদ্ধ করে যেগুলি হেড থেকে পৌঁছনীয় তবে ট্যাগ থেকে পৌঁছনীয় নয় এমন রেভের সংখ্যা অনুসারে ট্যাগগুলিকে সাজান :

$ git tag \
    | while read t; do echo `git rev-list --count $t..HEAD` $t; done \
    | sort -n

যদি আপনার প্রকল্পের ইতিহাসে কমিটের ক্ষেত্রে অদ্ভুত তারিখ থাকে (রিবেসগুলির কারণে বা অন্য কোনও ইতিহাস পুনর্লিখনের কারণে বা কিছু মরন BIOS ব্যাটারি বা আপনি যে ইতিহাসে করেন এমন অন্যান্য যাদুবিদ্যাকে প্রতিস্থাপন করতে ভুলে যান) উপরের স্ক্রিপ্টটি ব্যবহার করুন।

তারিখের ব্যবহার অনুসারে বাছাই করা ট্যাগগুলির তালিকা পেতে সর্বশেষ বিকল্পের জন্য ( ট্যাগ নির্ধারিত একীভূত বেসের তারিখের জন্য):

$ git log --tags --simplify-by-decoration --pretty="format:%ci %d" | sort -r

পরিচিত বর্তমান সংশোধন তারিখ ব্যবহার করতে:

$ git log --max-count=1

নোট করুন যে git describe --tagsনিজস্ব ক্ষেত্রে ব্যবহার রয়েছে তবে প্রকল্পের ইতিহাসে মানুষের প্রত্যাশিত নিকটতম ট্যাগ খুঁজে পাওয়ার জন্য নয় ।

দ্রষ্টব্য আপনি যে কোনও সংশোধন উপরের রেসিপিগুলি ব্যবহার করতে পারেন, কেবল HEADযা চান তার সাথে প্রতিস্থাপন করুন !


12

git describe --abbrev=0 --tags

আপনি যদি সর্বশেষ ট্যাগ না দেখেন তবে এটি চালানোর আগে উত্স আনার বিষয়টি নিশ্চিত করুন:

git remote update


12
git tag -l ac* | tail -n1

উপসর্গ "এসি" দিয়ে শেষ ট্যাগটি পান । উদাহরণস্বরূপ, ট্যাগটির সাথে নামকরণ করা হয়েছে ac1.0.0, বা ac1.0.5। নামক অন্যান্য ট্যাগ 1.0.0, 1.1.0উপেক্ষা করা হবে।

git tag -l [0-9].* | tail -n1

সর্বশেষ ট্যাগটি পান, যার প্রথম চর 0-9। সুতরাং, প্রথম চরের সাথে সেই ট্যাগগুলিকে a-zউপেক্ষা করা হবে।

অধিক তথ্য

git tag --help # Help for `git tag`

git tag -l <pattern>

প্রদত্ত প্যাটার্নের সাথে মিলে এমন নামের সাথে ট্যাগগুলি তালিকাবদ্ধ করুন (বা যদি কোনও প্যাটার্ন দেওয়া না হয় তবে সমস্ত)। আর্গুমেন্ট ব্যতীত "গিট ট্যাগ" চালানো সমস্ত ট্যাগকেও তালিকাবদ্ধ করে। প্যাটার্নটি হ'ল শেল ওয়াইল্ডকার্ড (অর্থাত্, fnmatch (3) ব্যবহার করে মিলিত)। একাধিক নিদর্শন দেওয়া যেতে পারে; যদি তাদের কোনওটির সাথে মেলে, ট্যাগটি দেখানো হবে।


tail -n <number> # display the last part of a file
tail -n1 # Display the last item 

হালনাগাদ

সাথে git tag --help, sortতর্ক সম্পর্কে । এটি lexicorgraphic orderডিফল্টরূপে ব্যবহার করবে , যদি tag.sortসম্পত্তি বিদ্যমান না থাকে।

ট্যাগের জন্য কনফিগার করা মূল্যে ডিফল্ট অর্ডার করুন। গিট কনফিগারেশন (1) দেখুন।

গুগলের পরে, কেউ বলেছেন গিট 2.8.0 সিনট্যাক্স অনুসরণ করে সমর্থন করে।

git tag --sort=committerdate

এটি আমার পক্ষে জাগেনি, শেষ ট্যাগটি 2.11.174 তবে এই মুদ্রণটি 2.11.99 কারণ সংস্করণ হিসাবে সাজান না
Ali.MD

8
git tag --sort=committerdate | tail -1

কেবল কোড-উত্তর উত্তর পোস্ট করার পরিবর্তে কীভাবে এই কোড স্নিপেট সমস্যার সমাধান করবে তা ব্যাখ্যা করুন।
অরুণ বিনোথ

5

আপনার শেষ দুটি ট্যাগের ক্ষেত্রে নিম্নলিখিতটি আমার জন্য কাজ করে (উদাহরণস্বরূপ, বর্তমান ট্যাগ এবং পূর্ববর্তী ট্যাগের মধ্যে পরিবর্তন লগ তৈরি করতে)। আমি এটি কেবলমাত্র এমন পরিস্থিতিতে পরীক্ষা করেছি যেখানে সর্বশেষতম ট্যাগটি ছিল HEAD

PreviousAndCurrentGitTag=`git describe --tags \`git rev-list --tags --abbrev=0 --max-count=2\` --abbrev=0`
PreviousGitTag=`echo $PreviousAndCurrentGitTag | cut -f 2 -d ' '`
CurrentGitTag=`echo $PreviousAndCurrentGitTag | cut -f 1 -d ' '`

GitLog=`git log ${PreviousGitTag}..${CurrentGitTag} --pretty=oneline | sed "s_.\{41\}\(.*\)_; \1_"`

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


4

আমার প্রথম চিন্তা আপনি ব্যবহার করতে পারবেন git rev-list HEAD, যা মিশ্রণে, সমস্ত বিভক্তিকে বিপরীত কালানুক্রমিক ক্রমে তালিকাবদ্ধ করে git tag --contains। যখন আপনি এমন কোনও রেফ খুঁজে পান যেখানে git tag --containsঅসাধারণ তালিকা তৈরি করে, আপনি সর্বাধিক সাম্প্রতিক ট্যাগ (গুলি) খুঁজে পেয়েছেন।


4

আপনি যদি একটি নির্দিষ্ট শাখায় সর্বশেষ ট্যাগটি প্রয়োগ করেছিলেন তবে আপনি নিম্নলিখিতটি চেষ্টা করতে পারেন:

git describe --tag $(git rev-parse --verify refs/remotes/origin/"branch_name")

3

আপনার যদি একটি লাইনারের প্রয়োজন হয় যা বর্তমান শাখায় সর্বশেষ ট্যাগের নাম (ট্যাগ তারিখ অনুসারে) পায় :

git for-each-ref refs/tags --sort=-taggerdate --format=%(refname:short) --count=1 --points-at=HEAD

আমরা সেটআপটিতে সংস্করণ নম্বর সেট করতে এটি ব্যবহার করি।

আউটপুট উদাহরণ:

v1.0.0

উইন্ডোজেও কাজ করে।


1
লিনাক্সে (দেবিয়ান স্ট্রেচ) আমি পেয়েছি-bash: syntax error near unexpected token '('
জেরেমি ডেভিস

1
যদি আমি সেই অংশটি উদ্ধৃতিতে আবদ্ধ করি (অর্থাত্ --format="%(refname:short)") এবং --points-at=HEADএটি এড়িয়ে যায় তবে এটি কাজ করে। শেষ স্যুইচ দিয়ে এটি কিছুই ফেরায় না, আমার ধারণা যে আমার HEADট্যাগ নেই?
জেরেমি ডেভিস

@ জেরেমি ডেভিস, হ্যাঁ আমি মনে করি কারণ এটি আপনার HEADট্যাগ নেই।
মার্কাস

2

এটি একটি পুরানো থ্রেড, তবে মনে হচ্ছে অনেক লোক ওপির প্রশ্নের সাদামাটা, সহজতম এবং সবচেয়ে সঠিক উত্তর অনুপস্থিত: বর্তমান শাখার জন্য সর্বশেষ ট্যাগটি পেতে , আপনি ব্যবহার করেন git describe HEAD। সম্পন্ন.

সম্পাদনা করুন: আপনি কোনও বৈধ পুনঃনামকরণ এমনকি রিমোটগুলি সরবরাহ করতে পারেন; যেমন, git describe origin/masterআপনাকে সর্বশেষতম ট্যাগটি বলবে যা উত্স / মাস্টার থেকে পাওয়া যেতে পারে।


কোনও কিছুই গ্যারান্টি দেয় না যে "অতি সাম্প্রতিক ট্যাগ" কোনও শাখা পরিচালনা করে। দুটি কাজের সমাধান হয় for-each-refকমান্ড ( stackoverflow.com/a/5261470/515973 ) এবং সমন্বয় rev-listএবং describe( stackoverflow.com/a/7979255/515973 )
জুলিয়েন Carsique

1
এটি আমার জন্য সবচেয়ে সাম্প্রতিক ট্যাগ পায় না।
কার্ল মরিসন

git describe branchname --tagsআমার শাখায় সর্বশেষ ট্যাগ পাওয়ার জন্য কাজ করে (গিট সংস্করণ ২.১২.২)
রব_এম

0

কেবলমাত্র বর্তমান শাখা / ট্যাগ নামের সর্বশেষ ট্যাগটি পেতে যেটি বর্তমান শাখার উপসর্গ রয়েছে, আমাকে নিম্নলিখিতটি সম্পাদন করতে হয়েছিল

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags --abbrev=0 $BRANCH^ | grep $BRANCH

শাখা মাস্টার:

git checkout master

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags 
--abbrev=0 $BRANCH^ | grep $BRANCH

master-1448

শাখার কাস্টম:

git checkout 9.4

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags 
--abbrev=0 $BRANCH^ | grep $BRANCH

9.4-6

এবং আমার চূড়ান্ত প্রয়োজন বৃদ্ধি এবং পরবর্তী ট্যাগিং জন্য ট্যাগ +1।

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags  --abbrev=0 $BRANCH^ | grep $BRANCH | awk -F- '{print $NF}'

0

জিজ্ঞাসা করা প্রশ্ন হিসাবে,

কীভাবে বর্তমান শাখায় সর্বশেষ ট্যাগের নাম পাবেন

তুমি চাও

git log --first-parent --pretty=%d | grep -m1 tag:

--first-parentgit logকোনও মার্জ করা ইতিহাসের বিবরণ না দিতে বলে , --pretty=%dকেবল সজ্জায় অর্থাত্ কোনও কমিটের স্থানীয় নাম দেখানোর জন্য বলে। grep -m1"কেবল একটির সাথে মেলে" বলে, তাই আপনি কেবল সাম্প্রতিক ট্যাগটি পান।


0

যদি আপনার ট্যাগগুলি বাছাইযোগ্য হয়:

git tag --merged $YOUR_BRANCH_NAME | grep "prefix/" | sort | tail -n 1

0

অ্যানোটেটেড ট্যাগ বনাম টীকাগুলির এখানে খুব বেশি উল্লেখ নেই। 'বর্ণনা' টীকাযুক্ত ট্যাগগুলিতে কাজ করে এবং অননোটবিহিতদের উপেক্ষা করে।

এটি কুরুচিপূর্ণ তবে কাজটি অনুরোধ করেছে এবং এটি অন্যান্য শাখায় কোনও ট্যাগ পাবেন না (এবং কমান্ডের মধ্যে উল্লিখিত একটিতে নয়: নীচের উদাহরণে মাস্টার)

ফিল্টারিংটি সম্ভবত অনুকূলিত করা উচিত (একীভূত), তবে আবার, এটি কাজটি মনে হয়।

git log  --decorate --tags master |grep '^commit'|grep 'tag:.*)$'|awk '{print $NF}'|sed 's/)$//'|head -n 1

আমি এখন এটি ব্যবহার করতে যাচ্ছি সমালোচনা স্বাগত :)


-2

পেতে অন্য সহজ উপায় সর্বশেষ ট্যাগ নাম সাথে আছেন

git tag | tail -1

অথবা

TAG=$(git tag | tail -1)

এটি একটি ভেরিয়েবলে সঞ্চয় করতে।

git tagসমস্ত উপলব্ধ ট্যাগ তালিকাভুক্ত এবং ফলাফল যদি খুব শেষ সারিতে ফিরে আসবে।tail-1


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