গিট ট্যাগগুলির সময় এবং তারিখ পান


93

আমার একটি প্রকল্প রয়েছে যা গিট ব্যবহার করছে এবং সমস্ত প্রকাশকে একটি ট্যাগ দিয়ে ট্যাগ করেছে।

$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0

আমার লক্ষ্যটি হল একটি ওয়েব ইন্টারফেসে প্রকাশ এবং প্রকাশের তারিখগুলি তালিকা করা (ট্যাগ / প্রতিশ্রুতি তারিখ = প্রকাশের তারিখ)। বর্তমানে আমরা ব্যবহার করে সমস্ত প্রকাশের তালিকা তৈরি করি git tag

ট্যাগটি তৈরি হওয়ার সময় (বা প্রতিশ্রুতিবদ্ধ যে এটি নির্দেশ করে) এর জন্য আমি কীভাবে সময় এবং তারিখ পেতে পারি?


4
এখানে সুনির্দিষ্টভাবে বলা ভাল যে এটি আপনি যে ট্যাগটি পরে আছেন তার প্রতিশ্রুতিবদ্ধ তারিখ। যেহেতু একটি ট্যাগের কোনও তারিখ নেই।
জবওয়াত


উত্তর:


70

--formatযুক্তিটি এতে ব্যবহার করুন git log:

git log -1 --format=%ai MY_TAG_NAME

4
টিপ - ট্যাগ নামের সাথে "TAG" প্রতিস্থাপন করুন। উদাহরণস্বরূপ git log -1 --format=%ai v0.2.3,।
টোবিয়াস

4
আপনি যদি ISO8601 চান, --format=%aI(মূলধন "আমি") করুন
চেইম এলিয়াহ

git log -1 --format=%ai MY_TAG_NAME | cat
পৃষ্ঠাগুলি

"-1" কি করছে?
ব্লেডমাস্টার

@ ব্ল্যাডমাস্টার এটি git logকেবলমাত্র একটি প্রতিশ্রুতি প্রদর্শন করতে বলে , যা ট্যাগ সম্পর্কিত। ডিফল্ট আচরণ হ'ল নির্ধারিত থেকে শুরু করে পুনরায় সংগ্রহশালায় প্রথম কমিট করার সমস্ত কমিটগুলি দেখানো।
ব্যবহারকারীর 4815162342

85

এটি সর্বদা আমার পক্ষে কাজ করেছিল:

git log --tags --simplify-by-decoration --pretty="format:%ci %d"

যদি আপনি আলাদা তারিখের ফর্ম্যাটিং চান তবে ফর্ম্যাট স্ট্রিংয়ের বিশদ জানতে গিট-লগ ম্যানপেজের "প্রীতি ফর্ম্যাটস" বিভাগটি দেখুন।


13
যদিও সতর্ক করতে হবে, এটি অঙ্গীকারের জন্য তারিখ / সময় তালিকাভুক্ত করবে, তবে টীকাগুলির ট্যাগের তারিখ / সময় নয়।
WiSaGaN

4
taglog = log --tags --simplify-by-decoration --pretty='format:%ci %d'আপনার .gitconfig ফাইলের [ওরফে] বিভাগে স্রেফ (একক-, ডাবল-কোট নয়) নোট করুন, এবং এখন আপনি একটি গিট ট্যাগলগ কমান্ড পেয়েছেন :)
লামবার্ট

45

আরও একটি বিকল্প:

git for-each-ref --format="%(refname:short) | %(creatordate)" "refs/tags/*"

ফর্ম্যাট বিকল্পগুলির জন্য https://git-scm.com/docs/git-for-each-ref#_field_names দেখুন

%(creatordate) ট্যাগটি ব্যবহারের সময় তৈরি হওয়ার তারিখটি দেখতে, প্রতিশ্রুতিবদ্ধতার তারিখ দেয় %(taggerdate)

আপনি সরাসরি শেলটি অন্তর্ভুক্ত করতে পারেন:

$> git for-each-ref --shell --format="ref=%(refname:short) dt=%(taggerdate:format:%s)" "refs/tags/*"

ref='v1.10' dt='1483807817'
ref='v1.11' dt='1483905854'
ref='v1.12.0' dt='1483974797'
ref='v1.12.1' dt='1484015966'
ref='v1.13' dt='1484766542'
ref='v1.2' dt='1483414377'
ref='v1.3' dt='1483415058'
ref='v1.3-release' dt='' <-- not an annotated tag, just a pointer to a commit so no 'taggerdate', it would have a 'creator date'.
ref='v1.3.1' dt='1483487085'
ref='v1.4' dt='1483730146'
ref='v1.9' dt='1483802985'

