load extension

%load_ext jupyter_tikz

preables

preamble = r"""
\usepackage{kotex}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes.misc}
\usetikzlibrary{arrows.meta}
\setmainfont{Noto Sans KR}
"""
style_git_region = r"""
    draw=black!70,
    fill=lightgray!10,
    minimum width=4cm,
    minimum height=3.5cm,
    rectangle,
    line width=2pt
"""
style_git_file = r"""
    draw=black!70,
    fill=lightgray!20,
    minimum width=3.5cm,
    minimum height=0.7cm,
    rectangle,
    line width=1pt
"""
style_git_operation = r"""
    draw=black!70,
    -Triangle,
    line width=1.2pt,
    bend left=80,
    looseness=1.4
"""
%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_01
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_02
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node (untracked)     at (0,1) {untracked};
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node (untracked)     at (0,1) {untracked};
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_03
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node[dashed] (untracked) at (0,1) {untracked};
\node (added)             at (5,1) {added};
\end{scope}

\begin{scope}[
    every edge/.style={(* style_git_operation *)}
]
\draw (untracked) edge node[above] {add 명령(복사)} (added);
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node[dashed] (untracked) at (0,1) {untracked};
    \node (added)             at (5,1) {added};
    \end{scope}

    \begin{scope}[
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=1.2pt,
        bend left=80,
        looseness=1.4
    }
    ]
    \draw (untracked) edge node[above] {add 명령(복사)} (added);
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_04
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node[dashed] (tracked clean) at (0,2) {tracked,clean};
\node[dashed] (untracked)     at (0,1) {untracked};
\node[dashed] (added)         at (5,1) {added};
\node[cross out]              at (5,1) {};
\node (commit c1)             at (10,1) {commit c1};
\end{scope}

\begin{scope}[
    every edge/.style={(* style_git_operation *)}
]
\draw (added) edge[bend left] node[above] {commit 명령(이동)} (commit c1);
\draw (untracked) edge[bend left=0] (tracked clean);
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node[dashed] (tracked clean) at (0,2) {tracked,clean};
    \node[dashed] (untracked)     at (0,1) {untracked};
    \node[dashed] (added)         at (5,1) {added};
    \node[cross out]              at (5,1) {};
    \node (commit c1)             at (10,1) {commit c1};
    \end{scope}

    \begin{scope}[
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=1.2pt,
        bend left=80,
        looseness=1.4
    }
    ]
    \draw (added) edge[bend left] node[above] {commit 명령(이동)} (commit c1);
    \draw (untracked) edge[bend left=0] (tracked clean);
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_05
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node (tracked modified) at (0,1) {tracked,modified};
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node (tracked modified) at (0,1) {tracked,modified};
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_06
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node[dashed] (tracked modified)  at (0,1) {tracked,modified};
\node (tracked modified in stage) at (5,1) {tracked,modified};
\end{scope}

\begin{scope}[
    every edge/.style={(* style_git_operation *)}
]
\draw (tracked modified) edge[bend left] node[above] {add 명령(복사)} (tracked modified in stage);
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node[dashed] (tracked modified)  at (0,1) {tracked,modified};
    \node (tracked modified in stage) at (5,1) {tracked,modified};
    \end{scope}

    \begin{scope}[
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=1.2pt,
        bend left=80,
        looseness=1.4
    }
    ]
    \draw (tracked modified) edge[bend left] node[above] {add 명령(복사)} (tracked modified in stage);
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_07
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node[dashed] (tracked clean)             at (0,2) {tracked,clean};
\node[dashed] (tracked modified)          at (0,1) {tracked,modified};
\node[dashed] (tracked modified in stage) at (5,1) {tracked,modified};
\node[cross out]                          at (5,1) {};
\node (commit c2)                         at (10,1) {commit c2};
\end{scope}

