%load_ext jupyter_tikz
preamble = r"""
\usepackage{kotex}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes.misc}
\usetikzlibrary{arrows.meta}
\setmainfont{Noto Sans KR}
"""
style_git_commit = r"""
    draw=black!70,
    fill=green!20!lightgray,
    minimum width=2cm,
    minimum height=1cm,
    rounded rectangle,
    line width=2pt
"""
style_git_commit_pointer = r"""
    draw=black!70,
    -Triangle,
    line width=2pt
"""
style_git_branch = r"""
    draw=black!70,
    fill=CornflowerBlue,
    minimum width=2cm,
    minimum height=1cm,
    rectangle,
    line width=2pt
"""
style_git_branch_pointer = r"""
    draw=black!70,
    -Triangle,
    line width=2pt
"""
style_git_head = r"""
    draw=black!70,
    fill=Melon,
    minimum width=2cm,
    minimum height=1cm,
    rectangle,
    line width=2pt
"""
style_git_head_pointer = r"""
    draw=black!70,
    densely dotted,
    -Triangle,
    line width=2pt
"""
%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_log_01
\begin{tikzpicture}
\begin{scope}[
    every node/.style={(* style_git_commit *)},
    every edge/.style={(* style_git_commit_pointer *)}
]
\node (c1) at (0,0) {c1};
\node (c2) at (3,0) {c2}; \path (c2) edge (c1);
\node (c3) at (6,0) {c3}; \path (c3) edge (c2);
\end{scope}

\begin{scope}[
    every node/.style={(* style_git_branch *)},
    every edge/.style={(* style_git_branch_pointer *)}
]
\node (main) at (6,-2) {main}; \path (main) edge (c3);
\end{scope}

\begin{scope}[
    every node/.style={(* style_git_head *)},
    every edge/.style={(* style_git_head_pointer *)}
]
\node (HEAD) at (6,-4) {HEAD}; \path (HEAD) edge (main);
\end{scope}

\node at (0,2) {file1.txt 추가};
\node at (3,2) {file1.txt 변경};
\node at (3,1.5) {file2.txt 추가};
\node at (6,2) {(file1.txt 삭제)};
\node at (6,1) {file3.txt 추가};

\end{tikzpicture}
\documentclass{standalone}
\usepackage{kotex}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes.misc}
\usetikzlibrary{arrows.meta}
\setmainfont{Noto Sans KR}
\begin{document}
    \begin{tikzpicture}
    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=green!20!lightgray,
        minimum width=2cm,
        minimum height=1cm,
        rounded rectangle,
        line width=2pt
    },
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=2pt
    }
    ]
    \node (c1) at (0,0) {c1};
    \node (c2) at (3,0) {c2}; \path (c2) edge (c1);
    \node (c3) at (6,0) {c3}; \path (c3) edge (c2);
    \end{scope}

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=CornflowerBlue,
        minimum width=2cm,
        minimum height=1cm,
        rectangle,
        line width=2pt
    },
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=2pt
    }
    ]
    \node (main) at (6,-2) {main}; \path (main) edge (c3);
    \end{scope}

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=Melon,
        minimum width=2cm,
        minimum height=1cm,
        rectangle,
        line width=2pt
    },
        every edge/.style={
        draw=black!70,
        densely dotted,
        -Triangle,
        line width=2pt
    }
    ]
    \node (HEAD) at (6,-4) {HEAD}; \path (HEAD) edge (main);
    \end{scope}

    \node at (0,2) {file1.txt 추가};
    \node at (3,2) {file1.txt 변경};
    \node at (3,1.5) {file2.txt 추가};
    \node at (6,2) {(file1.txt 삭제)};
    \node at (6,1) {file3.txt 추가};

    \end{tikzpicture}
\end{document}