\documentclass[a4paper,11pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning}
\tikzset{
  tag/.style={
    rectangle,
    draw=black, very thick,
    text width=4em,
    minimum height=2em,
    text centered},
  commit/.style={
    circle,
    draw=black, very thick,
    text width=1em,
    minimum height=1em,
    text centered},
  point/.style={coordinate},
}
\begin{document}
\begin{tikzpicture}
  \matrix[row sep=10mm,column sep=4mm ] {
    % Top Row (feature branch)
    & \node [tag] (feature) {feature}; & \node[commit] (c2) {2}; & & \node[commit] (c4) {4}; & & &\\
    % Bottom Row (trunk)
    \node [tag] (trunk) {trunk}; & \node[commit] (c1) {1}; & & \node[commit] (c3) {3}; &  & \node[commit] (c5) {5}; & \node [point] (end) {};\\
  };
  \begin{scope}[every node/.style={midway,auto,font=\scriptsize}]
    \draw [very thick, ->] (trunk) -- (c1) -- (c3) -- (c5) -- (end);
    \draw [very thick, ->] (feature) -- (c2) -- (c4);
    \draw [dashed, very thick, ->] (trunk) -- node {$branch$} (feature);
    \draw [dashed, very thick, ->] (c4) -- node {$merge$} (c5);
  \end{scope}
\end{tikzpicture}
\end{document}