গিটে প্রদত্ত প্রতিশ্রুতিটির বার্তা প্রিন্ট করুন


244

একটি প্রদত্ত প্রতিশ্রুতিবদ্ধতার প্রতিশ্রুতি বার্তাটি মুদ্রণের জন্য আমার একটি নদীর গভীরতানির্ণয় কমান্ড দরকার - এর চেয়ে বেশি কিছুই নয়, কিছু কম নয়।


3
যদি কেউ এখানে একক-লাইন প্রতিশ্রুতি বার্তা প্রিন্ট করার উপায় খুঁজছেন তবে শুরুতে প্রদর্শিত git show -s --oneline <commit>
হ্যাশটির

সার্ভার মেশিনে প্রতিশ্রুতি বার্তা মুদ্রণের জন্য আমাদের লাইনটি কোথায় যুক্ত করা উচিত? মানে কোন হুক ফাইল?

"নদীর গভীরতানির্ণয়" কমান্ড বলতে কী বোঝ?
ব্রায়ান অ্যাশ

উত্তর:


332

এটি "নদীর গভীরতানির্ণয়" নয়, তবে এটি আপনি যা চান ঠিক তা করবে:

$ git log --format=%B -n 1 <commit>

আপনার যদি একেবারে একটি "নদীর গভীরতানির্ণয়" কমান্ডের প্রয়োজন হয় (তবে কেন এটির প্রয়োজন তা নিশ্চিত নয়), আপনি ব্যবহার করতে পারেন rev-list:

$ git rev-list --format=%B --max-count=1 <commit>

যদিও rev-listকমিট বার্তা ছাড়াও কমিট শ (প্রথম লাইনে) মুদ্রণ করবে।


4
আমার জন্য নিখুঁতভাবে কাজ করেছেন - তবে আমি %s%bপরিবর্তে %B(একটি লিনাক্স বাক্সে) ব্যবহার করেছি
adamk

17
%Bএকটি সঠিক স্পেসিফার (কমপক্ষে, গিট 1.7.2 এ, কখন এটি যুক্ত হয়েছিল তা নিশ্চিত নয়)।
মিপাদি

2
%B1.7.1 (সম্ভবত 1.7.1.1 এ) এর কিছু পরে যুক্ত হয়েছিল।
মিপাদি

1
প্রকৃতপক্ষে এটি - গিট 1.7.2 আপাতভাবে। মুচস গ্রাসিয়াস!
মার্ক প্রোবস্ট

আপনি এটিও ব্যবহার করতে পারেন: $ git log --format=%B -n 1 <commit> | cat -এটি আপনাকে প্রতিশ্রুতি বার্তা এবং কোনও প্রতিশ্রুতি দেয় না এবং আপনি এটি "পাইপ" করতে পারেন। আমি আসলে এটি আমার সিআই স্ক্রিপ্টের অংশ হিসাবে ব্যবহার করি।
পাওলো মুউজ

138

git showএর চেয়ে আরও একটি নদীর গভীরতানির্ণয় কমান্ড git log, এবং একই বিন্যাসের বিকল্প রয়েছে:

git show -s --format=%B SHA1

9
এবং যদি আপনি কেবল প্রথম লাইনটি ("বিষয়") চান তবে তার %sপরিবর্তে ব্যবহার করুন %B
এনটিসি 2

13
(আমি এটি গ্রহণযোগ্য "লগ" বা "রেভ-তালিকা" উত্তরের চেয়ে পছন্দ করি, কারণ এটি 1 টি প্রবেশের মধ্যে সীমাবদ্ধ তালিকার চেয়ে একক প্রতিশ্রুতিবদ্ধ অপারেশন operation)
রিচ

17

নদীর গভীরতানির্ণয় নয়, তবে আমার .gitconfig এ এইগুলি রয়েছে:

lsum = log -n 1 --pretty=format:'%s'
lmsg = log -n 1 --pretty=format:'%s%n%n%b'

এটি "শেষ সংক্ষিপ্তসার" এবং "শেষ বার্তা"। আপনি সেই প্রতিশ্রুতিটির সারাংশ বা বার্তাটি পেতে একটি প্রতিশ্রুতি প্রদান করতে পারেন। (আমি ১.7.০.৫ ব্যবহার করছি সুতরাং% বি নেই))


আপনি একটি পরামিতি হিসাবে আর্গুমেন্ট পাস করতে পারেন। সুতরাং কেবলমাত্র সর্বশেষ প্রতিশ্রুতি ফেরতের পরিবর্তে আপনি এটি সর্বশেষ 5 টি কমিটগুলি ফেরত দিতে পারেন। এখানে পরিবর্তন lsum = "! F () it গিট লগ -n n 1 - ব্যাখ্যা = ফর্ম্যাট: '% s';}; চ" lmsg = "! চ () it গিট লগ -n $ 1 - ব্যাখ্যা = ফর্ম্যাট : '% s এর% N% N% b';}; চ "খুঁজে তা এখানে stackoverflow.com/questions/7005513/... আপনি শুধুমাত্র এই Git lsum 5 রান
kuklei

15

এটি আপনাকে কোনও নির্দিষ্ট সময়ের জন্য সমস্ত বার্তাগুলির একটি খুব কমপ্যাক্ট তালিকা দেবে।

git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B > CHANGELOG.TXT

4

আমি ব্যবহার শুরু

git show-branch --no-name <hash>

এর চেয়েও দ্রুত মনে হচ্ছে

git show -s --format=%s <hash>

উভয়ই একই ফলাফল দেয়


1
এটি কেবল প্রথম লাইনটি (% s) দেখায়, পুরো প্রতিশ্রুতি বার্তাটি নয় ("আরও কিছু নয়, কিছু কম নয়", যেমন প্রশ্নকারী লিখেছেন)। যদি আপনার% B এর সাথে শো-শাখা করার কোনও উপায় থাকে তবে তা সহায়ক হবে।
ক্যানোনিকাল ক্রিস

3

আমি এর জন্য শর্টলগ ব্যবহার করি:

$ git shortlog master..
Username (3):
      Write something
      Add something
      Bump to 1.3.8 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.