\begin{scope}[
    every edge/.style={(* style_git_operation *)}
]
\draw (tracked modified in stage) edge[bend left] node[above] {commit 명령(이동)} (commit c2);
\draw (tracked modified) edge[bend left=0] (tracked clean);
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node[dashed] (tracked clean)             at (0,2) {tracked,clean};
    \node[dashed] (tracked modified)          at (0,1) {tracked,modified};
    \node[dashed] (tracked modified in stage) at (5,1) {tracked,modified};
    \node[cross out]                          at (5,1) {};
    \node (commit c2)                         at (10,1) {commit c2};
    \end{scope}

    \begin{scope}[
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=1.2pt,
        bend left=80,
        looseness=1.4
    }
    ]
    \draw (tracked modified in stage) edge[bend left] node[above] {commit 명령(이동)} (commit c2);
    \draw (tracked modified) edge[bend left=0] (tracked clean);
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_08
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node[dashed] (tracked clean)  at (0,2) {tracked,clean};
\node (tracked modified)       at (0,1) {tracked,modified};
\node[cross out]               at (0,1) {};
\node (commit c2)              at (10,1) {commit c2};
\end{scope}

\begin{scope}[
    every edge/.style={(* style_git_operation *)}
]
\draw (commit c2) edge[bend left=30] node[below] {restore 명령(복사)} (tracked modified);
\draw (tracked modified) edge[bend left=0] (tracked clean);
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node[dashed] (tracked clean)  at (0,2) {tracked,clean};
    \node (tracked modified)       at (0,1) {tracked,modified};
    \node[cross out]               at (0,1) {};
    \node (commit c2)              at (10,1) {commit c2};
    \end{scope}

    \begin{scope}[
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=1.2pt,
        bend left=80,
        looseness=1.4
    }
    ]
    \draw (commit c2) edge[bend left=30] node[below] {restore 명령(복사)} (tracked modified);
    \draw (tracked modified) edge[bend left=0] (tracked clean);
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_09
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node (tracked modified)                  at (0,1) {tracked,modified};
\node[dashed] (tracked modified in stage) at (5,1) {tracked,modified};
\node[cross out]                          at (5,1) {};
\node (commit c2)                         at (10,1) {commit c2};
\end{scope}

\begin{scope}[
    every edge/.style={(* style_git_operation *)}
]
\draw (commit c2) edge[bend left] node[below] {git restore --staged 명령(복사)} (tracked modified in stage);
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node (tracked modified)                  at (0,1) {tracked,modified};
    \node[dashed] (tracked modified in stage) at (5,1) {tracked,modified};
    \node[cross out]                          at (5,1) {};
    \node (commit c2)                         at (10,1) {commit c2};
    \end{scope}

    \begin{scope}[
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=1.2pt,
        bend left=80,
        looseness=1.4
    }
    ]
    \draw (commit c2) edge[bend left] node[below] {git restore --staged 명령(복사)} (tracked modified in stage);
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_10
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node (tracked modified)          at (0,1) {tracked,modified};
\node (tracked modified in stage) at (5,1) {tracked,modified};
\end{scope}

\begin{scope}[
    every edge/.style={(* style_git_operation *)}
]
\draw (tracked modified in stage) edge node[below] {git restore} (tracked modified);
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node (tracked modified)          at (0,1) {tracked,modified};
    \node (tracked modified in stage) at (5,1) {tracked,modified};
    \end{scope}

    \begin{scope}[
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=1.2pt,
        bend left=80,
        looseness=1.4
    }
    ]
    \draw (tracked modified in stage) edge node[below] {git restore} (tracked modified);
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_11
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node (tracked modified2)         at (0,1) {tracked,modified2};
\node[cross out]                  at (0,1) {};
\node[dashed] (tracked modified)          at (0,2) {tracked,modified};
\node (tracked modified in stage) at (5,1) {tracked,modified};
\end{scope}

