শুধুমাত্র প্রথম লাইনের সাথে গিট লগ আউটপুট কিভাবে করবেন?


330

আমি এর জন্য ফর্ম্যাটটি কাস্টমাইজ করার চেষ্টা করছি git log। আমি চাই সমস্ত প্রতিশ্রুতি এক লাইনে দেখানো হোক। প্রতিটি লাইনের প্রতিশ্রুতি বার্তার প্রথম লাইনটি দেখানো উচিত।
আমি খুঁজে পাওয়া যায় নি যে git log --pretty=shortকৌতুক করতে হবে কিন্তু আমার কম্পিউটারে এটি সম্পূর্ণ লগ দেখায় git log(সময় স্ট্যাম্প পাশে) আছে।

আরও, আমি ম্যান পৃষ্ঠায় সংজ্ঞায়িত স্থানধারকগুলি ব্যবহার করার চেষ্টা করেছি । যদিও, আমি লগ বার্তাটি সংক্ষিপ্ত করার জন্য কোনও আদেশ পাইনি। আমি এই রেখার চেষ্টা করেছি git log --pretty=format:'%h : %s'যা শর্ট হ্যাশ %hএবং সম্পূর্ণ বার্তাটি %sএক লাইনে দেখায় ।

আমি git version 1.7.3.1.msysgit.0ভিস্টায় ব্যবহার করছি


আমি আমার প্রতিশ্রুতি বার্তাগুলি যেভাবে লিখছি তার সাথে এর কিছু মিল থাকতে পারে। এখানে একটি উদাহরণ:

Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.

সুতরাং, প্রদত্ত উদাহরণ সহ আমি কেবল Added some functionality.সংক্ষিপ্ত হ্যাশ দ্বারা আউটপুট চালিত হতে চাই ।


1
%sবিষয়টি, সম্পূর্ণ বার্তা নয়।
জোশ লি

আপনি আসলে কী চান তা বলা সত্যিই কঠিন। shortবিন্যাস নয় যদিও (বিস্ময়!), সব এক লাইনে onelineআছে। আপনি যদি চান onelineএবং %h : %sতা না হন তবে তাদের কী হবে? বিশেষত, %sবিষয়টি, প্রতিশ্রুতি বার্তার প্রথম লাইন। এটি প্রকৃতপক্ষে একটি সংক্ষিপ্ত সংস্করণ হওয়া উচিত। আপনি কি বার্তাটির জন্য একক দীর্ঘ লাইন দিয়ে কমিটগুলি করছেন এবং শব্দ মোড়ক দিয়ে কোনওভাবে দেখেছেন তা কি সম্ভব?
ক্যাসকেবেল

আপনি সম্পূর্ণ বুঝতে। সমস্যাটি হ'ল onelineএবং %sকমপক্ষে আমার কম্পিউটারে আমরা যা প্রত্যাশা করি তা আউটপুট না করে। আমি আমার প্রতিশ্রুতি বার্তার উদাহরণ সহ আমার পোস্ট আপডেট করেছি। হতে পারে এটি সাহায্য করে।
জেজেডি

উত্তর:


544

আপনি কি এই চেষ্টা করেছেন?

git log --pretty=oneline --abbrev-commit

সমস্যাটি সম্ভবত আপনি প্রথম লাইনের পরে একটি খালি লাইন মিস করছেন। উপরের কমান্ডটি সাধারণত আমার পক্ষে কাজ করে তবে আমি খালি দ্বিতীয় লাইন ছাড়াই একটি প্রতিশ্রুতি পরীক্ষা করেছি। আপনার মত আমিও একই ফলাফল পেয়েছি: পুরো বার্তাটি এক লাইনে।

খালি দ্বিতীয় লাইন গিট কমিট বার্তাগুলির একটি মান। আপনি যে আচরণটি দেখছেন সম্ভবত উদ্দেশ্যমূলকভাবে এটি প্রয়োগ করা হয়েছিল।

প্রতিশ্রুতিবদ্ধ বার্তার প্রথম লাইনটি একটি সংক্ষিপ্ত বর্ণনাকে বোঝায়। আপনি যদি এটি একক লাইনে তৈরি করতে না পারেন তবে আপনি কয়েকটি ব্যবহার করতে পারেন তবে গিট প্রথম খালি লাইনের আগে সমস্ত কিছুকে "সংক্ষিপ্ত বিবরণ" হিসাবে বিবেচনা করে। onelineপুরো সংক্ষিপ্ত বিবরণ মুদ্রণ করে, তাই আপনার 3 টি সারি।


ধন্যবাদ! আপনি রহস্যটির সমাধান করেছেন: বিষয়টি বাকী থেকে আলাদা করার জন্য আমার প্রতিশ্রুতিবদ্ধ বার্তায় প্রথম লাইনের পরে খালি লাইন নেই। তবুও, এটি ভাল লাগলে যদি আমি এটি putোকাতে বা এটিকে ছেড়ে দিতে মুক্ত হই।
জেজেডি

