ලස්සන git ශාඛා ප්‍රස්තාර


1410

සමහර පොත් සහ ලිපි වල ඇත්ත වශයෙන්ම ලස්සන පෙනුමක් ඇති git ශාඛා හා කොමිස් ඇති බව මම දැක ඇත්තෙමි. Git ඉතිහාසයේ උසස් තත්ත්වයේ මුද්‍රණය කළ හැකි රූප සාදා ගන්නේ කෙසේද?


4
ග්‍රැෆිස් ප්‍රස්ථාරයක් නිර්මාණය කිරීම සඳහා මම පයිතන් පිටපතක් නිර්මාණය කර ඇත්තෙමි! බලන්න. github.com/chode/git-graph
ස්ටෙෆාන් බෙක්ටර්

4
ඔබට උසස් තත්ත්වයේ සහ මුද්‍රණය කළ හැකි නම්, මගේ මෙවලම ( bit-booster.com/graph.html ) “git log” SVG බවට පරිවර්තනය කරයි. වැඩි විස්තර සඳහා මගේ පිළිතුර බලන්න .
ජී. සිල්වි ඩේවිස්

2
ඔබ ඔබේම git ඉතිහාසය දෘශ්‍යමාන කිරීමට මෙවලමක් සොයන්නේද - නැතහොත් - ලස්සන “Git ශාඛා” ඇඳීමට ක්‍රමයක් ඇති ප්‍රස්ථාර මෙවලමක්ද?
යූරි ඒබ්‍රම්සන්


6
මෙම ප්‍රශ්නයට අදාළ නොවන නිසා මම අධ්‍යක්ෂණය කළ ඇසික්ලික්-ප්‍රස්තාරය මකා
දමමි

Answers:


1870

යාවත්කාලීන කිරීම: මෙම පිළිතුර ලැබිය යුතු ප්‍රමාණයට වඩා වැඩි අවධානයක් ලබා ගෙන ඇත. එය මුලින් පළ කරන ලද්දේ මා සිතන පරිදි ප්‍රස්ථාර ලස්සන පෙනුමක් ඇති අතර ඒවා ප්‍රකාශනයක් සඳහා ඉලස්ට්‍රේටරයේ ඇඳිය ​​හැකිය. ඊට වඩා හොඳ විසඳුමක් නොතිබුණි. නමුත් මෙම Q සඳහා ෆ්‍රැක්ස් , ජුබොබ්ස් හෝ හැරී ලී වැනි තවත් බොහෝ පිළිතුරු දැන් තිබේ ! කරුණාකර ඒවා ඉහළට ඔසවන්න !!

යාවත්කාලීනය 2: මම මෙම පිළිතුරෙහි වැඩි දියුණු කළ සංස්කරණයක් දෘශ්‍යකරණ ශාඛා ස්ථාන විද්‍යාවට git ප්‍රශ්නයට ඇතුළත් කර ඇත්තෙමි . එම අනුවාදයට ඇතුළත් වේ lg3 වන අතර, එය කර්තෘ සහ බැඳීම් තොරතුරු යන දෙකම පෙන්වයි, එබැවින් ඔබ එය සැබවින්ම පරීක්ෂා කර බැලිය යුතුය. Answer තිහාසික (සහ නියෝජිත, මම පිළිගනිමි) හේතු සඳහා මෙම පිළිතුර අත්හැර දැමුවද, එය මකා දැමීමට මා සැබවින්ම පෙළඹී ඇත.

මගේ 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 lg1

සහ git lg2මේ වගේ:
git lg2


35
ඔව්, මම කරනවා. සාමාන්‍ය සහ දීප්තිමත් / තද වර්ණ: කළු #202020/ #555555, රතු: #5d1a14/ #da4939, කොළ: #424e24/ #a5c261, කහ: #6f5028/ #ffc66d, නිල්: #263e4e/ #6d9cbe, මැජෙන්ටා: #3e1f50/ #a256c7, සයන්: #234e3f/ #62c1a1, සහ සුදු: #979797/ #ffffff.
ස්ලිප් ඩී. තොම්සන්

3
Ur ටර්බෝ: මගේ ටර්මිනල් යෙදුම (ටර්මිනල්.ඇප්) සඳහා පැතිකඩ සැකසුම් තුළ වර්ණ වෙනස් කළ හැකිය. ඔබ භාවිතා කරන පර්යන්ත යෙදුම ලබා දී ඇති ANSI වර්ණ සඳහා කුමන වර්ණ පෙන්විය යුතුද යන්න වෙනස් කිරීමට සහාය නොදක්වයි. එසේම, ඩෑෂ් (එම් ඩෑෂ්, නිවැරදිව) විකල්ප-මාරුව- [හයිපන්- us ණ යතුර] සමඟ නිර්මාණය කරන ලදි. දැනට පවතින සියලුම වේදිකා යුනිකෝඩ් සමඟ අත්වැල් බැඳගෙන ඇති බව මම වැරදියට උපකල්පනය කළෙමි.
ස්ලිප් ඩී. තොම්සන්

3
ඔබගේ --date=relativeසහ --abbrev-commitඔබ සුවිශේෂව භාවිතා නිසා භාවෙය් %crසහ %hදැමිනි.
අළු

6
වඩා හොඳ වර්ණ ලබා ගැනීම %C(auto)සඳහා මම නවීකරණයට ( %d) නැවත නම් වලට එකතු කරමි . Stackoverflow.com/questions/5889878/color-in-git-log/…
ජොසෙෆ් අයිස්ල්

2
නියම පිළිතුර. --Oneline --decorate withlg = 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
Craig P. Motlin

1240

මෙහි ඇති බොහෝ පිළිතුරු විශිෂ්ටයි, නමුත් අන්වර්ථයන් හෝ අමතර කිසිවක් සැකසීමකින් තොරව සරල පිළිතුරක් ලක්ෂ්‍යයට අවශ්‍ය අයට, මෙන්න එයයි:

git log --all --decorate --oneline --graph

සෑම කෙනෙකුම සෑම විටම කරන්නේ නැත git log, නමුත් ඔබට එය අවශ්‍ය වූ විට මතක තබා ගන්න:

" බල්ලෙක් " = git log - a ll - d ecorate - o neline - g raph

රූප විස්තරය මෙහි ඇතුළත් කරන්න


262
git config --global alias.adog "log --all --decorate --oneline --graph"
fracz

4
මම --allමෙතරම් කාලයක් තිස්සේ සොයමින් සිටියෙමි (T_T) ඔබට ස්තූතියි!
ෆෙලිපේ ජෙරාඩ්

2
--oneline හඳුන්වා දුන්නේ Git 1.6.3: github.com/git/git/blob/… --pretty = online 1.6.3 ට පෙර Git අනුවාද සමඟ ක්‍රියා කරනු ඇත
පැට් මයිරන්

13
SO පිළිබඳ හොඳම පිළිතුර. එය සැහැල්ලුවෙන් තබා ගැනීම ගැන ස්තූතියි.
ටොබියාස් ෆීල්

4
මම හිතන්නේ "--decorate" දැන් පෙරනිමියෙන් ඇතුළත් කර ඇත. නමුත් මට කෙසේ හෝ සංක්ෂිප්තව මතකයි!
ජොෂියා යෝඩර්

380

පා output මය ප්‍රතිදානය සඳහා ඔබට උත්සාහ කළ හැකිය:

git log --graph --abbrev-commit --decorate --date=relative --all

හෝ:

git log --graph --oneline --decorate --all

හෝ: මෙතන ඇති ඩැග් ප්රස්තාරය ඇඳීම සඳහා graphviz හෙවත්.

මම පෞද්ගලිකව භාවිතා කරමි gitx, gitk --allසහ gitnub.


'Git log' (short) සහ 'git log' (long) අතර හොඳින් බෙදී ඇති බැවින් මම මේ දෙකට කැමතියි, එබැවින් මට බොහෝ විට කෙටි ( oneline) අනුවාදය අමතන්න පුළුවන් , නමුත් මට වැඩි විස්තර අවශ්‍ය නම් දිගු අනුවාදය භාවිතා කරන්න සම්පූර්ණ බැඳීම් විස්තර. එවිට මට <leader>gl(කෙටි) සහ <leader>gll(දිගු) Vim හි ලස්සන සිතියම් දෙකක් තිබේ .
icc97

256

Gitgraph.js නිධියකින් තොරව ලස්සන git අතු ඇඳීමට ඉඩ දෙයි. ඔබේ ශාඛා වින්‍යාස කර ජාවාස්ක්‍රිප්ට් කේතයක් ලියා එය බ්‍රවුසරයේ විදහා දක්වන්න.

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);

