আমি কীভাবে আমার গিট সংগ্রহস্থলের সমস্ত ট্যাগ তৈরির তারিখ অনুসারে তালিকাভুক্ত করতে পারি?


128

আমার সিস্টেমে সমস্ত ট্যাগ তৈরি হওয়ার তারিখের মধ্যে তালিকা তৈরি করার জন্য আমার কিছু উপায় প্রয়োজন তবে আমি নিশ্চিত নই যে গিট-লগের মাধ্যমে আমি সেই ডেটা পেতে পারি। ধারনা?


2
আপনি কি এটি বলতে যে, তোমরা সবাই ট্যাগের তালিকা পেতে চান অনুক্রমে সেখানে সৃষ্টি তারিখ?
লিথুয়াক

3
এফওয়াইআই (১) এই প্রশ্নটি তারিখ অনুসারে তালিকাভুক্ত ট্যাগের তালিকা করার জন্য। (২) তারিখ অনুসারে লাইটওয়েট ট্যাগ তালিকা করার জন্য, এখানে যান(৩) গিটের লাইটওয়েট বনাম টীকাকৃত ট্যাগগুলির মধ্যে পার্থক্য কী তা সম্পর্কে সহায়ক অনুস্মারকটির জন্য , এখানে যান
ট্রেভর বয়ড স্মিথ

@ ট্র্যাভারবয়ডস্মিথ: এটি মোটেই সঠিক নয়। পার্থক্য হল যে (2) তালিকাগুলির দ্বারা সমস্ত ট্যাগ হল তারিখ কমিট এর বাঁধা কমিট এই পৃষ্ঠার সমাধান যে সাজানোর দ্বারা দেয় যেহেতু, তারিখ বাঁধা (যদিও শুধুমাত্র সটীক ট্যাগ, Git না যেহেতু দোকান তারিখ লাইটওয়েট ট্যাগ বাঁধা)।
ডেভিড পি

উত্তর:


174

ট্যাগ তৈরির তারিখ অনুসারে বাছাই করা টীকাযুক্ত এবং লাইটওয়েট ট্যাগগুলির সাথে কাজ করে:

git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags

12
অসাধারণ. git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tagsআমার যা প্রয়োজন ঠিক তাই করেছিল ধন্যবাদ!
জন উর্সেনবাচ

21
@DrorCohen দ্বারা একটি সমাধান যা লাইটওয়েট ট্যাগ কাজ করে: stackoverflow.com/questions/6900328/... । সহজ রেফারেন্সের জন্য এখানে আটকানো: গিট লগ - ট্যাগস - সজ্জা দ্বারা সাজানো - ব্যাখ্যা = "ফর্ম্যাট:% এআই% ডি"
গিলিয়ড

5
%(contents)প্রয়োজনে টীকা যুক্ত করতে ব্যবহার করতে পারেন, উদাহরণস্বরূপgit for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
টিম ডিজিগিনস 14'13

7
বা এমনকি কিছুটা ক্লিনার:git for-each-ref --sort=taggerdate --format '%(tag)'
বারিস ওয়ান্সচার্স

4
--sort=creatordateটীকাগুলি এবং অননোটবিহিত ট্যাগ উভয়ের জন্যই কাজ করে তবে --sort=taggerdateকেবল টীকাবিহীন ট্যাগগুলির সাথেই কাজ করে বলে মনে হচ্ছে। ব্যবহার করে পরীক্ষিতgit version 2.16.3
অস্টিনিহিমান

56

গিট ২.৮ (মার্চ ২০১)) গিট ১.৪.৪ (অক্টোবর ২০০6) এর সাথে ডেটে অন্য বিকল্প ডকুমেন্ট করে ।
দেখুন কমিট e914ef0 দ্বারা (05 জানুয়ারী 2016) এরিক ওয়াং ( ele828)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 108cb77 , 20 জানুয়ারী 2016)

নতুন দেখুন Documentation/git-for-each-ref.txt

প্রতিশ্রুতিবদ্ধ এবং ট্যাগ অবজেক্টের জন্য, বিশেষ creatordateএবং creator ক্ষেত্রগুলি অবজেক্টের ধরণের উপর নির্ভর করে committerবা taggerক্ষেত্র থেকে উপযুক্ত তারিখ বা নাম-ইমেল-তারিখের টিপলের সাথে সামঞ্জস্য করবে ।
এগুলি এনোটেটেড এবং লাইটওয়েট ট্যাগগুলির মিশ্রণে কাজ করার উদ্দেশ্যে

তাই creatordateট্যাগ সহ কাজ করে :

git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }' 

বা:

git tag --sort=-creatordate 

আমি যেমন " rc-XYZW ফর্মের সংস্করণ স্ট্রিং ক্রম অনুসারে গিট ট্যাগগুলিকে কীভাবে সাজান? " এ আমি বিশদ হিসাবে , আপনি এখানে একটি সাজানোর ক্রম যুক্ত করতে পারেনgit tag (গিট ২.০ জুন ২০১৪ সাল থেকে) এর ।

এই সাজানোর অর্ডারে ক্ষেত্রের নাম (তালিকাভুক্ত git for-each-ref) ট্যাগগারেট অন্তর্ভুক্ত রয়েছে । যে জন্য করতে পারবেন git tag --sort=taggerdate(উল্লেখ DarVar নিচে )
উদাহরণস্বরূপ, মধ্যে git/gitরেপো এটা তালিকা প্রস্তুত করা যাবে v2.10.0ট্যাগ শেষ:

v2.9.1
v2.9.2
v2.9.3
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.10.0

ডিফল্ট অর্ডারটি ( git tag) করবে না :

v2.1.2
v2.1.3
v2.1.4
v2.10.0
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.2.0