4
এটি ট্যাগের তারিখ পাওয়ার জন্য সেরা উত্তর।
জোসেফ কে স্ট্রস

বিকল্পভাবে, আপনি ইউনিক্স টাইমস্ট্যাম্পটি সহ git for-each-ref --format="%(taggerdate:unix)" refs/tagsবা সাবস্ট্রিং হিসাবে পেতে পারেনgit for-each-ref --format="%(taggerdate:raw)" refs/tags
আরডি

4
ধন্যবাদ! অন্যান্য সমস্ত উত্তর কেবল কমিটের তারিখ দেয় এবং ট্যাগের তারিখটি দেয় না।
স্যাম

হ্যাঁ সেরা উত্তরটি ডিফো করুন কারণ এটি কেবল প্রকৃত ট্যাগগুলি দেখায়, সমস্ত কমিট করে না, লজ্জাজনক কপট এসও এর অন্যান্য উত্তরও উচ্চতর রেট দেওয়া থাকে।
সামিটবেস্ট

4
কম টাইপিংয়ের সাথে একই ফলাফল:git tag --format "%(refname:short) %(creatordate:short)"
অ্যান্ড্রু স্পেন্সার

27

নোট করুন যে উপরের দুটি সমাধানই আপনাকে কমিট করার তারিখ দেয়, যা কমিটিকে যখন মুক্তির জন্য ট্যাগ করা হয়েছিল তার চেয়ে আলাদাভাবে আলাদা হতে পারে। নিজেই ট্যাগের তারিখ পেতে, আপনি নিজের সাথে ট্যাগটি খুঁজে পেতে rev-parse, এর সাথে পড়তে cat-fileএবং তারপরে পার্স করতে পারেন। একটু পাইপলাইন:

git rev-parse v1.0.0 | xargs git cat-file -p | egrep '^tagger' | cut -f2 -d '>'


ভাল, শুধুমাত্র সমস্যা ফলাফল ফর্ম্যাট করা হয় না (1419372909 -0300)
জোসে_জিডি

একবার রেভ-পার্স থেকে কমিট আইডি পেয়ে গেলে, আমি বিশ্বাস করি আপনি এটি করতে পারেন: গিট রেভ-পার্স ভি 1.0.0 | xargs git show -s - ব্যাখ্যা =% aI
কীথ

@ কীথ এখন আপনি কমপক্ষে টীকায়িত ট্যাগগুলির জন্য ট্যাগ করা তারিখের পরিবর্তে কমিটের লেখকের তারিখটি দেখিয়ে ফিরে গেছেন
বেন

3

এটি করার জন্য গিট ট্যাগ কমান্ডে কোনও সহজ বিকল্প নেই। আমি চালানোর জন্য সবচেয়ে সুবিধাজনক পেয়েছি

git log --decorate=full

ট্যাগগুলি সহ সমস্ত কমিটের তালিকাবদ্ধ করতে যদি কিছু থাকে। তালিকাবদ্ধকরণের জন্য কেবল কমিটগুলি যা ট্যাগযুক্ত ব্যবহার

git log --decorate=full --simplify-by-decoration

বিশদ ব্যবহারের জন্য

git help log

2

কেউ "পাঠক" লাইনে তারিখটিকে মানব-পঠনযোগ্য কিছুতে রূপান্তর করতে gawk(না awk) ব্যবহার করতে পারেন :

git rev-parse v4.4-rc1 | xargs git cat-file -p | gawk '/^tagger/ { print strftime(PROCINFO["strftime"], $(NF-1)) }'

যদি কেউ পছন্দ না করে gawkতবে dateইউনিক্স সময় রূপান্তর করতে ব্যবহার করা যেতে পারে:

git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print "@" $(NF-1) }' | xargs date -d

এবং উদাহরণ ( dnsmasqগিট রেপো):

$ git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print "@" $(NF-1) }' | xargs date -d
Wed May 18 16:52:12 CEST 2016

আপনি কি আপনার পাশে থেকে চেষ্টা করেন ??
বিশাল প্যাটেল

অবশ্যই। এটি কাজ করে, dnsmasqগিট রেপো, উদাহরণস্বরূপ: $ git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print strftime(PROCINFO["strftime"], $(NF-1)) }' Wed May 18 16:52:12 CEST 2016
ভ্লাদিস

0

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

for ver in `git tag | tail -10`; do
    DATE=`git log -1 --format=%ai $ver | awk '{print $1}'`
    MESSAGE=`git tag -n $ver | cat | awk '{a=match($0, $2); print substr($0,a)}'`
    echo "$ver \t| $DATE | $MESSAGE"
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.