\begin{scope}[
    every edge/.style={(* style_git_operation *)}
]
\draw (tracked modified in stage) edge node[below] {git restore} (tracked modified2);
\draw (tracked modified2) edge[bend left=0] (tracked modified);
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node (tracked modified2)         at (0,1) {tracked,modified2};
    \node[cross out]                  at (0,1) {};
    \node[dashed] (tracked modified)          at (0,2) {tracked,modified};
    \node (tracked modified in stage) at (5,1) {tracked,modified};
    \end{scope}

    \begin{scope}[
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=1.2pt,
        bend left=80,
        looseness=1.4
    }
    ]
    \draw (tracked modified in stage) edge node[below] {git restore} (tracked modified2);
    \draw (tracked modified2) edge[bend left=0] (tracked modified);
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_12
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node (tracked deleted) at (0,1) {tracked,deleted};
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node (tracked deleted) at (0,1) {tracked,deleted};
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_13
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node[dashed] (tracked deleted) at (0,1) {tracked,deleted};
\node (tracked deleted in stage) at (5,1) {tracked,deleted};
\end{scope}

\begin{scope}[
    every edge/.style={(* style_git_operation *)}
]
\draw (tracked deleted) edge[bend left] node[above] {add 명령(복사)} (tracked deleted in stage);
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node[dashed] (tracked deleted) at (0,1) {tracked,deleted};
    \node (tracked deleted in stage) at (5,1) {tracked,deleted};
    \end{scope}

    \begin{scope}[
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=1.2pt,
        bend left=80,
        looseness=1.4
    }
    ]
    \draw (tracked deleted) edge[bend left] node[above] {add 명령(복사)} (tracked deleted in stage);
    \end{scope}

    \end{tikzpicture}
\end{document}

%%tikz -pt -e -tp xelatex -p "$preamble" -r -d 300 -S fig_basic_14
\begin{tikzpicture}

\begin{scope}[
    every node/.style={(* style_git_region *)}
]
\node (worktree)         at (0,1) {};
\node (stage)            at (5,1) {};
\node (repository)       at (10,1) {};
\end{scope}

\node (worktree-label)   at (0,0) {워크트리};
\node (stage-label)      at (5,0) {스테이지};
\node (repository-label) at (10,0) {레포지토리};

\begin{scope}[
    every node/.style={(* style_git_file *)}
]
\node[dashed] (tracked deleted)          at (0,1) {tracked,deleted};
\node[cross out]                         at (0,1) {};
\node[dashed] (tracked deleted in stage) at (5,1) {tracked,deleted};
\node[cross out]                         at (5,1) {};
\node (commit c3)                        at (10,1) {commit c3};
\end{scope}

\begin{scope}[
    every edge/.style={(* style_git_operation *)}
]
\draw (tracked deleted in stage) edge[bend left] node[above] {commit 명령(이동)} (commit c3);
\end{scope}

\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=lightgray!10,
        minimum width=4cm,
        minimum height=3.5cm,
        rectangle,
        line width=2pt
    }
    ]
    \node (worktree)         at (0,1) {};
    \node (stage)            at (5,1) {};
    \node (repository)       at (10,1) {};
    \end{scope}

    \node (worktree-label)   at (0,0) {워크트리};
    \node (stage-label)      at (5,0) {스테이지};
    \node (repository-label) at (10,0) {레포지토리};

    \begin{scope}[
        every node/.style={
        draw=black!70,
        fill=lightgray!20,
        minimum width=3.5cm,
        minimum height=0.7cm,
        rectangle,
        line width=1pt
    }
    ]
    \node[dashed] (tracked deleted)          at (0,1) {tracked,deleted};
    \node[cross out]                         at (0,1) {};
    \node[dashed] (tracked deleted in stage) at (5,1) {tracked,deleted};
    \node[cross out]                         at (5,1) {};
    \node (commit c3)                        at (10,1) {commit c3};
    \end{scope}

    \begin{scope}[
        every edge/.style={
        draw=black!70,
        -Triangle,
        line width=1.2pt,
        bend left=80,
        looseness=1.4
    }
    ]
    \draw (tracked deleted in stage) edge[bend left] node[above] {commit 명령(이동)} (commit c3);
    \end{scope}

    \end{tikzpicture}
\end{document}