অনেক ধন্যবাদ. আমি ভাবছিলাম কেন কিছু তারিখ খালি ছিল? আমি ইতিমধ্যে লাইটওয়েট ট্যাগগুলি সন্দেহ করেছিলাম। আমি আনন্দিত যে আমার ট্যাগগুলি ধন্যবাদ পুনরায় তৈরি করার দরকার নেই creatordate!
এক্সহুমা

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

(তারিখের ক্ষেত্র ছাড়াই) থেকেও দুর্দান্ত আউটপুট:

git log --tags --decorate --simplify-by-decoration --oneline

নির্ভরতা এবং স্ট্রিপড লিনিয়ার কমিটগুলির সাথে সম্পূর্ণ ইতিহাস দেখতে (কেবলমাত্র প্রয়োজনীয় ইভেন্টগুলি, যেমন ট্যাগিং এবং শাখা / মার্জিং):

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

অলস লোকদের জন্য: git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"এবং এটি আমার পক্ষে সবচেয়ে ভাল কাজ করে।
ম্যাটিউজ

1
নোট করুন যে এটি কমিটের তারিখ দ্বারা অর্ডার করা হয়েছে, ট্যাগগুলি তৈরি করার তারিখ নয় not জোশ লির (বর্তমানে) শীর্ষ নির্ধারিত উত্তর ট্যাগটি তৈরি হওয়ার তারিখ অনুসারে অর্ডার করে।
নাথানিয়াল উলস

13
git tag --sort=-taggerdate

ম্যান পৃষ্ঠা অনুসারে, "উপসর্গ - মানের ক্রমবর্ধমান ক্রমকে সাজানোর জন্য।"

git tagঅনুরূপভাবে বাছাই করা কীগুলি ব্যবহার করে git-for-each-refযা কীগুলি নথিভুক্ত করা হয়।


1
এটি প্রশ্নের ভিত্তিতে সম্ভবত সবচেয়ে সঠিক। এখানে সম্ভাব্য বাছাইয়ের ক্ষেত্রের রূপরেখার দস্তাবেজের লিঙ্কটি এখানে রয়েছে: git-scm.com/docs/git-for-each-ref
prasanthv

এই প্রতিক্রিয়াটি হালকা ওজনের ট্যাগগুলিকে বিবেচনা করে না কারণ তাদের খালি "ট্যাগারডেট" রয়েছে। "ক্রিয়ের্ডেট" সহ অন্যান্য প্রতিক্রিয়াগুলি আরও সঠিক accurate
মুরহুক

13

এই ওয়ান-লাইনার কোনও ঝগড়া ছাড়াই তারিখ এবং ট্যাগগুলি প্রদর্শন করে।

git tag --format='%(creatordate:short)%09%(refname:strip=2)'

আউটপুট:

2015-04-01  storaged-2.0.0
2015-06-11  storaged-2.1.0
2015-08-06  storaged-2.1.1
...

আপনি যদি ট্যাগগুলি ডিফল্ট অনুসারে বাছাই করা পছন্দ করেন না --sort=creatordate, উদাহরণস্বরূপ, বিকল্পের সাথে তারিখ অনুসারে বাছাই করতে পারেন । আরও তথ্যের জন্য ভনসি উত্তর দেখুন ।


এই দুর্দান্ত পদ্ধতি কি তাদের তারিখ অনুসারে বাছাই করতে বাধ্য? আরোহী? সাজানো?
মোটি শ্নের

11

কমিটের তারিখের উপর ভিত্তি করে টীকাযুক্ত ট্যাগ এবং লাইটওয়েট ট্যাগগুলি সম্পূর্ণ বাছাই করতে, আমি ব্যবহার করছি:

git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
  sort -n | awk '{ print $4, $3; }' 

এই কমান্ডটি প্রতিটি ট্যাগ এবং সম্পর্কিত কমিট অবজেক্ট আইডি, কালানুক্রমিকভাবে তালিকাভুক্ত করবে।


কিছুটা অবরুদ্ধ। ... টীকাগুলি ট্যাগগুলিতে, 'কমিটরডেট' খালি এবং লাইটওয়েটের ট্যাগগুলিতে 'ট্যাগগারেটেট' খালি। সুতরাং একটি কার্যনির্বাহী হিসাবে '* কমিটরডিট' হালকা ওজনের হলে গিটকে মূল কমিট অবজেক্টের ব্যাকরিফারেন্সের তারিখগুলি বলছে। ...
ingyhere

পরিবর্তে 'ক্রিয়েটর্ডেট' ব্যবহার করা একইভাবে কার্যকরভাবে করা উচিত।
ingyhere


5

নিম্নলিখিতটি কমিটের উপর নির্ভর করে, সুতরাং কমিটের সাথে তারিখের তথ্য আছে কিনা তা বিবেচ্য নয়:

git log --tags --decorate --simplify-by-decoration|grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//' -e 's/,.*$//'|tac

জোশ লির উপরের উত্তরটি অর্ডারটি সঠিক হওয়ার জন্য কোনও ট্যাগের তারিখের উপর নির্ভর করে।


অনুমানযোগ্য কমান্ডটি tacকী তা - এটি এটিকে পরিবর্তন করতে পারে more। যাইহোক আপনার কমান্ড দুর্দান্ত কাজ করেছে - ধন্যবাদ!
ডেভিড এইচ


3

পূর্বে উল্লিখিত পদ্ধতিগুলির ভিত্তিতে আমি তালিকায় প্রকৃত ট্যাগের তারিখটিও দেখতে চেয়েছিলাম এবং তাই আমার ব্যবহারের সংস্করণটি হ'ল:

git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(creatordate:short) %(refname) %(*objectname) %(objectname)' refs/tags | sort -n | awk '{ print $3, $5, $4 }'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.