Gitgraph.js සමඟ ජනනය කරන ලද නියැදි ප්‍රස්ථාරය

හෝ metroඅච්චුව සමඟ :

GitGraph.js මෙට්‍රෝ තේමාව

හෝ කැපවූ පණිවිඩ, කතුවරුන් සහ ටැග් සමඟ:

බැඳීම් පණිවිඩ සහිත GitGraph

JSFiddle සමඟ එය පරීක්ෂා කරන්න .

@Bsara විසින් Git Grapher සමඟ එය ජනනය කරන්න .


3
ඔව්, එය මුළුමනින්ම පුදුම සහගතයි! එය fiddle jsfiddle.net/guan1oz1 වෙත පළ කර ඇති බැවින් ඔබට එය වහාම පරීක්ෂා කළ හැකිය.
බර්කස්

14
ඊතල යොමු කළ යුත්තේ දරුවන්ට නොව දෙමාපියන්ට ය.
jub0bs

4
Ub ජුබොබ්ස්: හොඳ කරුණක්. Git තේරුම් ගැනීමට උත්සාහ කරන පුද්ගලයින්ට එය පොදු බාධකයකි: ඔවුන් සිතන්නේ උරුමය වෙනුවට කාලය අනුක්‍රමය ගැන ය. (ආසන්න වශයෙන්) git හි ඇති සෑම දෙයක්ම පෙර දෙයකට සාපේක්ෂ බව පැහැදිලි කිරීම අනෙක් සියලුම කොටස් නිසි තැනට වැටීමට උපකාරී වේ.
ස්ලිප් ඩී. තොම්සන්

6
ඊතල දිශාව සම්බන්ධයෙන්, ලියකියවිලි වලින්: * @ පරම් {බූලියන්} [options.reverseArrow = false] - සත්‍ය නම් ඊතල මුතුන් මිත්තන්ට යොමු කරන්න
ස්කොට්

2
FYI, මෙම ලිපිය දැක gitgraph.js සමඟ සෙල්ලම් කිරීමෙන් පසුව, මම මූලිකවම UI එකක් gitgraph.js වෙත යොමු කරන කුඩා මෙවලමක් නිර්මාණය කිරීමට තීරණය කළෙමි. එය අවසන් වී නැති අතර UI මට තවම අවශ්‍ය තැන නොවේ, නමුත් දායකත්වය සාදරයෙන් පිළිගනිමු! බලන්න: github.com/bsara/git-grapher
bsara

125

උඩ ඉදි TikZ සහ PGF , gitdagsඔබ තුවක්කුවෙන් දෛශීය රූප ප්රස්තාර සිදු නිෂ්පාදනය, සහ තවත් කිරීමට ඉඩ සලසා දෙන කුඩා LaTeX පැකේජය වේ.

දැනට පවතින ගබඩාව ගේ ස්වයංක්රීය පරම්පරාව ප්රස්තාරය වේ සිදු නොවන අරමුණ gitdags; එය නිපදවන ප්‍රස්ථාර අධ්‍යාපන අරමුණු සඳහා පමණි .

ASCII කැපකිරීමේ ප්‍රස්ථාරවලට විකල්පයක් ලෙස Git ප්‍රශ්න සඳහා මගේ පිළිතුරු සඳහා ප්‍රස්ථාර නිෂ්පාදනය කිරීමට මම බොහෝ විට එය භාවිතා කරමි:

සරල ප්‍රත්‍යාවර්තකයක බලපෑම පෙන්නුම් කරන එවැනි ප්‍රස්ථාරයක උදාහරණයක් මෙන්න:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

\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}

1
That ඒක නියමයි! එය භාවිතා කරන්නේ කෙසේද යන්න පිළිබඳ පේළි කිහිපයකට මම කැමතියි: ලාටෙක්ස් ස්ථාපනය කර නොමැති වින්ඩෝස් පරිශීලකයෙකු ගැන සලකා බලන්න. මුල සිටම ප්‍රස්ථාරයක් නිෂ්පාදනය කරන්නේ කෙසේද?
VonC

1
OnVonC මට විශ්වාස නැත, නමුත් ඔබට LaTeX ස්ථාපනය කිරීමට අවශ්‍ය නැතිනම් , ඔබේ ප්‍රස්ථාර ShareLatex සහ WriteLaTeX සහ කැමති දේ මත නිෂ්පාදනය කිරීමට ඔබට හැකි වනු ඇත . මම වැඩි කාලයක් ඇති විට ඒ ගැන සොයා බලා විකිය පුළුල් කරමි ... පැකේජය ප්‍රවර්ධනය කිරීමට නිදහස් වන්න:)
jub0bs

මේක නියමයි! මම යම් අවස්ථාවකදී නිබන්ධනයක් ලියමි, නමුත් දැනට මට සඳහන් කිරීමට අවශ්‍ය වූයේ ලේඛනගත latex input.texපංතියේ තනිවම (මම බෝග ලක්ෂණය භාවිතා කරමි), ඩීවී ජනනය කිරීම සඳහා භාවිතා කර ඔබේ ප්‍රස්ථාර පසු සැකසුම් කළ හැකි බවයි. dvisvgm input.dviවිනිවිදභාවයෙන් යුත් SVG ජනනය කිරීමට. SVG සිට PNG වැනි රාස්ටර් ආකෘතියකට පරිවර්තනය කිරීම පහසුය convert -antialias -density 300 -background none input.svg output.png. මාර්ගය වන විට, මෙම රූප පූර්ණ විනිවිදභාවයකින් යුතුව පුදුම සහගත ලෙස පෙනේ . අකුරු නිකුතුව සම්බන්ධයෙන් තවමත් ක්‍රියා කරයි ... i.imgur.com/1Xu2Ry5.png
vmrob

5
මෙම කාර්යය ලබා ගැනීමට මට යම් කාලයක් ගත විය, එබැවින් මම මුල සිටම උබුන්ටු 14.04 හි gitdag වැඩ
ChrisFreeman

1
Nd ඇන්ඩ්‍රියාපොල්සි ඒකාබද්ධ කිරීම සඳහා උදාහරණයක් සඳහා github.com/Jubobs/gitdags/issues/3 බලන්න . සඳහා ලියකියවිලි gitdagsපැමිණෙමින් තිබේ!
jub0bs

80

Gitg යනු GNOME සඳහා Gitk සහ GitX වල ක්ලෝනයකි (එය KDE ආදිය මතද ක්‍රියා කරයි) එය ලස්සන වර්ණ ප්‍රස්ථාරයක් පෙන්වයි.

එය සක්‍රියව සංවර්ධනය කර ඇත (2012 වන විට). එය ඔබට කාලානුක්‍රමිකව හෝ භූ විද්‍යාත්මකව කොමිස් (ප්‍රස්තාර නෝඩ්) වර්ග කිරීමට සහ තෝරාගත් ශාඛාවකට යොමු නොවන කොමිස් සඟවන්න.

එය විශාල ගබඩාවන් සහ සංකීර්ණ පරායත්ත ප්‍රස්ථාර සමඟ හොඳින් ක්‍රියා කරයි.

ලිනක්ස්-ගිට් සහ ලිනක්ස් -2.6 නිධි පෙන්වන නියැදි තිරපිටපත්:

linux-git

linux-2.6


60

HTML / කැන්වස් භාවිතයෙන් ලස්සන git commits ප්‍රස්ථාරයක් ජනනය කළ හැකි එක් මෙවලමක් මා ලිවීය.

භාවිතයට පහසු වන පරිදි jQuery ප්ලගිනයක් ලබා දෙන්න.

[github] https://github.com/tclh123/commits-graph

පෙරදසුන:

පෙරදසුන


හොඳයි, මෙම ප්‍රස්ථාරය අඳින්න ඔබ පෙර සැකසූ දත්ත ලබා ගන්නේ කෙසේද?
ඔල්ගා

3
L ඔල්ගා මම මගේ රෙපෝවට බැකෙන්ඩ් කේතය එක් කරමි. ඔබට එය ගිතුබ් මත නැරඹිය හැකිය .
හැරී ලී

60

Sourcetree ඇත්තෙන්ම හොඳ එකක්. එය හොඳ පෙනුමක් සහ මධ්‍යම ප්‍රමාණයේ ඉතිහාසයක් සහ ශාඛා ප්‍රස්ථාරයක් මුද්‍රණය කරයි: (පහත දැක්වෙන්නේ සමහර ශාඛා බැලීමට පර්යේෂණාත්මක Git ව්‍යාපෘතියක ය). වින්ඩෝස් 7+ සහ මැක් ඕඑස් එක්ස් 10.6+ සඳහා සහය දක්වයි.