1
সমস্যা নেই. প্রকৃতপক্ষে, আপনি খালি লাইন থাকায় মুক্ত বা না পারেন। আপনার পুরো বার্তাটি যদি আপনি এটিকে ছেড়ে দেন তবে এটি সংক্ষিপ্ত বার্তা হয়ে যায়। আমি এই সংক্ষিপ্ত বিবরণ / বিস্তারিত বিবরণ পছন্দ করি এবং আমি মনে করি যে সংক্ষিপ্ত বর্ণনার জন্য একটি লাইনে সীমাবদ্ধ হওয়া একটি সমস্যা ছিল, সুতরাং খালি লাইনের প্রয়োজনীয়তা। আপনি সর্বদা git logফিল্টারিং স্ক্রিপ্টে আউটপুটটি পাইপ করতে পারতেন তবে আমি সত্যিই ফাঁকা লাইন দিয়ে একটি সংক্ষিপ্ত বিবরণ লেখার পক্ষে পরামর্শ দেব।
গৌথিয়ার

89
এছাড়াও - git log --oneline ওনলাইন হ'ল "- ব্যাখ্যাটি = অনলাইন - অ্যাব্রেভ-কমিট" একসাথে ব্যবহৃত হওয়ার জন্য একটি অন্তর্নির্মিত শর্টহ্যান্ড।
জেরেমি লোগান 21

আপনি কীভাবে সংক্ষিপ্ততর হ্যাশট্যাগ থেকে মুক্তি পাবেন? এটি বিট-প্যাকডলি সুন্দর নয় এমন নয়। কিন্তু ছাড়া cut। এটি awkওয়ার্ড হবে ... (বিটিডাব্লু গণিত প্রশ্ন: স্টোরেজ স্তরে সঠিকভাবে এনকোড করা হাফম্যান ক্রমটির পরবর্তী বিট কী, ইঙ্গিত: এটি === 50%।)
ফিলিপ

7
এটি ছিল tx। ওহ, এছাড়াও, আমি একটি পৃষ্ঠায় পূর্ণ এস পেয়েছি, তাই আমি স্বাভাবিকভাবে একটি %জন্য যুক্ত '%s'। সি;
ফিলিপ

158

নেই git log --onelineকি আপনি চান?


1
আমি চাই না যে পুরো প্রতিশ্রুতি বার্তাটি একটি লাইনে একত্রিত করা হোক। আমি প্রতিটি প্রতিশ্রুতিবদ্ধ বার্তার প্রথম লাইনটি দেখতে চাই।
জেজেডি

41

উন্নত এবং সহজ একটি করে Git লগ ওরফে । এক সেশনের জন্য একবারে টার্মিনালে নীচের কোডটি আটকান। কোডটি দৃistant়তর করতে zshrc বা bash প্রোফাইলে পেস্ট করুন।

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

আউটপুট

git lg

আউটপুট পরিবর্তন লাইন

git lg -p

বিকল্পভাবে (প্রস্তাবিত)
গ্লোবাল .gitconfig ফাইলে এই কোডটি আটকান

[alias]
  lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

আরও পড়া.
https://coderwall.com/p/euwpig/a-better-git-log
উন্নত পঠন।
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/


উদাহরণটি চমত্কার-বিন্যাসের একটি দুর্দান্ত ডেমো, তবে "নীচের কোডটি একবারে টার্মিনালে একবারে আটকান" ভুল বলে মনে হচ্ছে কারণ এটি "গিট
এলজি

অন্যদের কাছে নোট করুন, আপনি যদি এই আদেশটি ব্যাচে রেখে দেন,%% এর সাথে %% প্রতিস্থাপন করুন, "" দিয়ে প্রতিস্থাপন করুন ""। ফলাফল = git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1। পরিবর্তিত রেখাগুলি পেতে আপনি এই ব্যাট ফাইলটিতে পাস করতে পারেন
ধীররাজ ভাস্কর


25

আপনি একটি বিশ্বব্যাপী উপন্যাস সংজ্ঞায়িত করতে পারেন যাতে আপনি আরও আরামদায়ক উপায়ে একটি সংক্ষিপ্ত লগের ডাকতে পারেন:

git config --global alias.slog "log --pretty=oneline --abbrev-commit"

তারপরে আপনি এটি ব্যবহার করে কল করতে পারেন git slog(এটি সক্ষম করে থাকলে এটি স্বয়ংক্রিয়করণের সাথেও কাজ করে)।


8

প্রতিশ্রুতিবদ্ধ বার্তা ছাড়াই, কেবল হ্যাশ:

git log --pretty=oneline | awk '{print $1}'

7
আপনি শুধুমাত্র হ্যাশ চান ...git log --pretty=format:"%H"
michael_j_ward

আপনি যদি কেবল হ্যাশ চান তবে আপনি এটিও ব্যবহার করতে পারেন git rev-list HEAD
ফ্যাবিও মনিকাকে

-8

আপনি যদি সর্বদা git logএইভাবে ব্যবহার করতে চান তবে আপনি গিট ওরফে যুক্ত করতে পারেন

git config --global alias.log log --oneline

এর পরে git logসাধারণত কী মুদ্রিত হবে তা মুদ্রণ করবেgit log --oneline


12
এটি আসলে কাজ করে না, কারণ (এ। গিট এলিয়াসগুলি অন্তর্নির্মিত কমান্ডের নামগুলি ওভাররাইড করতে পারে না) এবং (বি "log --oneline"। চারপাশে উদ্ধৃতিগুলি থাকা দরকার )।
সর্বাধিক ন্যানসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.