Basic Git Concepts and Operations
Contributed by Costa Shulyupin.
[Input .gv File] [SVG] [Raster Image]
git.gv.txt
digraph git_basics {
graph [
label = "Basic git concepts and operations\n\n"
labelloc = t
fontname = "Helvetica,Arial,sans-serif"
fontsize = 20
layout = dot
rankdir = LR
newrank = true
]
node [
style=filled
shape=rect
pencolor="#00000044" // frames color
fontname="Helvetica,Arial,sans-serif"
shape=plaintext
]
edge [
arrowsize=0.5
fontname="Helvetica,Arial,sans-serif"
labeldistance=3
labelfontcolor="#00000080"
penwidth=2
style=dotted // dotted style symbolizes data transfer
]
changes [
color="#88000022"
label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
<tr> <td> <b>changes</b><br/>in the working tree </td> </tr>
<tr> <td align="left"><i>To view: </i><br align="left"/>
git diff
<br align="left"/></td> </tr>
</table>>
shape=plain
]
staging [
fillcolor="#ff880022"
label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
<tr> <td> <b>staging area</b><br/>(cache, index)</td> </tr>
<tr> <td align="left"><i>To view: </i><br align="left"/>
git diff --staged
<br align="left"/></td> </tr>
</table>>
shape=plain
]
staging -> HEAD:push [label="git commit" weight=1000 color="#88000088"]
stash [
fillcolor="#0044ff22"
label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
<tr> <td> <b>stash</b></td> </tr>
<tr> <td align="left"><i>To view:</i><br align="left"/>
git stash list
<br align="left"/></td> </tr>
</table>>
shape=plain
]
stash_push [
label="git stash [push]"
style=""
shape=plain
color="#00008844"
]
{
edge [arrowhead=none color="#00008844"]
changes -> stash_push
stash_push -> staging
}
changes -> stash [
dir=back
xlabel="git stash pop"
color="#00000088" weight=0]
stash_push -> stash [xdir=back color="#00008844" minlen=0]
HEAD [
fillcolor="#88ff0022"
label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="3">
<tr> <td port="push" sides="ltr"> <b>HEAD </b>of</td> </tr>
<tr> <td port="pull" sides="lbr"> the current branch</td> </tr>
<tr> <td port="switch" align="left">
<i>To view:</i>
<br align="left"/>
git show<br align="left"/>
git log
<br align="left"/>
</td> </tr>
<tr> <td align="left">
<i>To change branch:</i><br align="left"/>
git switch ...
<br align="left"/>
git checkout ...
<br align="left"/>
</td> </tr>
</table>>
shape=plain
]
remote [
label="remote branch"
shape=box
color="#00000022"
fillcolor="#00ff0022"
]
HEAD:push -> remote [label="git push" color="#88000088"]
HEAD:pull -> remote [dir=back label="git pull" color="#00440088"]
branches [
fillcolor="#00888822"
label=<<table border="0" cellborder="1" cellspacing="0" cellpadding="4">
<tr> <td> <b>local branches</b> </td> </tr>
<tr> <td align="left"><i>To view:</i><br align="left"/>
git branch [--list]
<br align="left"/></td> </tr>
</table>>
shape=plain
]
changes -> staging [label="git add ... \ngit reset " color="#88000088"]
discard [shape=plaintext style=""]
changes -> discard [label="git restore ..." color="#88000088"]
{rank=same changes discard}
// UML style aggregation
HEAD:switch -> branches [
dir=back
style=""
penwidth=1
arrowtail=odiamond
arrowhead=none
color="#00000088"
]
}
// © 2022 Costa Shulyupin, licensed under EPL
© 2022 Costa Shulyupin, licensed under EPL