Sourcetree හි නිදර්ශන ප්‍රතිදානය


එය යෙදුම් වෙළඳසැලේද ඇත, එබැවින් යාවත්කාලීන කිරීම ස්වයංක්‍රීයව ක්‍රියාත්මක විය යුතුය.
WebOrCode

මම සෝර්සෙට්‍රී ප්‍රස්ථාරයට කැමතියි, නමුත් මම විධාන රේඛාව භාවිතා කිරීමට කැමැත්තෙමි, සහ සෝර්සෙට්‍රීගේ පෙරනිමි සෑම විටම මගේ ගබඩාවලින් අවුල් කරයි.
SgtPooki

ඇට්ලේෂියන් ගිණුමක් නිර්මාණය කිරීමට (හෝ ඔබේ ගූගල් ගිණුම භාවිතා කර ඔබේ විද්‍යුත් තැපැල් හා පැතිකඩ තොරතුරු ලබා ගැනීමට ඇට්ලේෂියන්ට යම් අවසරයක් ලබා දෙන්න), සහ මැක් (ඕඑස් එක්ස් එල් කැපිටන් v 10.11.5) ස්ථාපනය කිරීමෙන් පසු එය 'ක්ලෝනින්' පියවරෙන් අසමත් වේ: "මාරාන්තික: මාර්ගය සඳහා වන gitmodules හි කිසිදු උප මොඩියුල සිතියම්ගත කිරීමක් හමු නොවීය." සහ අමුතු අනතුරු ඇඟවීමකි: "සැකිලි හමු නොවීය / usr / local / git / share / git-core / templates". ඉතා අපැහැදිලි පණිවිඩ, එතරම් විශිෂ්ට නොවේ.
දිමිත්‍රි ෂෙව්කොප්ලියාස්

3
අස්ථාපනය කිරීමෙන් පසු ඔබ කලින් ලබා දුන් ඔබගේ ගූගල් ආරක්ෂක වරප්‍රසාද පිළිවෙලට තැබීමට අමතක නොකරන්න: myaccount.google.com/security -> සම්බන්ධිත යෙදුම් සහ අඩවි -> ඔබගේ ගිණුමට සම්බන්ධ කර ඇති යෙදුම් -> යෙදුම් කළමනාකරණය කරන්න
දිමිත්‍රි ෂෙව්කොප්ලියාස්

56

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"

පර්යන්තයක ප්‍රතිදානය පෙනෙන්නේ මෙයයි:

රූප විස්තරය මෙහි ඇතුළත් කරන්න


3
id void.pointer - ඔව් එසේ නොවන්නේ git-forest යනු පර්ල් පිටපතක් වන අතර perl මොඩියුල පරායත්තතා ඇති බැවිනි. අවශ්‍ය පර්ල් මොඩියුල සමඟ සිග්වින් යටතේ ධාවනය කිරීම ඔබට මෙය වින්ඩෝස් හි ඇත්ත වශයෙන්ම අවශ්‍ය නම් ලබා ගත හැකි හොඳම විකල්පය විය හැකිය :)
ටක්ස්ඩූඩ්

1
ඇවැත්නි, එම repo හි විශාල මෙවලම් රාශියක් ඇත. ස්තූතියි!
එල්ඩෙල්ෂෙල්

1
වින් under යටතේ හොඳින් ක්‍රියා කරයි inMinGW (MSYS); CPANM ස්ථාපනය කරන්න; ඉන්පසු Git.pm; අන්වර්ථයක් සාදන්න, ඔබ යන්න සූදානම්.
සෙක්ටර්

50

Git ලොග් ලස්සන SVG ප්‍රස්තාර බවට පරිවර්තනය කිරීම සඳහා මම වෙබ් මෙවලමක් ලිව්වෙමි: Bit-Booster - Offline commit Graph Drawing Tool

සිට ප්‍රතිදානය උඩුගත කරන්න git log --pretty='%h|%p|%d' කෙලින්ම මෙවලමට කර "download graph.svg" සබැඳිය ක්ලික් කරන්න.

මෙවලම පිරිසිදු-සේවාදායක පාර්ශවයක් බැවින් ඔබගේ Git දත්ත කිසිවක් මගේ සේවාදායකය සමඟ බෙදා නොගනී. ඔබට HTML + JS දේශීයව සුරැකිය හැකි අතර එය "file: ///" URL භාවිතා කර ක්‍රියාත්මක කළ හැකිය. ක්‍රෝම් 48 සහ ෆයර්ෆොක්ස් 43 උබුන්ටු 12.04 හි සත්‍යාපනය කර ඇත.

එය ඕනෑම පිටුවකට කෙලින්ම පළ කළ හැකි HTML ජනනය කරයි (බ්ලොග්ස්පොට් බ්ලොග් එන්ජිම ඇතුළුව!). මෙහි ඇති සමහර බ්ලොග් සටහන් දෙස බලන්න:

http://bit-booster.blogspot.ca/

මෙවලම මඟින් ජනනය කරන ලද නියැදි HTML ගොනුවක තිර රුවක් මෙන්න:

http://bit-booster.com/graph.html (මෙවලම)


1
Ay පෙනෙන ආකාරයට වර්ණය එම ශාඛාවේ ඉන්ඩෙන්ටේෂන් මට්ටම පිළිබිඹු කරන අතර, එම ශාඛා වෙනත් තීරුවකට මාරුවිය හැකි අතර එම නිසා වර්ණය වෙනස් කළ හැකිය.
රව්න් ඇන්ඩර්සන්

44

ආශ්‍රිත ප්‍රශ්නයකට පිළිතුරක් ලෙස මා සොයාගත් ග්‍රැෆ්විස් ස්ක්‍රිප්ටයක් මත පදනම්ව , මම රූබි ස්ක්‍රිප්ට් එකක් හැක් කර ඇති අතර එය ගිට් ගබඩාවක සාරාංශ දර්ශනයක් නිර්මාණය කරයි. එය සියලු රේඛීය ඉතිහාසය මග හරින අතර "සිත්ගන්නාසුලු" ක්‍රියා පෙන්වයි, එනම් බහු දෙමව්පියන් සිටින දරුවන්, බහු දරුවන් හෝ ශාඛාවක් හෝ ටැගයක් මගින් පෙන්වා ඇති අය. Jquery සඳහා එය ජනනය කරන ප්‍රස්ථාරයේ කුඩා කොටසක් මෙන්න :

jquery නියැදිය

git-big-picture සහ BranchMaster යනු ප්‍රස්තාරයක ඉහළ මට්ටමේ ව්‍යුහය පමණක් පෙන්වීමට උත්සාහ කරන සමාන මෙවලම් වන අතර, ටැග්, ශාඛා, ඒකාබද්ධ කිරීම් ආදිය සම්බන්ධ වන්නේ කෙසේද යන්න පෙන්වීමෙන් පමණි.

මෙම ප්‍රශ්නයට තවත් විකල්ප කිහිපයක් තිබේ.


2
මම මෙය උත්සාහ කළෙමි, නමුත් අපගේ ගබඩාව සඳහා වූ නිමැවුම සමඟ නිවැරදිව වැඩ කිරීමට තිතක් ලබා ගත නොහැකි විය (ශාඛා 42 ක්, ටැග් 175 ක්, කොමිස් 42.000 ක්) ... ඉතා නරකයි ... මම සොයමින් සිටියේ එයයි!
සේවියර් නොඩෙට්

1
AvXavierNodet, ඔබේ repo එක පොදු නම් සහ / හෝ ඔබට දෝෂ පණිවිඩයක් තිබේ නම්, කරුණාකර GitHub හි ගැටලුවක් ගොනු කරන්න. ස්තූතියි!
මැට් මැක්හෙන්රි

39

මම අභිරුචි විධාන තුනක් එකතු කරලා තියනවා: 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මම ආකෘතිකරණයට උදව් කිරීමට bash භාවිතා කර ඇත.

[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);"'

git_stree


[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);"'

git_vtree


සංස්කරණය කරන්න: මෙය git අනුවාදය 1.9a සමඟ ක්‍රියා කරයි. 'ඔටෝ' යන වර්ණ අගය මෙම නිකුතුවේ දී ආරම්භ වේ. ශාඛා නම් වලට වෙනත් වර්ණයක් ලැබෙනු ඇති බැවින් එය කදිම එකතු කිරීමකි. මෙය දේශීය හා දුරස්ථ ශාඛා අතර වෙනස හඳුනා ගැනීම පහසු කරයි.


