প্রদত্ত গিট কমিটের সাথে যুক্ত ট্যাগটি কীভাবে খুঁজে পাবেন?


90

প্রকাশের জন্য আমি সাধারণত v1.1.0 এর মতো কিছু দিয়ে ট্যাগ করি। আমার বিল্ড স্ক্রিপ্ট চলাকালীন আমি একটি fwVersion.c ফাইল তৈরি করছি যেখানে বর্তমান গিট তথ্য রয়েছে। বর্তমানে, আমি ফাইলটিতে প্রতিশ্রুতিবদ্ধ এবং শাখা সম্পর্কিত তথ্য পেয়েছি, তবে আমি ট্যাগটি যুক্ত করতে চাই।

এটা কি সম্ভব?

উত্তর:


115

জন্য ডকুমেন্টেশন চেক করুন git describe। এটি প্রদত্ত প্রতিশ্রুতিটির নিকটতম ট্যাগটি খুঁজে পায় (এটি এমন একটি ট্যাগ যা প্রতিশ্রুতির পূর্বপুরুষকে দেখায়) এবং ট্যাগটির শর্তে সেই প্রতিশ্রুতি বর্ণনা করে।

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

git describe --exact-match <commit-id>

32
git describe --tags <commit-id>অননোটবিহীন ট্যাগগুলির জন্য
আলেকজান্ডার লেভুকুক

4
আমি এটা ভালোবাসি. স্পষ্টতই, আমি ভালবাসি যে আমি বর্তমান সংশোধন থেকে একটি মানব পাঠযোগ্য পেতে পারি:git describe --all --exact-match `git rev-parse HEAD`
dsummersl

4
নতুন সংস্করণগুলিতে, git describe --tags --abbrev=0 REVআপনি যখন ট্যাগটিতে থাকা জাঙ্কটি না চান তখন কার্যকর হবে।
ক্রেগ রিঞ্জার

4
git describe --all(বর্তমানে যাচাই করা প্রতিশ্রুতি দেওয়ার জন্য) বা git describe --all <commit>আমি সবসময় যা চেয়েছিলাম তার সবসময়ই সম্পন্ন করেছি।
rfay

গিট থেকে সংস্করণগুলি ব্যবহার করার সর্বোত্তম অংশটি হ'ল কোনও সফ্টওয়্যার স্থাপন করা হলে উত্স অনুসারে সংস্করণটির হার্ডকোডিং নয়। গিটটি বর্ণনা করে নিকটতম ট্যাগ সন্ধানের উপায়টি পরবর্তী সংস্করণ নম্বর গণনা করতে এবং কেবল রেপো এবং প্যাকেজের নামে একটি ট্যাগ রেফ যুক্ত করতে ব্যবহৃত হতে পারে।
সিড

64

আপনি যা চান তা যদি প্রথম ট্যাগ থাকে তবে কমিট থাকে:

git describe --contains <commit>

সেরা উত্তর দেয় IMO। আপনার যদি একটি বড় সংগ্রহস্থলে পুরানো কমিটের উপর "গিট ট্যাগ - কনটেনস" ব্যবহারের চেয়ে ঘন ঘন ট্যাগগুলি চালাতে কিছুটা সময় নিতে পারে এবং সেই প্রতিশ্রুতিযুক্ত সমস্ত ট্যাগ দেয় gives

এই গিট বর্ণনার ফর্মটি খুব দ্রুত সঞ্চালিত হয় এবং আপনাকে একটি একক আউটপুট মান দেয় যা প্রতিশ্রুতিযুক্ত প্রথম ট্যাগ এবং আপনার প্রতিশ্রুতি কতটা পিছনে।


27

এ কেমন?

git tag --points-at <commit-id>

এটি আপনাকে প্রদত্ত প্রতিশ্রুতিযুক্ত সমস্ত ট্যাগ git describeদেয় (যেখানে কেবল আপনাকে একটি দেয়), এবং বংশধরদের কমিটগুলিতে ট্যাগগুলি অন্তর্ভুক্ত করে না (যেমন git tag --containsকরে)।


আমি এটি পছন্দ করি কারণ স্টাডারকে কোনও ত্রুটি বার্তা লেখা হয় নি। ধন্যবাদ
বসুক

23

ম্যানুয়ালটিতে আপনি এই তথ্যটি পেতে পারেন

git tag --contains <commit>

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

4
চার্লস বেইলি উপরে যেমন বলেছিলেন, ঠিক তেমনটাই আমি খুঁজছি না। হতে পারে আপনার
আরটিএফএম

4
ঠিক আছে, ভুল উত্তরের জন্য দুঃখিত। আমি যখন যাচাই করেছিলাম তখন মনে হচ্ছে আপনি যা যা চেয়েছিলেন তা করছে। আমি আরটিএফএম করেছি, আমি কেবল ভুল সমস্যাটি সমাধান করছিলাম। আশা করি বেইলি এমন একটি সমাধান দিয়েছেন যা আপনাকে সহায়তা করে।
ধরগা

6
ঠিক তাই, আপনি গিট প্রশ্ন জিজ্ঞাসা করার আগে পুরো গিট ম্যানুয়ালটি পড়ার দরকার নেই? গুগল সূচী কোনও গিট ম্যান পৃষ্ঠার চেয়ে অনেক ভাল ...
অ্যারোনস্টেসি

13

আমি কী চাই তা আমাকে দিতে উভয় শীর্ষ উত্তরের কম্বো পেয়েছি:

git describe --tags --exact-match <commit-id>

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

যেমন $ git describe --tags --exact-match head~2

আপনি দেয়:

$ ReleaseBeta

0

কয়েকটি উত্তর জোরদার করা:

git tag --contains [<ref>]

এবং

git tag --points-at [<ref>]

অথবা শুধুই

git tag

সুনির্দিষ্টভাবে ব্যবহার করুন, নির্দিষ্ট রেফের জন্য কোনও (এবং সমস্ত) ট্যাগ মুদ্রণ বা নির্দিষ্ট না থাকলে বর্তমান প্রতিশ্রুতিবদ্ধ।

git describe --tags [<ref>]

যেখানে <ref>বর্তমান কমিটের ডিফল্ট রয়েছে, যদি কোনও কমিটের সাথে কোনও ট্যাগ যুক্ত না হয় তবে 128 দিয়ে প্রস্থান করে এবং কমিটের সাথে যুক্ত একটি ট্যাগ মুদ্রণ করে (কোনও প্যাটার্ন বলে মনে হয় না)।

git describe [<ref>]--tagsএটি কেবল টীকাগুলি প্রিন্ট করে তা বাদ দিয়ে একইরকম আচরণ করে ।

বিকল্পটি সরবরাহের মাধ্যমে কোনও ট্যাগটি মুদ্রণ --containsকরা describeযাবে যা নির্দিষ্ট প্রতিশ্রুতির পূর্বপুরুষের সাথে সম্পর্কিত। উদাহরণ স্বরূপ

$ git init
Initialized empty Git repository in /tmp/test
$ git commit -m one --allow-empty
[master (root-commit) 7fdfff2] one
$ git commit -m two --allow-empty
[master cd5f8f1] two
$ git tag -am foo foo
$ git tag bar
$ git log --format=oneline
cd5f8f1f4f29eb164f83e224768ccaf37fe170ed (HEAD -> master, tag: foo, tag: bar) two
7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1 one
$ git describe 7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1
fatal: No tags can describe '7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1'.
Try --always, or create some tags.
$ git describe --contains 7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1
bar~1

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