පෙන්වන වඩාත්ම ශ්රේණිගත පිළිතුරු git log
ප්රියතම විසඳුම් ලෙස විධාන .
ඔබට මේසයක් අවශ්ය නම් , ප්රතිදානය වැනි තීරුවක් කියන්න, ඔබට සුළු වෙනස් කිරීම් සහ .gitconfig අන්වර්ථය සමඟ යම් සීමාවන් සහිතව ඔබේ නියමයි git ලොග් විධාන භාවිතා කළ හැකිය. .
වෙනස් කිරීම්:
- ඔබ භාවිතා කළ යුතුයි
%><(<N>[,ltrunc|mtrunc|trunc])
සෑම කැපවීමකටම පෙර කළ යුතුය
- තීරු බෙදුම්කරු ලෙස අද්විතීය පරිසීමකය එක් කරන්න
--color
වර්ණ ප්රතිදානය සඳහා විකල්පයක් එක් කරන්න
සීමාවන්:
- ඔබ හිස් නොවන නව රේඛා භාවිතා නොකරන තාක් කල් ඔබට සෑම තීරුවකම git ප්රස්ථාරය තැබිය හැකිය
%n...
- ඕනෑම නව රේඛාවක අවසාන කැපවීමේ ස්ථානය නොමැතිව භාවිතා කළ හැකිය
%><(<N>[,trunc])
අමතර අක්ෂර වැනි විසිතුරු කිරීම සඳහා අවශ්ය නම් (committer:
, <
හා >)
දී
...%C(dim white)(committer: %cn% <%ce>)%C(reset)...
වගු වැනි නිමැවුමක් ලබා ගැනීම සඳහා ඒවා කැපවූ ස්ථාන දරන්නාට පෙර සහ පසුව කෙලින්ම ලිවිය යුතුය
...%C(dim white)%<(25,trunc)(committer: %cn%<(25,trunc) <%ce>)%C(reset)...
නම්, --format=format:
විකල්පය සමීප එය සමග අන්තිම එක නොවේ %C(reset)
බොහොමයක් ලෙස
සාමාන්ය git ලොග් ප්රතිදානය හා සසඳන විට මෙය මන්දගාමී නමුත් හොඳයි
මෙම වෙබ් අඩවියෙන් ලබාගත් උදාහරණය :
thompson1 = log --all --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(auto)%d%C(reset)'
^
එකතු කරන ලද අක්ෂර නොමැතිව පරිසීමකය සමඟ සහ වනු ඇත
thompson1-new = log --all --graph --color --abbrev-commit --decorate --format=format:'^%C(bold blue)%<(7,trunc)%h%C(reset)^%C(bold green)%<(21,trunc)%ar%C(reset)^%C(white)%<(40,trunc)%s%C(reset)^%C(dim white)%<(25,trunc)%an%C(reset)^%C(auto)%d%C(reset)'
සමාන කරයි
හෝ 5 වන තීරුවට ප්රස්ථාරය ගෙනයාම සමඟ
මෙය සාක්ෂාත් කර ගැනීම සඳහා ඔබේ .gitconfig වෙත පහත සඳහන් දෑ එකතු කර ඔබේ ලොග් අන්වර්ථය අමතන්න
git tably YourLogAlias
[color "decorate"]
HEAD = bold blink italic 196
branch = 214
tag = bold 222
[alias]
# delimiter used as column seperator
delim = ^
# example thompson1
thompson1 = log --all --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(auto)%d%C(reset)'
# modified thompson1 example
thompson1-new = log --all --graph --color --abbrev-commit --decorate --format=format:'^%C(bold blue)%<(7,trunc)%h%C(reset)^%C(bold green)%<(21,trunc)%ar%C(reset)^%C(white)%<(40,trunc)%s%C(reset)^%C(dim white)%<(25,trunc)%an%C(reset)^%C(auto)%d%C(reset)'
# set a column for the graph
thompson1-new-col = 1
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}\")\"; \
\
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 --all --graph --pretty=format:\" \" && 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"
මෙය වැඩි වශයෙන් හෝ අඩු වශයෙන් මගේ පිළිතුරේ කොටසක් පමණි https://stackoverflow.com/a/61487052/8006273 එහිදී ඔබට ගැඹුරු පැහැදිලි කිරීම් සොයාගත හැකි නමුත් මෙම ප්රශ්නයටද මෙහි හොඳින් ගැලපේ.
ඔබගේ git log විධානයන් සමඟ ගැටලු ඇත්නම් අදහස් දක්වන්න.