fatal: bad color value 'auto' for variable '--pretty format':(
ස්විචල්

Git හි පැරණි අනුවාදයක් බවට පත් විය. යූම් එහි යල්පැන ගිය Git හි යල්පැනගිය අනුවාදයක් ඇත. ප්‍රභවයෙන් සම්පාදනය කර ඇත (1.9) එය විශිෂ්ට ලෙස ක්‍රියා කරයි. ඒකත් ලස්සනයි! ස්තූතියි os ගොස්පෙස්!
ස්විචල්

ඕඑස් එක්ස් වෙත යන්න එපා:sed: illegal option -- r
ස්ලිප් ඩී. තොම්සන්

Li SlippD.Thompson: මම භාවිතා කරන්නේ ලිනක්ස් :). -R දීර් extended නිත්‍ය ප්‍රකාශන සඳහා ය. පෙනෙන විදිහට sed හි OSX අනුවාදයේ එය නොමැත. සමහර විට ඔබට sed යාවත්කාලීන කළ හැකිය. එසේ නොමැතිනම්, ඔබට දීර් re රීජෙක්ස් නොමැතිව sed විධානය නැවත ලිවිය හැකිය.
ශුභාරංචි

1
මැක් ඕඑස් එක්ස් සෙඩ් සඳහා, -r වෙනුවට -E භාවිතා කරන්න
බැක්ස්ටර් ලෝපෙස්

37

ඔවුන් මොන වගේද යන්න මත රඳා පවතී. මම මේ වගේ පින්තූර සාදන gitx භාවිතා කරමි :

සරල කුමන්ත්‍රණයක්

