আমি দেখেছি কিছু বই এবং নিবন্ধগুলিতে গিট শাখা এবং কমিটগুলির কিছু সত্যই সুন্দর দেখাচ্ছে s আমি কীভাবে গিট ইতিহাসের উচ্চমানের মুদ্রণযোগ্য চিত্রগুলি তৈরি করতে পারি?
আমি দেখেছি কিছু বই এবং নিবন্ধগুলিতে গিট শাখা এবং কমিটগুলির কিছু সত্যই সুন্দর দেখাচ্ছে s আমি কীভাবে গিট ইতিহাসের উচ্চমানের মুদ্রণযোগ্য চিত্রগুলি তৈরি করতে পারি?
উত্তর:
আপডেট: এই উত্তরটি তার প্রাপ্যের চেয়ে অনেক বেশি মনোযোগ পেয়েছে। এটি মূলত পোস্ট করা হয়েছিল কারণ আমার মনে হয় গ্রাফিকগুলি দেখতে সুন্দর দেখাচ্ছে এবং এটি কোনও প্রকাশনের জন্য ইলাস্ট্রেতে আঁকতে পারে - এর চেয়ে ভাল কোনও সমাধান নেই। তবে এখন এই কিউ-তে আরও অনেক প্রযোজ্য উত্তর রয়েছে, যেমন ফ্র্যাক্জস , যুববস , বা হ্যারি লি'র মতো ! দয়া করে তাদের উপরে যান !!
আপডেট 2: আমি গিট প্রশ্নে ভিজ্যুয়ালাইজিং ব্রাঞ্চ টোপোলজির এই উত্তরের একটি উন্নত সংস্করণ পোস্ট করেছি , কারণ এটি সেখানে আরও বেশি উপযুক্ত। সেই সংস্করণটিতে অন্তর্ভুক্ত রয়েছে lg3
, যা লেখক এবং প্রতিশ্রুতিবদ্ধ উভয় তথ্য দেখায়, তাই আপনার সত্যই এটি পরীক্ষা করা উচিত। এই উত্তরটি historicalতিহাসিক (& rep, আমি স্বীকার করব) কারণে ছেড়ে দিচ্ছি, যদিও আমি সত্যিই কেবল এটি মুছতে লোভী হয়েছি।
আমার 2 ¢ : আমি সাধারণত দুটি ~/.gitconfig
ফাইল রাখি আমার দুটি উপাধি রয়েছে :
[alias]
lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
lg = !"git lg1"
git lg
/ git lg1
দেখে মনে হচ্ছে:
এবং এর git lg2
মতো দেখাচ্ছে:
#202020
/ #555555
, লাল: #5d1a14
/ #da4939
, সবুজ: #424e24
/ #a5c261
, হলুদ: #6f5028
/ #ffc66d
, নীল: #263e4e
/ #6d9cbe
, ম্যাজেন্টা: #3e1f50
/ #a256c7
, সায়ান: #234e3f
/ #62c1a1
, এবং সাদা: #979797
/ #ffffff
।
--date=relative
এবং --abbrev-commit
অপ্রয়োজনীয় কারণ আপনি স্পষ্টভাবে ব্যবহার করেন %cr
এবং %h
যথাক্রমে।
%C(auto)
পুনরায় নামগুলিতে ( %d
) পরিবর্তনকারী যুক্ত করব। দেখুন stackoverflow.com/questions/5889878/color-in-git-log/...
lg = log --graph --abbrev-commit --decorate --format=format:'%C(yellow)%h%C(reset)%C(auto)%d%C(reset) %C(normal)%s%C(reset) %C(dim white)%an%C(reset) %C(dim blue)(%ar)%C (reset)' --all
এখানে বেশিরভাগ উত্তর দুর্দান্ত, তবে তাদের জন্য যেগুলি কেবলমাত্র কোনও এলিয়াস বা অতিরিক্ত কিছু সেটআপ না করেই বিন্দু উত্তরের একটি সহজ একটি লাইন চান, এটি এখানে:
git log --all --decorate --oneline --graph
প্রত্যেকেই সারাক্ষণ একটি কাজ করে না git log
, তবে যখন আপনার এটি প্রয়োজন তখন কেবল মনে রাখবেন:
" একটি কুকুর " = Git লগ - একটি করব - ঘ ecorate - ণ neline - ছ Raph
git config --global alias.adog "log --all --decorate --oneline --graph"
--all
এতক্ষণ ধরে খুঁজছিলাম আমি কাঁদতে চলেছি (টি টি) আপনাকে ধন্যবাদ!
পাঠ্য আউটপুট জন্য আপনি চেষ্টা করতে পারেন:
git log --graph --abbrev-commit --decorate --date=relative --all
বা:
git log --graph --oneline --decorate --all
বা: ডিএজি গ্রাফ আঁকার জন্য এখানে একটি গ্রাভিউজ ওরফে রয়েছে।
--abbrev-commit --decorate
, এবং তারপর এটি নিখুঁত!
--abbrev-commit
যদি ব্যবহার করেন না--oneline
git log --graph --oneline --decorate --date=relative --all
--date
Gitographic.js কোনও সংগ্রহশালা ছাড়াই সুন্দর গিট শাখা আঁকতে দেয় allows কেবলমাত্র একটি জাভাস্ক্রিপ্ট কোড লিখুন যা আপনার শাখাগুলি কনফিগার করে এবং কমিট করে এবং এটি ব্রাউজারে রেন্ডার করে।
var gitGraph = new GitGraph({
template: "blackarrow",
mode: "compact",
orientation: "horizontal",
reverseArrow: true
});
var master = gitGraph.branch("master").commit().commit();
var develop = gitGraph.branch("develop").commit();
master.commit();
develop.commit().commit();
develop.merge(master);
বা metro
টেমপ্লেট সহ:
বা প্রতিশ্রুতিবদ্ধ বার্তা, লেখক এবং ট্যাগ সহ:
এটি জেএসফিডেলের সাথে পরীক্ষা করুন ।
এটি গিট গ্রাফার দ্বারা @ বিএসআরার মাধ্যমে তৈরি করুন।
টিকজেড এবং পিজিএফ শীর্ষে নির্মিত , gitdags
এটি একটি সামান্য লেটেক্স প্যাকেজ যা আপনাকে অনায়াসে ভেক্টর-গ্রাফিকগুলি কমিট গ্রাফ তৈরি করতে দেয় এবং আরও অনেক কিছু করে।
বিদ্যমান সংগ্রহস্থলের কমিট গ্রাফের স্বয়ংক্রিয় উত্পন্নকরণের উদ্দেশ্য নয়gitdags
; এটি তৈরি করা গ্রাফগুলি কেবলমাত্র শিক্ষামূলক উদ্দেশ্যে ।
ASCII কমিট গ্রাফের বিকল্প হিসাবে আমি গিট প্রশ্নের উত্তরগুলির জন্য আমার গ্রাফ তৈরি করতে প্রায়ই এটি ব্যবহার করি:
একটি সাধারণ পুনর্বাসনের প্রভাবগুলি প্রদর্শন করে এমন একটি গ্রাফের উদাহরণ এখানে:
\documentclass{article}
\usepackage{subcaption}
\usepackage{gitdags}
\begin{document}
\begin{figure}
\begin{subfigure}[b]{\textwidth}
\centering
\begin{tikzpicture}
% Commit DAG
\gitDAG[grow right sep = 2em]{
A -- B -- {
C,
D -- E,
}
};
% Tag reference
\gittag
[v0p1] % node name
{v0.1} % node text
{above=of A} % node placement
{A} % target
% Remote branch
\gitremotebranch
[origmaster] % node name
{origin/master} % node text
{above=of C} % node placement
{C} % target
% Branch
\gitbranch
{master} % node name and text
{above=of E} % node placement
{E} % target
% HEAD reference
\gitHEAD
{above=of master} % node placement
{master} % target
\end{tikzpicture}
\subcaption{Before\ldots}
\end{subfigure}
\begin{subfigure}[b]{\textwidth}
\centering
\begin{tikzpicture}
\gitDAG[grow right sep = 2em]{
A -- B -- {
C -- D' -- E',
{[nodes=unreachable] D -- E },
}
};
% Tag reference
\gittag
[v0p1] % node name
{v0.1} % node text
{above=of A} % node placement
{A} % target
% Remote branch
\gitremotebranch
[origmaster] % node name
{origin/master} % node text
{above=of C} % node placement
{C} % target
% Branch
\gitbranch
{master} % node name and text
{above=of E'} % node placement
{E'} % target
% HEAD reference
\gitHEAD
{above=of master} % node placement
{master} % target
\end{tikzpicture}
\subcaption{\ldots{} and after \texttt{git rebase origin/master}}
\end{subfigure}
\caption{Demonstrating a typical \texttt{rebase}}
\end{figure}
\end{document}
:)
latex input.tex
ডিভি তৈরি করতে ব্যবহার করতে পারি এবং শেষ পর্যন্ত ব্যবহার করতে পারি dvisvgm input.dvi
স্বচ্ছতার সাথে একটি এসভিজি উত্পাদন করতে। এসএনজি থেকে পিএনজির মতো রাস্টার ফর্ম্যাটে রূপান্তর করা এর সাথে যথেষ্ট সহজ convert -antialias -density 300 -background none input.svg output.png
। যাইহোক, এই চিত্রগুলি সম্পূর্ণ স্বচ্ছতার সাথে আশ্চর্যজনক দেখাচ্ছে । ফন্ট ইস্যুতে এখনও কাজ করা হচ্ছে ... i.imgur.com/1Xu2Ry5.png
gitdags
চলছে!
গিটগ হ'ল জিনোমের গিটক এবং গিটএক্সের ক্লোন (এটি কে-ডি-ই ইত্যাদিতে কাজ করে) যা একটি সুন্দর রঙিন গ্রাফ দেখায়।
এটি সক্রিয়ভাবে বিকশিত হয়েছে (2012 হিসাবে) এটি আপনাকে কমিটগুলি (গ্রাফ নোডগুলি) কালানুক্রমিকভাবে বা টপোলজিকভাবে বাছাই করতে দেয় এবং নির্বাচিত শাখায় নেতৃত্ব না দেয় এমন কমিটগুলি আড়াল করতে দেয়।
এটি বড় সংগ্রহস্থল এবং জটিল নির্ভরতা গ্রাফগুলির সাথে সূক্ষ্মভাবে কাজ করে।
নমুনার স্ক্রিনশটগুলি, লিনাক্স-গিট এবং লিনাক্স-2.6 সংগ্রহস্থলগুলি দেখায়:
উত্সট্রি সত্যিই ভাল। এটি একটি ভাল চেহারা এবং মাঝারি আকারের ইতিহাস এবং শাখা গ্রাফের মুদ্রণ করে না: (নীচে কেবল কয়েকটি শাখা দেখতে পরীক্ষামূলক গিট প্রকল্পে করা হয়)। উইন্ডোজ 7+ এবং ম্যাক ওএস এক্স 10.6+ সমর্থন করে।
আমি কেবল একটি সরঞ্জাম লিখেছি যা এইচটিএমএল / ক্যানভাস ব্যবহার করে চমত্কার গিট গ্রাফ তৈরি করতে পারে।
এবং একটি jQuery প্লাগইন সরবরাহ করুন যা এটি ব্যবহার করা সহজ করে।
[গিথুব] https://github.com/tclh123/commits- راف
পূর্বরূপ:
git-forest
আমি এক বছরেরও বেশি সময় ধরে ব্যবহার করছি একটি দুর্দান্ত পার্ল স্ক্রিপ্ট এবং আমি git log
সরাসরি কমান্ডটি আর খুব সহজেই ব্যবহার করি ।
এই স্ক্রিপ্টটি সম্পর্কে আমি কিছু পছন্দ করি:
--reverse
গ্রাফ আউটপুটের সাথে একত্রিত করতে পারেন , যা নিয়মিত git log
কমান্ড দিয়ে সম্ভব নয় ।git log
কমিটের তালিকাটি দখল করতে এটি অভ্যন্তরীণভাবে ব্যবহার করে, সুতরাং আপনি যে সমস্ত বিকল্পগুলি পাস করেছেন git log
সেগুলিও এই স্ক্রিপ্টে পাস করা যেতে পারে।git-forest
নিম্নরূপে আমার একটি নাম আছে :
[alias]
tree = "forest --pretty=format:\"%C(red)%h %C(magenta)(%ar) %C(blue)%an %C(reset)%s\" --style=15 --reverse"
টার্মিনালে আউটপুটটি দেখতে কেমন:
গিট লগগুলি সুন্দর এসভিজি গ্রাফগুলিতে রূপান্তর করার জন্য আমি একটি ওয়েব সরঞ্জাম লিখেছিলাম: বিট-বুস্টার - অফলাইন কমিট গ্রাফ অঙ্কন সরঞ্জাম
git log --pretty='%h|%p|%d'
সরাসরি সরঞ্জাম থেকে আউটপুট আপলোড করুন এবং তারপরে "ডাউনলোড গ্রাফ.এসভিজি" লিঙ্কটিতে ক্লিক করুন।
সরঞ্জামটি খাঁটি-ক্লায়েন্ট-দিক, এবং তাই আপনার গিট ডেটার কোনওটিই আমার সার্ভারের সাথে ভাগ করা যায় না। আপনি স্থানীয়ভাবে এইচটিএমএল + জেএস সংরক্ষণ করতে এবং "ফাইল: ///" ইউআরএল ব্যবহার করে এটি চালাতে পারেন। উবুন্টু 12.04-এ ক্রোম 48 এবং ফায়ারফক্স 43-এ যাচাই করা হয়েছে।
এটি এমন কোনও এইচটিএমএল জেনারেট করে যা কোনও পৃষ্ঠাতে সরাসরি পোস্ট করা যায় (ব্লগস্পট ব্লগিং ইঞ্জিন সহ!)। কিছু ব্লগ পোস্ট এখানে দেখুন:
http://bit-booster.blogspot.ca/
এখানে সরঞ্জাম দ্বারা উত্পাদিত একটি নমুনা এইচটিএমএল ফাইলের একটি স্ক্রিনশট রয়েছে:
http://bit-booster.com/ographic.html (সরঞ্জাম)
কোনও গ্রাভিজ স্ক্রিপ্টের উপর ভিত্তি করে আমি সম্পর্কিত প্রশ্নের উত্তর পেয়েছি , আমি একটি রুবি স্ক্রিপ্ট হ্যাক করেছি যা গিট সংগ্রহস্থলের সংক্ষিপ্ত চিত্র তৈরি করে। এটি সমস্ত রৈখিক ইতিহাসকে এলিজ করে এবং কেবল "আকর্ষণীয়" প্রতিশ্রুতি দেখায়, যেমন একাধিক বাবা-মা, একাধিক শিশু বা কোনও শাখা বা ট্যাগ দ্বারা নির্দেশিত। এটি jquery জন্য উত্পন্ন গ্রাফ একটি স্নিপেট এখানে :
গিট-বিগ-পিকচার এবং ব্রাঞ্চমাস্টার একই ধরণের সরঞ্জাম যা ট্যাগ, শাখা, মার্জ ইত্যাদি কীভাবে সম্পর্কিত তা কেবল প্রদর্শিত করে গ্রাফের কেবলমাত্র উচ্চ-স্তরের কাঠামো দেখানোর চেষ্টা করে।
এই প্রশ্নের আরও কিছু বিকল্প রয়েছে।
আমি তিনটি কাস্টম কমান্ড যোগ করা হয়েছে: git tree
, git stree
এবং git vtree
। আমি তাদের উপর যেতে হবে যে ক্রম।
[alias]
tree = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset) %C(auto)%d%C(reset)\n %C(black)[%cr]%C(reset) %x09%C(black)%an: %s %C(reset)'
সঙ্গে git stree
এবং git vtree
বিন্যাস সাহায্য করার জন্য আমি ব্যবহার করতে ব্যাশ।
[alias]
logx = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset)+%C(dim black)(%cr)%C(reset)+%C(auto)%d%C(reset)++\n+++ %C(bold black)%an%C(reset)%C(black): %s%C(reset)'
stree = !bash -c '" \
while IFS=+ read -r hash time branch message; do \
timelength=$(echo \"$time\" | sed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\"); \
timelength=$(echo \"16+${#time}-${#timelength}\" | bc); \
printf \"%${timelength}s %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"\"; \
done < <(git logx && echo);"'
[alias]
logx = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset)+%C(dim black)(%cr)%C(reset)+%C(auto)%d%C(reset)++\n+++ %C(bold black)%an%C(reset)%C(black): %s%C(reset)'
vtree = !bash -c '" \
while IFS=+ read -r hash time branch message; do \
timelength=$(echo \"$time\" | sed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\"); \
timelength=$(echo \"16+${#time}-${#timelength}\" | bc); \
printf \"%${timelength}s %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"$message\"; \
done < <(git logx && echo);"'
সম্পাদনা: এটি গিট সংস্করণ 1.9a এর সাথে কাজ করে। রঙের মান 'অটো' স্পষ্টতই এই প্রকাশে আত্মপ্রকাশ করছে। এটি একটি দুর্দান্ত সংযোজন কারণ শাখার নামগুলি আলাদা রঙ পাবে। উদাহরণস্বরূপ এটি স্থানীয় এবং দূরবর্তী শাখাগুলির মধ্যে পার্থক্য করা সহজ করে তোলে।
fatal: bad color value 'auto' for variable '--pretty format'
:(
sed: illegal option -- r
তারা দেখতে কেমন তার উপর নির্ভর করে। আমি গিটক্স ব্যবহার করি যা ছবিটির মতো করে তোলে:
আপনি git log --graph
24-ওয়ে অক্টোপাস মার্জটিতে বনাম গিটকে তুলনা করতে পারবেন (মূলত : http://clojure-log.n01se.net/date/2008-12-24.html থেকে ):
আরও বিস্তারিত পাঠ্য আউটপুট জন্য, চেষ্টা করুন:
git log --graph --date-order -C -M --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=short
আপনি alias HOME / .gitconfig এ উপন্যাস লিখতে পারেন
[alias]
graph = log --graph --date-order -C -M --pretty=format:\"<%h> %ad [%an] %Cgreen%d%Creset %s\" --all --date=short
git hist
- বর্তমান শাখার ইতিহাস দেখান
git hist --all
- সমস্ত শাখার গ্রাফ প্রদর্শন করুন (রিমোটগুলি সহ)
git hist master devel
- দুই বা ততোধিক শাখার মধ্যে সম্পর্ক দেখান
git hist --branches
- সমস্ত স্থানীয় শাখা দেখান
--topo-order
তারিখের পরিবর্তে টপোলজিক্যালি কমিটস বাছাই করতে যুক্ত করুন (এই উরফে ডিফল্ট)
--decorate
, তাই বিভিন্ন শাখার নামের জন্য পৃথক রঙেরgit config --global alias.hist "log --graph --date-order --date=short \
--pretty=format:'%C(auto)%h%d %C(reset)%s %C(bold blue)%ce %C(reset)%C(green)%cr (%cd)'"
gitg : একটি gtk- ভিত্তিক সংগ্রহস্থল প্রদর্শক, এটি নতুন তবে আকর্ষণীয় এবং দরকারী
http://git.gnome.org/browse/gitg
আমি বর্তমানে এটি ব্যবহার করছি
GitX
এবং খুব ভাল একটি। প্রস্তাব দিন
যদিও মাঝে মাঝে আমি গিটজি ব্যবহার করি তবে সর্বদা কমান্ড লাইনে ফিরে আসুন:
[alias]
#quick look at all repo
loggsa = log --color --date-order --graph --oneline --decorate --simplify-by-decoration --all
#quick look at active branch (or refs pointed)
loggs = log --color --date-order --graph --oneline --decorate --simplify-by-decoration
#extend look at all repo
logga = log --color --date-order --graph --oneline --decorate --all
#extend look at active branch
logg = log --color --date-order --graph --oneline --decorate
#Look with date
logda = log --color --date-order --date=local --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ad%Creset %C(auto)%d%Creset %s\" --all
logd = log --color --date-order --date=local --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ad%Creset %C(auto)%d%Creset %s\"
#Look with relative date
logdra = log --color --date-order --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ar%Creset %C(auto)%d%Creset %s\" --all
logdr = log --color --date-order --graph --format=\"%C(auto)%h%Creset %C(blue bold)%ar%Creset %C(auto)%d%Creset %s\"
loga = log --graph --color --decorate --all
# For repos without subject body commits (vim repo, git-svn clones)
logt = log --graph --color --format=\"%C(auto)%h %d %<|(100,trunc) %s\"
logta = log --graph --color --format=\"%C(auto)%h %d %<|(100,trunc) %s\" --all
logtsa = log --graph --color --format=\"%C(auto)%h %d %<|(100,trunc) %s\" --all --simplify-by-decoration
আপনি দেখতে পাচ্ছেন যে এর উপর ভিত্তি করে প্রায় একটি কীস্ট্রোক সংরক্ষণের এলিয়াস রয়েছে:
গিটের সাম্প্রতিক সংস্করণে দেখুন (1.8.5 এবং তার বেশি) আপনি প্লেসোল্ডার% d সাজাতে% C (অটো) থেকে উপকার পেতে পারেন
এখান থেকে আপনার যা যা প্রয়োজন তা ফিল্টার করার জন্য গিটারভিশনগুলি সম্পর্কে ভাল বোঝা দরকার (মাস্টার..ডিভেলফের মতো কিছু, যেখানে - সরল-সংহতকরণ দীর্ঘমেয়াদী শাখাগুলিতে সহায়তা করতে পারে)
কমান্ড লাইনের পিছনে শক্তি হ'ল আপনার প্রয়োজনের উপর ভিত্তি করে দ্রুত কনফিগার করা (কোনও রেপো বুঝতে কোনও অনন্য কী লগ কনফিগারেশন নয়, তাই কখনও কখনও --numstat, বা --raw, অথবা --name-status যুক্ত করা প্রয়োজন Here এখানে গিট লগ এবং এলিয়াসগুলি দ্রুত, শক্তিশালী এবং (সময়ের সাথে সাথে) আপনি অর্জন করতে পারেন এমন সর্বোত্তম গ্রাফ Even আরও বেশি, পেজারের মাধ্যমে ডিফল্টরূপে আউটপুট প্রদর্শিত হয় (কম বলুন) আপনি সর্বদা ফলাফলের অভ্যন্তরীণ ফলাফলগুলিতে দ্রুত অনুসন্ধান করতে পারেন convinced নিশ্চিত নন? আপনি সর্বদা ফলাফলকে বিশ্লেষণ করতে পারবেন গ্রিটগ্রাফের মতো প্রকল্পের সাথে
স্লিপের দুর্দান্ত উত্তরটি খুব সামান্য টুইট করে , আপনি কেবল একটি শাখায় লগ করতে তার উপনামগুলি ব্যবহার করতে পারেন:
[alias]
lgBranch1 = log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)— %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative
lgBranch2 = log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(bold white)— %an%C(reset)' --abbrev-commit
lg = !"git lg1"
ছেড়ে দিয়ে --all
আপনি এখন করতে পারেন
git lgBranch1 <branch name>
অথবা এমনকি
git lgBranch1 --all
আমি tig
https://github.com/jonas/tig পরামর্শ দিচ্ছি
, গিটের জন্য অনেক বেশি কমান্ড লাইন সরঞ্জাম।
আপনি ম্যাকোজে টাইগ ইনস্টল করতে হোমব্রিউ ব্যবহার করতে পারেন:
$ brew install tig
$ tig
গ্রাফের ইতিহাস দেখতে আমার এই git log
উপন্যাসটি রয়েছে ~/.gitconfig
:
[alias]
l = log --all --graph --pretty=format:'%C(auto)%h%C(auto)%d %s %C(dim white)(%aN, %ar)'
এটি স্থানে git l
রাখলে এরকম কিছু আউটপুট আসবে:
গিট 2.12 + তে আপনি log.graphColors
কনফিগারেশন বিকল্পটি ব্যবহার করে গ্রাফের লাইন রঙগুলিও অনুকূলিত করতে পারেন ।
লগগুলির ফর্ম্যাট হিসাবে, এটি লেখকের নাম (সম্মান ) এবং আপেক্ষিক লেখকের তারিখ--oneline
সংযোজনের সাথে সমান । নোট করুন যে সিনট্যাক্স, যা গিটকে কমিট হ্যাশ ইত্যাদির জন্য ডিফল্ট রঙগুলি ব্যবহার করতে বলে, তা গিট> = 1.8.3 এ সমর্থিত ।.mailmap
%C(auto)
git log --graph --oneline
oneliner হারিয়ে না গেছে তা নিশ্চিত করার জন্য
GitGraph
আপনার গিট সংগ্রহস্থলের প্রতিশ্রুতিবদ্ধ ইতিহাসের একটি পিএনজি বা এসভিজি উপস্থাপনা উত্পন্ন করে।
দিতা চেষ্টা করুন । এটি কোনও এএসসিআইআই চিত্রটি একটি চিত্রে রূপান্তর করতে পারে। যদিও গিট শাখাগুলি মাথায় রেখে ডিজাইন করা হয়নি, ফলাফলগুলি দেখে আমি মুগ্ধ হয়েছিল।
উত্স (txt ফাইল):
+--------+
| hotfix |
+---+----+
|
--*<---*<---*
^
|
\--*<---*
|
+---+----+
| master |
+--------+
COMMAND:
java -jar ditaa0_9.jar ascii-graph.txt
ফলাফল:
এটি ব্যাকগ্রাউন্ড রঙ, ড্যাশযুক্ত লাইন, বিভিন্ন আকার এবং আরও অনেক কিছু সমর্থন করে। উদাহরণ দেখুন ।
যদি আপনার সংগ্রহশালাটি গিটল্যাবে বসে থাকে তবে আপনি এটির গ্রাফ উপস্থাপনাটি আপনার ব্রাউজারে এসভিজি হিসাবে রেন্ডার হিসাবে ব্যবহার করতে পারেন।
আপনার সংগ্রহস্থলের গ্রাফ দৃশ্যে যান, যেমন https://gitlab.com/gitlab-org/gitter/webapp/network/develop
গ্রাফটি নীচে নীচে স্ক্রোল করুন (এটি অলস লোডগুলি কমিট করে!)
নতুন ফাইলে এসভিজি উপাদানটি অনুলিপি করতে আপনার ব্রাউজারের পরিদর্শক ব্যবহার করুন
এটি আপনার পছন্দসই একটি রেন্ডারারে খুলুন, উদাহরণস্বরূপ ইনস্কেপ
আমি কোনও প্রত্যক্ষ সরঞ্জাম সম্পর্কে জানি না, তবে সম্ভবত আপনি ডট ফর্ম্যাটে ডেটা রফতানি করতে এবং গ্রাফভিজের সাথে রেন্ডার করতে কোনও স্ক্রিপ্ট হ্যাক করতে পারেন।
io
আদেশগুলি সরল পার্ল `গিট লগ [...]` কমান্ডগুলি আমার পক্ষে কাজ করেছিল।
brew install perl dot
তবে cpan common::sense IO::all
আপনি পার্ল এবং তারপরে নির্ভরতা পেতে সক্ষম হন। তারপরে, কেবল একটি উপযুক্ত কমান্ডের মতো আউটপুটটি পাইপ করুন git-graphviz | dot -Tpng -o repo.png
। তবে আউটপুট গিট-বিগ-ছবির চেয়ে আলাদা নয় ।
রাফেল ওয়েব গ্রাফিক্স লাইব্রেরির একটি ডেমো হিসাবে একটি মজাদার গিট কমিট গ্রাফ রয়েছে ।
ডেমোটি স্থিতিশীল, তবে কোডটি নেওয়া এবং তাদের স্থিতিশীল ডেটাগুলির লাইভ সেটগুলির জন্য সোয়াপ আউট করা সহজ হওয়া উচিত - আমি মনে করি এটি জেসন ফর্ম্যাটে কেবল গিট কমিট ডেটা।
ডেমোটি এখানে রয়েছে: http://dmitrybaranovskiy.github.io/raphael/github/impact.html
শেলগুলির জন্য একটি সুন্দর এবং পরিষ্কার দেখাচ্ছে টেবিলের মতো গিট গ্রাফ আউটপুট
গ্রাফ গাছের পাশাপাশি হ্যাশ সহ us
বা একটি অতিরিক্ত কলামে
সম্পাদনা : আপনি ব্যাখ্যা না পড়ে এখনই শুরু করতে চান? বিভাগ EDIT 5 থেকে গিট ওরফে, স্ক্রিপ্ট বা ফাংশন কোড স্নিপেট ব্যবহার করুননীচে ।
এই প্রশ্নের সমস্ত উত্তরে শেলগুলির জন্য এখনও কোনও পরিষ্কার টেবিলের মতো দেখায়নি আউটপুট। সুসংবাদ থেকে নিকটতম এই উত্তর ছিলআমি যেখান থেকে শুরু করেছি সেই ।
আমার পদ্ধতির মূল বিষয়টি হ'ল ব্যবহারকারীর দেখানো গাছের অক্ষরগুলিই গণনা করা। তারপরে এগুলি শ্বেতস্পেসে ব্যক্তিগত দৈর্ঘ্যে পূরণ করুন।
গিট ছাড়া আপনার এই সরঞ্জামগুলির প্রয়োজন
সাধারণত কোনও লিনাক্স বিতরণ সহ বোর্ডে with
কোড স্নিপেট হয়
while IFS=+ read -r graph hash time branch message;do
# count needed amount of whitespaces and create them
whitespaces=$((9-$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)))
whitespaces=$(seq -s' ' $whitespaces|tr -d '[:digit:]')
# show hashes besides the tree ...
#graph_all="$graph_all$graph$(printf '%7s' "$hash")$whitespaces \n"
# ... or in an own column
graph_all="$graph_all$graph$whitespaces\n"
hash_all="$hash_all$(printf '%7s' "$hash") \n"
# format all other columns
time_all="$time_all$(printf '%12s' "$time") \n"
branch_all="$branch_all$(printf '%15s' "$branch")\n"
message_all="$message_all$message\n"
done < <(git log --all --graph --decorate=short --color --pretty=format:'+%C(bold 214)%<(7,trunc)%h%C(reset)+%C(dim white)%>(12,trunc)%cr%C(reset)+%C(214)%>(15,trunc)%d%C(reset)+%C(white)%s%C(reset)' && echo);
# paste the columns together and show the tablelike output
paste -d' ' <(echo -e "$time_all") <(echo -e "$branch_all") <(echo -e "$graph_all") <(echo -e "$hash_all") <(echo -e "$message_all")
আমরা ব্যবহার করি প্রয়োজনীয় হোয়াইটস্পেস গণনা করতে
sed -nl500 'l' <<< "$graph"
সমস্ত গাছ (প্রতি লাইনে 500 অবধি) পেতে কেবলমাত্র গাছের অক্ষরগুলি বেছে নেওয়ার চেয়ে: * | / \ _ এবং সাদা স্থানের সাথে
grep -Eo '\\\\|\||\/|\ |\*|_'
অবশেষে এগুলি গণনা করুন এবং ফলাফলটি আমাদের চয়ননের দৈর্ঘ্যের মান থেকে বাদ দিন, যা উদাহরণে 9।
আমরা যে পরিমাণ শ্বেত স্পেস ব্যবহার করি তা গণনা করতে
seq -s' ' $whitespaces
এবং এর সাথে অবস্থানের সংখ্যাগুলি কেটে দিন
tr -d '[:digit:]'
আমাদের গ্রাফ লাইনের শেষে এগুলি যুক্ত করার চেয়ে। এটাই!
গিটের ইতিমধ্যে বাক্য গঠন সহ আউটপুট স্পেসিফায়ারগুলির দৈর্ঘ্য বিন্যাস করার দুর্দান্ত বিকল্প রয়েছে'%><(amount_of_characters,truncate_option)'
যা বাম '>' বা ডান '<' পাশ থেকে শ্বেত স্পেস যুক্ত করে এবং 'ltrunc', মধ্যম 'mtrunc' বা শেষ থেকে অক্ষরগুলি কেটে ফেলতে পারে 'TRUNC'।
এটি গুরুত্বপূর্ণ যে প্রিন্টফ সেন্টিমিডির উপরেরগুলি সংশ্লিষ্ট গিট কলামের জন্য একই দৈর্ঘ্যের মানগুলি ব্যবহার করে।
আপনার নিজস্ব পরিষ্কার টেবিলের মতো দেখতে আপনার আউটপুটটিকে স্টাইল করতে মজা করুন।
অতিরিক্ত:
সঠিক দৈর্ঘ্যের মান পেতে আপনি নিম্নলিখিত স্নিপেট ব্যবহার করতে পারেন
while read -r graph;do
chars=$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)
[[ $chars -gt ${max_chars:-0} ]] && max_chars=$chars
done < <(git log --all --graph --pretty=format:' ')
এবং উপরে সঠিক দৈর্ঘ্যের মান হিসাবে $ সর্বাধিক_চার্স ব্যবহার করুন।
সম্পাদনা 1 : সবেমাত্র লক্ষ্য করেছেন যে আন্ডারলাইন চরিত্রটি গিট ট্রিতেও ব্যবহৃত হয় এবং সেই অনুযায়ী উপরের কোড স্নিপেটগুলি সম্পাদনা করে। যদি অন্য চরিত্রগুলি অনুপস্থিত থাকে তবে দয়া করে একটি মন্তব্য দিন।
সম্পাদনা 2 : আপনি যদি শাখা এবং ট্যাগ এন্ট্রিগুলির আশেপাশের বন্ধনীগুলি থেকে মুক্তি পেতে চান তবে EDIT 3 এর মতো গিট কমান্ডে "% d" এর পরিবর্তে "% D" ব্যবহার করুন।
সম্পাদনা 3 : সম্ভবত "অটো" রঙ বিকল্পটি আপনি শাখা এবং ট্যাগ এন্ট্রিগুলির জন্য সবচেয়ে বেশি পছন্দ করেন?
গিট কমান্ডের এই অংশটি পরিবর্তন করুন (রঙ 214 )
%C(214)%>(15,trunc)%D%C(reset)
থেকে স্বয়ংক্রিয়
%C(auto)%>(15,trunc)%D%C(reset)
সম্পাদনা 4 : বা আপনি কি সেই অংশটির জন্য নিজের রঙের মিশ্রণটি পছন্দ করতে চান, চোখের পলক দিয়ে একটি অভিনব আউটপুট?
শিরোনাম, শাখার নাম এবং ট্যাগগুলি প্রথমে স্টাইল করতে সক্ষম হওয়ার জন্য আমাদের EDIT 3 এর মতো আমাদের গিট কমান্ডে "অটো" রঙের বিকল্পটি প্রয়োজন।
তারপরে আমরা এই 3 টি লাইন যুক্ত করে আমাদের নিজস্ব রঙের মানগুলি প্রতিস্থাপন করতে পারি
# branch name styling
branch=${branch//1;32m/38;5;214m}
# head styling
branch=${branch//1;36m/3;5;1;38;5;196m}
# tag styling
branch=${branch//1;33m/1;38;5;222m}
লাইনের ঠিক আগে
branch_all="$branch_all$(printf '%15s' "$branch")\n"
আমাদের কোড স্নিপেটে। প্রতিস্থাপনের মানগুলি উপরের রঙগুলি উত্পাদন করে।
উদাহরণস্বরূপ মাথা জন্য প্রতিস্থাপন মান হয়
3;5;1;38;5;196
যেখানে 3; এর অর্থ ইটালিক, 5; ঝলকানোর জন্য এবং 1; 38; 5; 196 রঙের জন্য। আরও ইনফোগুলি এখানে শুরু করুন। দ্রষ্টব্য: এই আচরণটি আপনার পছন্দসই টার্মিনালের উপর নির্ভর করে এবং তাই ব্যবহারযোগ্য নাও হতে পারে।
তবে আপনি যে কোনও রঙের মান পছন্দ করতে পারেন।
গিট রঙের মান এবং এএনএসআই সমতুল্যদের পর্যালোচনা
আপনি এখানে গিট রঙ / স্টাইল বিকল্পের সাথে একটি তালিকা পাবেন ।
সঠিক রঙের জন্য আপনার কনসোলে আউটপুট প্রয়োজন হলে (উপরের ছবিটি স্ট্যাকওভারফ্লো দ্বারা ছোট করে দেওয়া হয়েছে) আপনি আউটপুটটি উত্পাদন করতে পারেন
for ((i=0;i<=255;i++));do
while IFS='+' read -r tree hash;do
echo -e "$(printf '%-10s' "(bold $i)") $hash $(sed -nl500 'l' <<< "$hash"|grep -Eom 1 '[0-9;]*[0-9]m'|tr -d 'm')"
done < <(git log --all --graph --decorate=short --color --pretty=format:'+%C(bold '$i')%h%C(reset)'|head -n 1)
done
আপনার গিট প্রকল্পের পথে যা আপনার গিট লগ আউটপুট থেকে প্রথম প্রতিশ্রুতি ব্যবহার করে।
সম্পাদনা 5 : সদস্য হিসাবে "আন্দ্রেস ডেক" উল্লেখ করেছেন, এই কোডটি কীভাবে ব্যবহার করবেন সে সম্পর্কে কিছু উপায় রয়েছে:
1) একটি নাম হিসাবে :
ওরফে প্যারামিটারগুলি গ্রহণ করে না তবে একটি ফাংশন পারে , সুতরাং আপনার .bashrc এ কেবল সংজ্ঞা দেয়
function git_tably () {
unset branch_all graph_all hash_all message_all time_all max_chars
### add here the same code as under "2) as a shell-script" ###
}
এবং ফাংশনটি git_tably (টেবিলের মতো থেকে প্রাপ্ত) সরাসরি আপনার গিট প্রকল্পের পাথের নীচে বা যেখানেই আপনি চান যেখানে আপনার গিট প্রকল্পের পথটি প্রথম প্যারামিটার হিসাবে কল করতে পারেন।
2) শেল লিপি হিসাবে :
আমি গিট প্রজেক্ট ডিরেক্টরিটি এটির প্রথম প্যারামিটার হিসাবে পাস করার অপশনটি দিয়ে বা এটি খালি থাকলে সাধারণ আচরণের মতো ওয়ার্কিং ডিরেক্টরিটি নিয়ে যাচ্ছি। এটি সম্পূর্ণ আমাদের আছে
# edit your color/style preferences here or use empty values for git auto style
tag_style="1;38;5;222"
head_style="1;3;5;1;38;5;196"
branch_style="38;5;214"
# determine the max character length of your git tree
while IFS=+ read -r graph;do
chars_count=$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)
[[ $chars_count -gt ${max_chars:-0} ]] && max_chars=$chars_count
done < <(cd "${1:-"$PWD"}" && git log --all --graph --pretty=format:' ')
# create the columns for your prefered tablelike git graph output
while IFS=+ read -r graph hash time branch message;do
# count needed amount of whitespaces and create them
whitespaces=$(($max_chars-$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)))
whitespaces=$(seq -s' ' $whitespaces|tr -d '[:digit:]')
# show hashes besides the tree ...
#graph_all="$graph_all$graph$(printf '%7s' "$hash")$whitespaces \n"
# ... or in an own column
graph_all="$graph_all$graph$whitespaces\n"
hash_all="$hash_all$(printf '%7s' "$hash") \n"
# format all other columns
time_all="$time_all$(printf '%12s' "$time") \n"
branch=${branch//1;32m/${branch_style:-1;32}m}
branch=${branch//1;36m/${head_style:-1;36}m}
branch=${branch//1;33m/${tag_style:-1;33}m}
branch_all="$branch_all$(printf '%15s' "$branch")\n"
message_all="$message_all$message\n"
done < <(cd "${1:-"$PWD"}" && git log --all --graph --decorate=short --color --pretty=format:'+%C(bold 214)%<(7,trunc)%h%C(reset)+%C(dim white)%>(12,trunc)%cr%C(reset)+%C(auto)%>(15,trunc)%D%C(reset)+%C(white)%s%C(reset)' && echo);
# paste the columns together and show the tablelike output
paste -d' ' <(echo -e "$time_all") <(echo -e "$branch_all") <(echo -e "$graph_all") <(echo -e "$hash_all") <(echo -e "$message_all")
3) গিটের ওরফে হিসাবে :
সম্ভবত সবচেয়ে আরামদায়ক উপায় হ'ল আপনার .gitconfig এ একটি গিট ওরফে যুক্ত করা
[color "decorate"]
HEAD = bold blink italic 196
branch = 214
tag = bold 222
[alias]
count-log = log --all --graph --pretty=format:' '
tably-log = log --all --graph --decorate=short --color --pretty=format:'+%C(bold 214)%<(7,trunc)%h%C(reset)+%C(dim white)%>(12,trunc)%cr%C(reset)+%C(auto)%>(15,trunc)%D%C(reset)+%C(white)%s%C(reset)'
tably = !bash -c '" \
while IFS=+ read -r graph;do \
chars_count=$(sed -nl1000 \"l\" <<< \"$graph\" | grep -Eo \"\\\\\\\\\\\\\\\\|\\||\\/|\\ |\\*|_\" | wc -l); \
[[ $chars_count -gt ${max_chars:-0} ]] && max_chars=$chars_count; \
done < <(git count-log && echo); \
while IFS=+ read -r graph hash time branch message;do \
chars=$(sed -nl1000 \"l\" <<< \"$graph\" | grep -Eo \"\\\\\\\\\\\\\\\\|\\||\\/|\\ |\\*|_\" | wc -l); \
whitespaces=$(($max_chars-$chars)); \
whitespaces=$(seq -s\" \" $whitespaces|tr -d \"[:digit:]\"); \
graph_all=\"$graph_all$graph$whitespaces\n\"; \
hash_all=\"$hash_all$(printf \"%7s\" \"$hash\") \n\"; \
time_all=\"$time_all$(printf \"%12s\" \"$time\") \n\"; \
branch_all=\"$branch_all$(printf \"%15s\" \"$branch\")\n\"; \
message_all=\"$message_all$message\n\"; \
done < <(git tably-log && echo); \
paste -d\" \" <(echo -e \"$time_all\") <(echo -e \"$branch_all\") <(echo -e \"$graph_all\") \
<(echo -e \"$hash_all\") <(echo -e \"$message_all\"); \
'"
যে git tably
কোনও প্রকল্পের পথে কল করার চেয়ে বেশি ।
গিটটি এতটাই শক্তিশালী যে আপনি উপরে দেখানো এবং এখান থেকে নেওয়া হিসাবে সরাসরি মাথা, ট্যাগ, ... পরিবর্তন করতে পারেন ।
আর একটি অভিনব বিকল্প হ'ল আপনি যে গাছগুলির সাথে সর্বাধিক পছন্দ করেন তা চয়ন করুন
[log]
graphColors = bold 160, blink 231 bold 239, bold 166, bold black 214, bold green, bold 24, cyan
এটি আপনাকে পাগল দেখাচ্ছে কিন্তু সর্বদা টেবিলের মতো গিট লগ আউটপুট দেয়
খুব ঝলক! কেবল কী সম্ভব তা প্রদর্শনের জন্য। খুব নির্দিষ্ট কয়েকটি রঙ রঙ পুনরাবৃত্তির দিকে নিয়ে যায়।
একটি সম্পূর্ণ .gitconfig রেফারেন্স মাত্র এক ক্লিক দূরে।
আবার: আপনার নিজস্ব পরিষ্কার টেবিলের মতো আপনার প্রয়োজন অনুসারে আউটপুট স্টাইল করতে মজা করুন।
al / .oh-my-zsh / plugins / git / git.plugin.zsh- এ কিছু এলিয়াস
gke='\gitk --all $(git log -g --pretty=%h)'
glg='git log --stat'
glgg='git log --graph'
glgga='git log --graph --decorate --all'
glgm='git log --graph --max-count=10'
glgp='git log --stat -p'
glo='git log --oneline --decorate'
glog='git log --oneline --decorate --graph'
gloga='git log --oneline --decorate --graph --all'
glol='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit'
glola='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit --all'
ওএসএক্স ব্যবহারকারীদের জন্য, আমি @ গসপেসের উদাহরণটি নিয়েছি এবং এটিকে জিএসডের জন্য (হোমব্রিউয়ের gnu-sed
মাধ্যমে ইনস্টল করা) সামান্য সংশোধন করেছি এবং রঙগুলি সমন্বয় করেছি (একটি কালো পটভূমির সাথে কাজ করতে, নিশ্চিত না যে কীভাবে আসল উদাহরণটি সম্ভবত এটির মতো উপস্থাপন করতে পারে) উদাহরণস্বরূপ যেহেতু এটি একটি কালো পটভূমি সহ টার্মিনালে কালো পাঠ্য নির্দিষ্ট করে)।
[alias]
# tree, vtree, stree support
logx = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset)+%C(bold black)(%cr)%C(reset)+%C(auto)%d%C(reset)++\n+++ %C(bold black)%an%C(reset)%C(bold black): %s%C(reset)'
tree = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset) %C(auto)%d%C(reset)\n %C(bold black)[%cr]%C(reset) %x09%C(bold black)%an: %s %C(reset)'
stree = !bash -c '" \
while IFS=+ read -r hash time branch message; do \
timelength=$(echo \"$time\" | gsed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\"); \
timelength=$(echo \"16+${#time}-${#timelength}\" | bc); \
printf \"%${timelength}s %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"\"; \
done < <(git logx && echo);"' | less -r
vtree = !bash -c '" \
while IFS=+ read -r hash time branch message; do \
timelength=$(echo \"$time\" | gsed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\"); \
timelength=$(echo \"16+${#time}-${#timelength}\" | bc); \
printf \"%${timelength}s %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"$message\"; \
done < <(git logx && echo);"' | less -r
ওএসএক্সের কীটি হ'ল প্রথমে gnu সেড ইনস্টল করা (যার -r বিকল্প রয়েছে)। হোমব্রিউয়ের সাথে খুব সহজেই সম্পন্ন হয় যা সিস্টেম-ইনস্টলড সেডকে ওভাররাইট করে না, বরং এটি "gsed" হিসাবে gnu সেড ইনস্টল করবে। আশা করি এটি @ স্লিপডি.টমসনকে সহায়তা করেছে যারা ওএসএক্স কাজ না করার বিষয়ে উপরে মন্তব্য করেছে ।