ඔබට git log --graphඑදිරිව gitk 24-මාර්ග බූවල්ලා ඒකාබද්ධ කිරීමක් සමඟ සැසඳිය හැකිය (මුලින් http://clojure-log.n01se.net/date/2008-12-24.html වෙතින් ):

24-මාර්ග git octopus ඒකාබද්ධ කිරීම.  මුල් URL එක <code> http://lwn.net/images/ns/kernel/gitk-octopus.png </code> විය


49
එය විහිලුවක් ... මම දිවුරුම් දුන්නා ඔබ "24-මාර්ග බූවල්ලා ඒකාබද්ධ කිරීම" යැයි කියනු මට ඇසිණි!
dty

4
කුතුහලය දනවන අයුරින්, කිසිවෙකු විසින් GitX හි (හෝ වෙනත් GUI git මෙවලමක) ඇඳීම් චර්යාවන් ස්වාධීනව ක්‍රියාත්මක කළ හැකි ආකාරයකට උපුටා ගැනීමට උත්සාහ කර තිබේද? මා වරදවා වටහා නොගත්තොත්, කොකෝවා දෛශික PDF ගොනුවකට ඇද ගැනීම දුෂ්කර නොවන අතර ඉහළ Q මුද්‍රණය කළ හැකි නිරූපණ සඳහා OP හි අවශ්‍යතාවය සපුරාලනු ඇත.
ස්ලිප් ඩී. තොම්සන්

එය ඔවුන්ගේ දේ නැවත සකස් කිරීමට පෙර S3 හරහා ස්කීච් හරහා විය. මම තවමත් එය ලබා ගත්තා නම් හොඳයි. :(
ඩස්ටින්

හුදෙක් gitk සිට අනුවාදය එය වෙනුවට lwn.net/images/ns/kernel/gitk-octopus.png සම්බන්ධ සිට, clojure-log.n01se.net/date/2008-12-24.html . Ust ඩස්ටින්: එය හරි යැයි සිතමි. එය එකම රූපයක් නොවේ, නමුත් එය සමාන අරමුණක් ඉටු කරයි. තිර රුව දෙස බලන විට, එය ලිනක්ස් කර්නලයේ කොටසක් සේ පෙනේ, එබැවින් ඔබට එම කැපවීම සොයාගෙන සමාන Gitx තිර රුවක් නැවත ලබා ගත හැකි යැයි මම සිතමි ....
naught101

34

වඩාත් සවිස්තරාත්මක පා output ප්‍රතිදානය සඳහා කරුණාකර උත්සාහ කරන්න:

git log --graph --date-order -C -M --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=short

ඔබට අන්වර්ථය $ HOME / .gitconfig හි ලිවිය හැකිය

[alias]
    graph = log --graph --date-order -C -M --pretty=format:\"<%h> %ad [%an] %Cgreen%d%Creset %s\" --all --date=short

30

මේ කාරණය සම්බන්ධයෙන් මා ගත් තීරණය මෙයයි:

තිර රුව:

තිර රුව

භාවිතය:

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)'"

28

gitg : gtk මත පදනම් වූ නිධිය නරඹන්නෙක් , එය නව නමුත් රසවත් හා ප්‍රයෝජනවත්
http://git.gnome.org/browse/gitg
මම දැනට එය භාවිතා කරමි


2
එය ක්ලෝනයක් GitXසහ එය ඉතා හොඳ එකක් බව පෙනේ. නිර්දේශ කරන්න
යාරෙක් ටී

28

සමහර විට මම gitg භාවිතා කළත් , සෑම විටම විධාන රේඛාවට පැමිණෙන්න:

[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 

ඔබට පෙනෙන පරිදි යතුරු ආ roke ාත සුරැකීමේ අන්වර්ථයකි, එය මත පදනම්ව:

  • --color: පැහැදිලි පෙනුම
  • --graph: දෙමාපියන් දෘශ්‍යමාන කරන්න
  • --date-order: repo දෙස වඩාත්ම තේරුම්ගත හැකි පෙනුම
  • --decorate: කවුද කවුද
  • --oneline: කැපවීමක් ගැන ඔබ දැනගත යුතු බොහෝ වාර ගණනක්
  • - සරල කිරීම-සැරසිලි: පළමු පෙනුම සඳහා මූලික (ටැග්, අදාළ ඒකාබද්ධ කිරීම්, ශාඛා)
  • --all: මෙම විකල්පය සමඟ සහ නැතිව සියලුම අන්වර්ථයන් සමඟ යතුරු එබීම
  • --date = සාපේක්ෂ (% ar): repo හි ක්‍රියාකාරිත්වය තේරුම් ගන්න (සමහර විට ශාඛාවක් ස්වාමියා අසල සිදු වන්නේ ස්වල්පයක් නමුත් මාස කිහිපයකට පෙර ඔහුගෙන්)

Git හි නවතම අනුවාදයෙන් බලන්න (1.8.5 සහ ඊට වැඩි) ඔබට% C (ස්වයංක්‍රීය) වලින් වාසි ලබා ගත හැකිය.

මෙතැන් සිට ඔබට අවශ්‍ය වන්නේ gitrevisions පිළිබඳ හොඳ අවබෝධයක් පමණි ඕනෑම දෙයක් පෙරීමට (මාස්ටර්..ඩෙලොප් වැනි දෙයක්, එහිදී - සරල කිරීම-ඒකාබද්ධ කිරීම දිගු කාලීන ශාඛා සඳහා උපකාරී වේ)

විධාන රේඛාව පිටුපස ඇති බලය ඔබේ අවශ්‍යතා මත පදනම්ව ඉක්මණින් වින්‍යාස කිරීමකි (repo යනු අද්විතීය යතුරු ලොග් වින්‍යාසයක් නොවන බව තේරුම් ගන්න, එබැවින් --numstat, හෝ --raw, හෝ --name-status එකතු කිරීම සමහර විට අවශ්‍ය වේ. මෙහි git log අන්වර්ථ නාමයන් වේගවත්, බලවත් වන අතර (කාලයත් සමඟ) ඔබට ළඟා කර ගත හැකි ලස්සනම ප්‍රස්ථාරය වේ. ඊටත් වඩා, පෙරනිමියෙන් පේජරයක් මඟින් පෙන්වන ප්‍රතිදානය සමඟ (අඩුවෙන් කියන්න) ඔබට සෑම විටම ඉක්මණින් ප්‍රති results ල ඇතුළත සෙවිය හැකිය. ඒත්තු ගැන්වී නැතිද? gitgraph වැනි ව්‍යාපෘති සමඟ


ඉතා කදිමයි. මේවා මගේ වින්‍යාසයට එක් කිරීම. නමුත් දුරස්ථ හෝ ප්‍රාදේශීය ශාඛා නාම සඳහා විවිධ වර්ණ ලබා දෙන% Cred% d% Creset% C (auto)% d% Creset ලෙස වෙනස් කිරීමට මම නිර්දේශ කරමි
MarkB42

17

ස්ලිප්ගේ පුදුමාකාර පිළිතුර ඉතා සුළු වශයෙන් වෙනස් කරමින් , ඔබට ඔහුගේ අන්වර්ථ නාමයන් එක් ශාඛාවක් පමණක් ලොග් කිරීමට භාවිතා කළ හැකිය:

[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

15

මම යෝජනා කරන්නේ tig https://github.com/jonas/tig , git සඳහා වඩා හොඳ විධාන රේඛා මෙවලමක්.

මැකෝස් මත ටයිග් ස්ථාපනය කිරීම සඳහා ඔබට හෝම්බ rew භාවිතා කළ හැකිය:

$ brew install tig
$ tig

රූප විස්තරය මෙහි ඇතුළත් කරන්න


14

ප්‍රස්ථාර ඉතිහාසය බැලීමට මට මෙම git logඅන්වර්ථය ඇත ~/.gitconfig:

[alias]
l = log --all --graph --pretty=format:'%C(auto)%h%C(auto)%d %s %C(dim white)(%aN, %ar)'

මෙය ක්‍රියාත්මක වීමත් සමඟ, මෙවැනි git lදෙයක් ප්‍රතිදානය කරයි:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

Git 2.12 + හි ඔබට log.graphColorsවින්‍යාස කිරීමේ විකල්පය භාවිතා කර ප්‍රස්ථාරයේ රේඛා වර්ණ අභිරුචිකරණය කළ හැකිය.

--onelineල logs ු-සටහන් ආකෘතිය සම්බන්ධයෙන් ගත් කල, එය කර්තෘගේ නම (ගරු කිරීම .mailmap) සහ සාපේක්ෂ කර්තෘ දිනය එකතු කිරීම හා සමාන වේ . බව සටහන %C(auto)ආදිය සිදු හැෂ් සඳහා සුපුරුදු වර්ණ භාවිතා කිරීමට Git කියයි වන කාරක රීති, Git> = සහය දක්වයි 1.8.3 .


1
git log --graph --oneline ඔනෙලයිනර් නැති වී නැති බවට වග බලා ගැනීම සඳහා
tsenapathy

12

ඔබ උත්සාහ කළේ gitkහෝ gitk --all? කෙසේ වෙතත් එයට ශ්‍රිතයක් ලෙස මුද්‍රණ / සුරැකීමේ img නොමැත.


3
gitk කාර්යක්ෂම නමුත් ඉතා ලස්සන නොවේ.
ජොහාන්

එය ගොඩනංවා තිබීම මට ප්‍රසන්න හා කරදරයකින් තොරය. විශේෂයෙන් --allඔබට සියලුම ශාඛා පෙන්වයි.
BcK

12

GitGraph

ඔබගේ Git ගබඩාවේ බැඳීම් ඉතිහාසයේ PNG හෝ SVG නිරූපණයක් ජනනය කරයි.

https://code.google.com/p/gitgraph


Nd ඇන්ඩිහෙයිඩන්: එය එසේ නොවේ. සම්පූර්ණයෙන්ම වෙනස්. Dia
rzymek

12
git -c core.pager='less -SRF' log --oneline --graph --decorate

මෙහි ඇති බොහෝ පිළිතුරු වලට සමාන මෙය මගේ පර්යන්ත විචලනයයි. lessවචන එතීම වැළැක්වීම සඳහා සම්මත කළ කොඩි සකස් කිරීමට මම කැමතියි .

උදාහරණ ප්‍රතිදානය

විධානය ටිකක් අවුල් සහගත බැවින් ඉක්මන් ප්‍රවේශය සඳහා මම මෙය අන්වර්ථයකට සකසා ඇත.


12

ෂෙල් වෙඩි සඳහා ලස්සන හා පිරිසිදු පෙනුමක් ඇති මේස වැනි git ප්‍රස්ථාර ප්‍රතිදානය

ප්‍රස්තාර ගසට අමතරව සාමාන්‍යයෙන් හැෂ් සමඟ

ප්‍රස්තාර ගසට අමතරව සාමාන්‍යයෙන් හැෂ් සමඟ

හෝ අතිරේක තීරුවක

හෝ අතිරේක තීරුවක

සංස්කරණය කරන්න : පැහැදිලි කිරීම් කියවීමකින් තොරව වහාම ආරම්භ කිරීමට ඔබට අවශ්‍යද? පහත EDIT 5 වන කොටසේ සිට git අන්වර්ථය, ස්ක්‍රිප්ට් හෝ ක්‍රියාකාරී කේත ස්නිපෙට් භාවිතා කරන්න හෝ EDIT 6 සමඟ වඩාත් සුවපහසු ක්‍රමයක් භාවිතා කරන්න .

මෙම ප්‍රශ්නයට ඇති සියලුම පිළිතුරු වලින් මේ දක්වා ෂෙල් වෙඩි සඳහා පිරිසිදු වගු පෙනුමක් ලබා දී නැත. ආසන්නතම දෙය නම් මා ආරම්භ කළ ශුභාරංචි වලින් මෙම පිළිතුරයි .

මගේ ප්‍රවේශයේ මූලික කරුණ නම් පරිශීලකයාට පෙන්වන ගස් අක්ෂර පමණක් ගණන් කිරීමයි. ඉන්පසු ඒවා සුදු පැහැති අවකාශයන්ගෙන් පුද්ගලික දිගකට පුරවන්න.

Git හැරුණු විට ඔබට මෙම මෙවලම් අවශ්‍ය වේ

  • grep
  • පේස්ට් කරන්න
  • printf
  • sed
  • seq
  • tr
  • WC

බොහෝ විට ඕනෑම ලිනක්ස් බෙදාහැරීමක් සහිත ය.

කේත ස්නිපටය වේ

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 -nl1000 'l' <<< "$graph"

ගස් අක්ෂර පමණක් තෝරා ගැනීමට වඩා සියලු අක්ෂර ලබා ගැනීමට (පේළියකට 1000 දක්වා): * | / \ _ සහ හිස් අවකාශයන්

  grep -Eo '\\\\|\||\/|\ |\*|_'

අවසාන වශයෙන් ඒවා ගණන් කර අපගේ තෝරාගත් දිග අගයෙන් ප්‍රති result ලය ආදේශ කරන්න, එය උදාහරණයේ 9 කි.

අප භාවිතා කරන හිස් අවකාශයන් ගණනය කිරීම

  seq -s' ' $whitespaces

සහ ස්ථාන අංක සමඟ කපා දමන්න

  tr -d '[:digit:]'

ඒවා අපේ ප්‍රස්ථාර රේඛාවේ අවසානයට එකතු කරනවාට වඩා. ඒක තමයි!

නිමැවුම් පිරිවිතරයන්ගේ දිග දැනටමත් සින්ටැක්ස් සමඟ සංයුති කිරීමට Git ට හොඳ විකල්පයක් ඇත'%><(amount_of_characters,truncate_option)' ඛණ්ඩය , එමඟින් වම් '>' හෝ දකුණ '<' පැත්තෙන් සුදු පැහැති අවකාශයන් එක් කරන අතර ආරම්භයේ සිට 'ltrunc', මැද 'mtrunc' හෝ අවසානයෙන් අක්ෂර කපා දැමිය හැකිය. 'ටන්ක'.

එය වැදගත් අනුරූප GIT තීරුව සඳහා එම දිග වටිනාකම් එහිදී එම cmd ගේ ඉහත භාවිතය.

ඔබේ අවශ්‍යතාවයට සරිලන පරිදි ඔබේම මේස පෙනුමක් ඇති මෝස්තරයක් සැකසීමට විනෝද වන්න.

අමතර:

නිවැරදි දිග අගය ලබා ගැනීම සඳහා ඔබට පහත දැක්වෙන ස්නිපටය භාවිතා කළ හැකිය

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:' ')

ඉහත නිවැරදි දිග අගය ලෙස $ max_chars භාවිතා කරන්න.

සංස්කරණය 1 : යටි ගසෙහි යටි ඉරි ඇඳීම ද භාවිතා වන බව දැක ඒ අනුව ඉහත කේත ස්නිපෙට් සංස්කරණය කරන්න. වෙනත් අක්ෂර නොමැති නම්, කරුණාකර අදහස් දක්වන්න.

සංස්කරණය 2 : ඔබට ශාඛා හා ටැග් ඇතුළත් කිරීම් වටා ඇති වරහන් ඉවත් කිරීමට අවශ්‍ය නම්, EDIT 3 හි මෙන්, git විධානයෙහි "% d" වෙනුවට "% D" භාවිතා කරන්න.

සංස්කරණය 3 : සමහර විට ශාඛා හා ටැග් ඇතුළත් කිරීම් සඳහා ඔබ වඩාත් කැමති “ස්වයංක්‍රීය” වර්ණ විකල්පය විය හැකිද?

git වරහන් රහිත ස්වයංක්‍රීය වර්ණ හිස සහ ටැග් වගු වැනි ෂෙල් ප්‍රතිදානය

Git විධානයේ මෙම කොටස වෙනස් කරන්න (වර්ණය 214 )

%C(214)%>(15,trunc)%D%C(reset)

කිරීමට මෝටර් රථ

%C(auto)%>(15,trunc)%D%C(reset)

4 වන සංස්කරණය කරන්න : නැතහොත් එම කොටස සඳහා ඔබේම වර්ණ මිශ්‍රණයට ඔබ කැමතිද?

git tree විසිතුරු මෝස්තර සහිත මේසයට සමාන ප්‍රතිදානය

හිස, ශාඛා නම් සහ ටැග් ශෛලිය හැඩගස්වා ගැනීමට පළමුව EDIT 3 හි මෙන් අපගේ git විධානයෙහි “ස්වයංක්‍රීය” වර්ණ විකල්පය අවශ්‍ය වේ.

මෙම පේළි 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 වර්ණය සඳහා.වැඩි තොරතුරු සඳහා මෙතැනින් ආරම්භ කරන්න. සටහන: මෙම හැසිරීම ඔබගේ ප්‍රියතම පර්යන්තය මත රඳා පවතින අතර එබැවින් එය භාවිතා කළ නොහැක.

නමුත් ඔබට කැමති ඕනෑම වර්ණ අගයක් තෝරා ගත හැකිය.

Git වර්ණ අගයන් සහ ANSI සමානකම් පිළිබඳ දළ විශ්ලේෂණය

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඔබ සමඟ ලැයිස්තුවක් සොයා ගනී Git color / style විකල්පයක් .

නිවැරදි වර්ණ සඳහා ඔබේ කොන්සෝලයේ ප්‍රතිදානය ඔබට අවශ්‍ය නම් (ඉහත පින්තූරය ස්ටැකෝවර් ප්‍රවාහයෙන් පරිමාණය කර ඇත) ඔබට ප්‍රතිදානය සමඟ නිෂ්පාදනය කළ හැකිය

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

ඔබගේ git ලොග් ප්‍රතිදානයෙන් පළමු කැපවීම භාවිතා කරන ඔබගේ git ව්‍යාපෘති මාවතේ.

සංස්කරණය 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 ව්‍යාපෘති මාවත යටතේ හෝ ඔබට අවශ්‍ය ඕනෑම තැනක සිට git_table (වගුව වැනි ව්‍යුත්පන්නය) ශ්‍රිතය පළමු පරාමිතිය ලෙස අමතන්න.

2) ෂෙල්-ස්ක්‍රිප්ට් ලෙස :

Git ව්‍යාපෘති නාමාවලියක් එහි පළමු පරාමිතිය ලෙස සම්මත කිරීමට හෝ හිස් නම්, සාමාන්‍ය හැසිරීම මෙන් වැඩ කරන නාමාවලිය ගන්න. එය සම්පූර්ණයෙන්ම අප සතුව ඇත

# 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) git අන්වර්ථයක් ලෙස :

සමහර විට වඩාත් සුවපහසු ක්‍රමය වන්නේ ඔබේ .gitconfig හි git අන්වර්ථයක් එක් කිරීමයි

[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ඕනෑම ව්‍යාපෘති මාර්ගයක් යටතේ ඇමතීමට වඩා .

Git කොතරම් බලවත්ද යත් ඔබට හිස, ටැග්, ... සෘජුවම ඉහත පෙන්වා ඇති පරිදි වෙනස් කර මෙතැනින් ගෙන යා හැකිය .

තවත් විසිතුරු විකල්පයක් නම් ඔබ වඩාත්ම කැමති ගස් වර්ණ තෝරා ගැනීමයි

[log]
    graphColors = bold 160, blink 231 bold 239, bold 166, bold black 214, bold green, bold 24, cyan

එය ඔබට පිස්සු පෙනුමක් ලබා දෙන නමුත් සෑම විටම වගු වැනි git ලොග් ප්‍රතිදානයන් ලබා දෙයි

fanciest_git_tree_tablelike_image

ඕනෑවට වඩා දිලිසෙනවා! හැකි දේ නිරූපණය කිරීමට. නිශ්චිත වර්ණ ඉතා ස්වල්පයක් වර්ණ පුනරාවර්තනයට මග පාදයි.

සම්පූර්ණ .gitconfig යොමු කිරීමක් එක් ක්ලික් කිරීමක් පමණි.

6 සංස්කරණය කරන්න : ඔබගේ ධනාත්මක නැගිටීම් නිසා මම ස්නිපටය වැඩි දියුණු කළෙමි. දැන් ඔබට ඕනෑම git log විධානයකින් එය පෝෂණය කළ හැකි අතර කේතය තවදුරටත් අනුවර්තනය කළ යුතු නොවේ. උත්සහ කරන්න!

එය ක්‍රියාත්මක වන්නේ කෙසේද?

  • ඔබගේ .gitconfig හි සෑම විටම ඔබගේ git log විධාන නිර්වචනය කරන්න
  • git ප්‍රස්තාරය පෙන්වන ධනාත්මක ගස් තීරු අංකයක් (විකල්ප) අර්ථ දක්වන්න

ඉන්පසු අමතන්න

git tably YourLogAlias

හෝ

git tably YourLogAlias TreeColNumber

එහිදී TreeColNumber ඉහළින් සෑම විටම අර්ථ දක්වා ඇති අගයක් නැවත ලියයි.

සීමා කිරීම:

  • ඔබගේ ලොග් විධානයෙහි ඇති සෑම ස්ථානගත කිරීමේ ස්ථානයකටම පෙර
    %><(<N>[,ltrunc|mtrunc|trunc]), එක් ටන්ක විකල්පයක් සමඟ ඔබ භාවිතා කළ යුතුය

    (සින්ටැක්ස් පැහැදිලි කිරීම් සඳහා https://git-scm.com/docs/pretty-formats බලන්න ),

    කෙසේ වෙතත් ඕනෑම නව රේඛාවක අවසාන කැපවීමේ ස්ථානය එය නොමැතිව භාවිතා කළ හැකිය

  • අමතර අක්ෂර වැනි විසිතුරු කිරීම සඳහා අවශ්ය නම් (committer: , <හා >)දී

    ...%C(dim white)(committer: %cn% <%ce>)%C(reset)...

    වගු වැනි නිමැවුමක් ලබා ගැනීම සඳහා ඒවා කැපවූ ස්ථාන දරන්නාට පෙර සහ පසුව කෙලින්ම ලිවිය යුතුය

    ...%C(dim white)%<(25,trunc)(committer: %cn%<(25,trunc) <%ce>)%C(reset)...

  • නම්, --pretty=format:විකල්පය සමීප එය සමග අන්තිම එක නොවේ %C(reset)බොහොමයක් ලෙස

  • ඔබ හිස් නොවන නව රේඛා භාවිතා නොකරන තාක් කල් ඔබට සෑම තීරුවකම git ප්‍රස්ථාරය තැබිය හැකිය %n...

  • ඔබට අද්විතීය නොවන්නේ නම් ගැටළු ඇති කළ හැකි තීරු පරිසීමකය තෝරාගෙන භාවිතා කළ යුතුය

  • නිශ්චිත ලොග් අන්වර්ථයක් සඳහා ඔබ අර්ථ දක්වා ඇති ගස් තීරු අංකයේ නම විය යුතුය YourLogAlias-col

  • වර්ණ ප්‍රතිදානය සඳහා --color විකල්පය භාවිතා කරන්න

  • සාමාන්‍ය git ලොග් ප්‍රතිදානය හා සසඳන විට මෙය මන්දගාමී නමුත් හොඳයි

දැන් ඔබේ .gitconfig සඳහා වැඩි දියුණු කරන ලද ස්නිපටය

[color "decorate"]
    HEAD = bold blink italic 196
    branch = 214
    tag = bold 222
    
[alias]

    # delimiter used in every mylog alias as column seperator
    delim     = ^
    # short overview about the last hashes without graph
    mylog     = log --all --decorate=short --color --pretty=format:'^%C(dim white)%>(12,trunc)%cr%C(reset)^%C(bold 214)%<(7,trunc)%h%C(reset)' -5
    # log with hashes besides graph tree
    mylog2    = 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)%<(80,trunc)%s%C(reset)'
    mylog2-col= 3
    # log with hashes in an own column and more time data
    mylog3    = log --all --graph --decorate=short --color --pretty=format:'^%C(dim white)%>(12,trunc)%cr%C(reset)^%C(cyan)%<(10,trunc)%cs%C(reset)^%C(bold 214)%<(7,trunc)%h%C(reset)^%C(auto)%<(15,trunc)%D%C(reset)^%C(white)%s%C(reset)'
    mylog3-col= 4

    tably = !bash -c '"                                                                                                              \
              declare -A col_length;                                                                                                 \
              delim=$(git config alias.delim);                                                                                       \
              git_log_cmd=$(git config alias.$1);                                                                                    \
              git_tre_col=${2:-$(git config alias.$1-col)};                                                                          \
                                                                                                                                     \
              i=0;                                                                                                                   \
              n=0;                                                                                                                   \
              while IFS= read -r line; do                                                                                            \
                ((n++));                                                                                                             \
                while read -d\"$delim\" -r col_info;do                                                                               \
                  ((i++));                                                                                                           \
                  [[ -z \"$col_info\" ]] && col_length[\"$n:$i\"]=${col_length[\"${last[$i]:-1}:$i\"]} && ((i--)) && continue;       \
                  [[ $i -gt ${i_max:-0} ]] && i_max=$i;                                                                              \
                  col_length[\"$n:$i\"]=$(grep -Eo \"\\([0-9]*,[lm]*trunc\\)\" <<< \"$col_info\" | grep -Eo \"[0-9]*\" | head -n 1); \
                  [[ -n \"${col_length[\"$n:$i\"]}\" ]] && last[$i]=$n;                                                              \
                  chars_extra=$(grep -Eo \"\\trunc\\).*\" <<< \"$col_info\");                                                        \
                  chars_extra=${chars_extra#trunc)};                                                                                 \
                  chars_begin=${chars_extra%%\\%*};                                                                                  \
                  chars_extra=${chars_extra#*\\%};                                                                                   \
                  case \" ad aD ae aE ai aI al aL an aN ar as at b B cd cD ce cE ci cI cl cL cn cN cr                                \
                          cs ct d D e f G? gd gD ge gE GF GG GK gn gN GP gs GS GT h H N p P s S t T \" in                            \
                   *\" ${chars_extra:0:2} \"*)                                                                                       \
                     chars_extra=${chars_extra:2};                                                                                   \
                     chars_after=${chars_extra%%\\%*};                                                                               \
                     ;;                                                                                                              \
                   *\" ${chars_extra:0:1} \"*)                                                                                       \
                     chars_extra=${chars_extra:1};                                                                                   \
                     chars_after=${chars_extra%%\\%*};                                                                               \
                     ;;                                                                                                              \
                   *)                                                                                                                \
                     echo \"No Placeholder found. Probably no tablelike output.\";                                                   \
                     continue;                                                                                                       \
                     ;;                                                                                                              \
                  esac ;                                                                                                             \
                  if [[ -n \"$chars_begin$chars_after\" ]];then                                                                      \
                    len_extra=$(echo \"$chars_begin$chars_after\" | wc -m);                                                          \
                    col_length["$n:$i"]=$((${col_length["$n:$i"]}+$len_extra-1));                                                    \
                  fi;                                                                                                                \
                                                                                                                                     \
                done <<< \"${line#*=format:}$delim\";                                                                                \
                i=1;                                                                                                                 \
              done <<< \"$(echo -e \"${git_log_cmd//\\%n/\\\\n}\")\";                                                                \
                                                                                                                                     \
              case \"$git_log_cmd\" in                                                                                               \
                *\"--author-date-order\"*)                                                                                           \
                  log_count=\"log --all --graph --author-date-order --pretty=format:\\ \";                                           \
                  ;;                                                                                                                 \
                *\"--date-order\"*)                                                                                                  \
                  log_count=\"log --all --graph --date-order --pretty=format:\\ \";                                                  \
                  ;;                                                                                                                 \
                *\"--topo-order\"*)                                                                                                  \
                  log_count=\"log --all --graph --topo-order --pretty=format:\\ \";                                                  \
                  ;;                                                                                                                 \
                *)                                                                                                                   \
                  log_count=\"log --all --graph --pretty=format:\\ \";                                                               \
                  ;;                                                                                                                 \
              esac;                                                                                                                  \
              while IFS= read -r graph;do                                                                                            \
                chars_count=$(sed -nl1000 \"l\" <<< \"$graph\" | grep -Eo \"\\\\\\\\\\\\\\\\|\\||\\/|\\ |\\*|_\" | wc -l);           \
                [[ ${chars_count:-0} -gt ${col_length["1:1"]:-0} ]] && col_length["1:1"]=$chars_count;                               \
              done < <([[ -n \"$(grep -F graph <<< \"$git_log_cmd\")\" ]] && git $log_count && echo);                                \
                                                                                                                                     \
              l=0;                                                                                                                   \
              while IFS= read -r line;do                                                                                             \
                c=0;                                                                                                                 \
                ((l++));                                                                                                             \
                [[ $l -gt $n ]] && l=1;                                                                                              \
                while IFS= read -d\"$delim\" -r col_content;do                                                                       \
                  ((c++));                                                                                                           \
                  if [[ $c -eq 1 ]];then                                                                                             \
                    [[ -n \"$(grep -F \"*\" <<< \"$col_content\")\" ]] || l=2;                                                       \
                    chars=$(sed -nl1000 \"l\" <<< \"$col_content\" | grep -Eo \"\\\\\\\\\\\\\\\\|\\||\\/|\\ |\\*|_\" | wc -l);       \
                    whitespaces=$((${col_length["1:1"]}-$chars));                                                                    \
                    whitespaces=$(seq -s\" \" $whitespaces|tr -d \"[:digit:]\");                                                     \
                    col_content[1]=\"${col_content[1]}$col_content$whitespaces\n\";                                                  \
                  else                                                                                                               \
                    col_content[$c]=\"${col_content[$c]}$(printf \"%-${col_length[\"$l:$c\"]}s\" \"${col_content:-\"\"}\")\n\";      \
                  fi;                                                                                                                \
                done <<< \"$line$delim\";                                                                                            \
                for ((k=$c+1;k<=$i_max;k++));do                                                                                      \
                  empty_content=\"$(printf \"%-${col_length[\"$l:$k\"]:-${col_length[\"${last[$k]:-1}:$k\"]:-0}}s\" \"\")\";         \
                  col_content[$k]=\"${col_content[$k]}$empty_content\n\";                                                            \
                done;                                                                                                                \
              done < <(git $1 && echo);                                                                                              \
                                                                                                                                     \
              while read col_num;do                                                                                                  \
                if [[ -z \"$cont_all\" ]];then                                                                                       \
                  cont_all=${col_content[$col_num]};                                                                                 \
                else                                                                                                                 \
                  cont_all=$(paste -d\" \" <(echo -e \"$cont_all\") <(echo -e \"${col_content[$col_num]}\"));                        \
                fi;                                                                                                                  \
              done <<< $(seq 2 1 ${git_tre_col:-1};seq 1;seq $((${git_tre_col:-1}+1)) 1 $i_max);                                     \
              echo -e \"$cont_all\";                                                                                                 \
              "' "git-tably"

ප්රතිපල:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න

හෝ පියාසර කරන නව TreeColNumber සමඟ

රූප විස්තරය මෙහි ඇතුළත් කරන්න

නැවතත්: ඔබේ අවශ්‍යතාවයට සරිලන පරිදි මේසයක් මෙන් පෙනෙන පෙනුමක් ලබා දීමට විනෝද වන්න.


මෙම බාෂ් ස්නිපෙට් විසිතුරු ගිට් ලොග් වැනි විධාන බවට පත් වන්නේ කෙසේදැයි ඔබ ඔබේ පිළිතුරෙන් පැහැදිලි කළ යුතුය. ඔබ සම්බන්ධ කළ පිළිතුර දෙස බැලීමෙන් කෙනෙකුට ප්‍රයෝජන ගත හැකිය, නමුත් පිළිතුරු ස්වයං අන්තර්ගත විය යුතුය
ඇන්ඩ්‍රාස් ඩීක්

ඔබ අදහස් කළේ මම gt ලොග් cmd විස්තරාත්මකව පැහැදිලි කළ යුතුද? කරුණාකර ඔබට නැතිවූ දේ මට උදාහරණයක් දෙන්න පුළුවන්ද?
onemorequestion

සටහන: අරුම පුදුම git log විධානයේ ප්‍රතිදානය මෙම ස්නිපටය මඟින් ටර්මිනලය මත මේසයට සමාන ප්‍රතිදානය ලබා ගනී. ඉතින්, ඔබ සඳහන් කළ පරිදි අනෙක් පැත්ත;)
onemorequestion

ඔබට අවශ්‍ය සෑම අවස්ථාවකදීම ඔබ පේළි 20 ක් ටයිප් නොකරන බව මම සිතුවෙමි. මෙය bash ශ්‍රිතයක් හෝ git අන්වර්ථයක් ලෙස අර්ථ දැක්වීම අර්ථවත් කරයි. ඔබේ කේතය පහසුවෙන් භාවිතා කළ හැකි වන පරිදි සම්පූර්ණ කිරීමට උත්සාහ කිරීම බොහෝ පා readers කයින් කරදර නොකරනු ඇත. ඒකයි මම අදහස් කළේ. ඔබ කේතය අහඹු ලෙස sh ගොනුවක ඔබේ මාර්ගයට දැමුවහොත් ඔබට මාව නොසලකා හැරිය හැකිය.
ඇන්ඩ්‍රාස් ඩීක්

1
මට පේනවා. ඔබගේ උපදෙස් වලට ස්තූතියි. මම මගේ පිළිතුර සංස්කරණය කර එවැනි අන්වර්ථයක් එක් කරමි. සාමාන්‍යයෙන් මම ඔබ සඳහන් කළ පරිදි "දිගු" විධානයන් සඳහා ගොනු භාවිතා කරමි. නමුත් මෙහි ක්‍රම දෙකම ලිවීම වඩාත් පහසුය, මම එකඟ වෙමි.
onemorequestion

8

ඩිටා උත්සාහ කරන්න . ඕනෑම ASCII රූප සටහනක් රූපයක් බවට පරිවර්තනය කළ හැකිය. Git ශාඛා මනසේ තබාගෙන නිර්මාණය කර නොතිබුණද, ප්‍රති .ල ගැන මා පුදුමයට පත් විය.

මූලාශ්‍රය (txt ගොනුව):

        +--------+
        | hotfix |
        +---+----+
            |
--*<---*<---*
       ^ 
       |
       \--*<---*
               |
           +---+----+
           | master |
           +--------+

විධානය:

java -jar ditaa0_9.jar ascii-graph.txt

ප්‍රති ult ලය:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

එය පසුබිම් වර්ණ, ඉරුණු රේඛා, විවිධ හැඩයන් සහ තවත් දේ සඳහා සහය දක්වයි. උදාහරණ බලන්න .


1
ඒ හා සමානව, අනියම්- effects.com/markdeep අතින් සකස් කරන ලද ascii කලා රූප සටහන් ඉස්මතු කිරීමට ඉතා බලවත් ය.
බෙනී චර්නියාව්ස්කි-පැස්කින්

7

ඔබේ ගබඩාව ගිට්ලැබ් හි තිබේ නම්, ඔබේ බ්‍රව්සරයේ SVG ලෙස විදහා දැක්වෙන පරිදි ඔබට එහි ප්‍රස්ථාර නිරූපණය භාවිතා කළ හැකිය.

  • ඔබේ ගබඩාවේ ප්‍රස්ථාර දර්ශනයට යන්න, උදා: https://gitlab.com/gitlab-org/gitter/webapp/network/develop

  • ප්‍රස්ථාරය පහළට අනුචලනය කරන්න (එය කම්මැලි බර පැටවේ!)

  • SVG අංගය නව ගොනුවකට පිටපත් කිරීමට ඔබගේ බ්‍රව්සරයේ පරීක්ෂක භාවිතා කරන්න

  • ඔබේ අභිමතය පරිදි එය විදැහුම්කරුවෙකු තුළ විවෘත කරන්න, උදා: ඉන්ක්ස්කේප්

රූප විස්තරය මෙහි ඇතුළත් කරන්න


6

සෘජු මෙවලමක් ගැන මම නොදනිමි, නමුත් සමහර විට ඔබට දත්ත තිත් ආකෘතියට අපනයනය කිරීමට ස්ක්‍රිප්ට් එකක් හැක් කර ග්‍රැෆ්විස් සමඟ ඉදිරිපත් කළ හැකිය.


මෙය උත්සාහ කරන්න github.com/gugod/bin/blob/master/git-graphviz . මගේ ආයතනික පරිසරය තුළ සියලු පරායත්තතා මා සතුව නොතිබුණි, එබැවින් එම ioවිධානයන් සරල perl `git log [...]` විධානයන් ලෙස වෙනස් කිරීම මා වෙනුවෙන් ක්‍රියාත්මක විය.
රොස් රොජර්ස්

ඔබ mac ඉන්නේ ඔබ මෙම විධානාවලිය උත්සාහ කිරීමට අවශ්ය නම්, ඔබ සමඟ perl බසට ලං පැහැරගැනීමට හැකි brew install perl dotහා පසුව cpan common::sense IO::allඑම පරායත්තයන් ලබා ගැනීමට. ඉන්පසු, ප්‍රතිදානය සුදුසු විධානයකට නල කරන්න git-graphviz | dot -Tpng -o repo.png. කෙසේ වෙතත්, ප්‍රතිදානය git-big-picture වලට වඩා වෙනස් නොවේ .
jrhorn424

6

රෆායෙල් වෙබ් ග්‍රැෆික් පුස්තකාලයේ නිරූපණයන්ගෙන් එකක් ලෙස විනෝදජනක Git commit ප්‍රස්ථාරයක් ඇත .

නිරූපණය ස්ථිතිකයි, නමුත් කේතය රැගෙන සජීවී දත්ත කට්ටලයක් සඳහා ඒවායේ ස්ථිතික දත්ත හුවමාරු කර ගැනීමට තරම් පහසු විය යුතුය - මම සිතන්නේ එය JSON ආකෘතියෙන් Git commit දත්ත පමණක් බවයි.

නිරූපණය මෙහි ඇත: http://dmitrybaranovskiy.github.io/raphael/github/impact.html


1
GitHub හි බලපෑම් ප්‍රස්ථාරවල භාවිතා කරන එකම ප්‍රස්ථාර කේතය එයයි, නැත? (උදා: github.com/DmitryBaranovskiy/raphael/graphs/impact )
ස්ලිප් ඩී. තොම්සන්

Ven ස්වේන්: එය පෙන්වා දීමට ස්තූතියි. මෙම පිළිතුර අවුරුදු පහක් පැරණි බව කරුණාවෙන් මතක තබා ගත යුතු වුවත්, ඔබ වෙනුවෙන් බිඳුණු සම්බන්ධතා මම නිවැරදි කර ඇත්තෙමි.
ස්පුඩ්ලි


5

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'

4

OSX භාවිතා කරන්නන් සඳහා, මම @gospes උදාහරණය ගෙන එය gsed (හෝම්බ rew gnu-sedහරහා ස්ථාපනය කර ඇත) සඳහා තරමක් වෙනස් කර වර්ණ වෙනස් කර ඇත (කළු පසුබිමක් සමඟ වැඩ කිරීමට, මුල් උදාහරණය එය කරන ආකාරය කෙසේ දැයි විශ්වාස නැත. උදාහරණයක් ලෙස එය කළු පසුබිමක් සහිත පර්යන්තයක කළු පා text ය නියම කරයි).

[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

OSX සඳහා යතුර නම් පළමුව gnu sed ස්ථාපනය කිරීමයි (එයට -r විකල්පය ඇත). හෝම්බ rew සමඟ වඩාත් පහසුවෙන් කළ හැකි අතර, එමඟින් පද්ධතිය ස්ථාපනය කර ඇති sed නැවත ලියන්නේ නැත, නමුත් ඒ වෙනුවට gnu sed "gsed" ලෙස ස්ථාපනය කරනු ඇත. ඕඑස්එක්ස් ක්‍රියා විරහිත වීම ගැන ඉහත අදහස් දැක්වූ ස්ලිප් ඩී. තොම්සන් මෙය උපකාරී වේ යැයි සිතමු .

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.