\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{glisignoli} \pdfinfo{ /Title (git-flow.pdf) /Creator (Cheatography) /Author (glisignoli) /Subject (git-flow Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{BA7B32} \definecolor{LightBackground}{HTML}{FAF6F2} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{git-flow Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{glisignoli} via \textcolor{DarkBackground}{\uline{cheatography.com/20258/cs/3083/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}glisignoli \\ \uline{cheatography.com/glisignoli} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 11th May, 2016.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Git workflows}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Start a {\bf{feature}}, work on it, {\bf{finish}} it. \newline % Row Count 1 (+ 1) {\emph{Git flow merges {\bf{feature}} back into {\bf{develop}}}} \newline % Row Count 3 (+ 2) Work on {\bf{develop}}, start a {\bf{release}}, {\bf{finish}} it \newline % Row Count 5 (+ 2) {\emph{Git flow merges {\bf{release}} into {\bf{master}} and {\bf{develop}}}} \newline % Row Count 7 (+ 2) Start a {\bf{hotfix}}, work on it, {\bf{finish}} it. \newline % Row Count 8 (+ 1) {\emph{Git flow merges {\bf{hotfix}} into {\bf{master}} and {\bf{develop}}}}% Row Count 10 (+ 2) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Initialise a new repo}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Normal}} \newline % Row Count 1 (+ 1) `\$ mkgitrepo -n {\emph{name}}` \newline % Row Count 2 (+ 1) {\bf{Puppet}} \newline % Row Count 3 (+ 1) `\$ mkgitrepo -p -n {\emph{name}}`% Row Count 4 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Normal will create your remote repo in `/opt/git/{\emph{name}}` \newline Puppet will create your remote repo in `/opt/git/puppet/modules/{\emph{name}}`} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Clone an existing repository}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Normal}} \newline % Row Count 1 (+ 1) `\$ git clone git@pviaasfujnov02:/opt/git/{\emph{name}}.git` \newline % Row Count 3 (+ 2) {\bf{Puppet}} \newline % Row Count 4 (+ 1) `\$ git clone git@pviaasfujnov02:/opt/git/puppet/modules/{\emph{name}}.git`% Row Count 6 (+ 2) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Locations for cloning repositories or modules} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Branch checking}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{`\$ git branch -a` \newline % Row Count 1 (+ 1) `* develop` \newline % Row Count 2 (+ 1) ` master` \newline % Row Count 3 (+ 1) ` remotes/origin/develop` \newline % Row Count 4 (+ 1) ` remotes/origin/master`% Row Count 5 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Shows the current remote a local braches} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Switching Branches}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{`git checkout {\emph{branchname}}`% Row Count 1 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Switches to a new branch. In git flow you will want to be working on the develop branch or features branch.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Checking git transactions}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Command Line}} \newline % Row Count 1 (+ 1) `\$ git log` \newline % Row Count 2 (+ 1) {\bf{Terminal Interface}} \newline % Row Count 3 (+ 1) `\$ tig`% Row Count 4 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Status Checking}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{`\$ git status`% Row Count 1 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Shows the status of the current directory} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Commiting}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Adding new files}} \newline % Row Count 1 (+ 1) `\$ git add *` \newline % Row Count 2 (+ 1) {\bf{Committing changes}} \newline % Row Count 3 (+ 1) `\$ git commit -a -m "Change description"`% Row Count 4 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{`git commit -a` will only commit already tracked files. If you create new files you need to use `git add *`} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Git flow Features branch}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Creating Features}} \newline % Row Count 1 (+ 1) `\$ git flow feature start {\emph{"FeatureName"}}` \newline % Row Count 2 (+ 1) {\bf{Publish feature to remote}} \newline % Row Count 3 (+ 1) `\$ git flow feature publish {\emph{"FeatureName"}}` \newline % Row Count 4 (+ 1) {\bf{Get a published feature}} \newline % Row Count 5 (+ 1) `\$ git flow feature pull origin {\emph{"FeatureName"}}` \newline % Row Count 6 (+ 1) {\bf{Finishing a Feature}} \newline % Row Count 7 (+ 1) `\$ git flow feature finish {\emph{"FeatureName"}}`% Row Count 8 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Features are useful for large repositories with multiple files, or repositories where multiple people will be working at the same time.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Git flow Hotfix branch}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Creating a Hotfix}} \newline % Row Count 1 (+ 1) `\$ git flow Hotfix start {\emph{"HotfixName"}}` \newline % Row Count 2 (+ 1) {\bf{Publish Hotfix to remote}} \newline % Row Count 3 (+ 1) `\$ git flow Hotfix publish {\emph{"HotfixName"}}` \newline % Row Count 4 (+ 1) {\bf{Get a published hotfix}} \newline % Row Count 5 (+ 1) `\$ git flow hotfix pull origin {\emph{"HotfixName"}}` \newline % Row Count 6 (+ 1) {\bf{Finishing a Hotfix}} \newline % Row Count 7 (+ 1) `\$ git flow hotfix finish {\emph{"HotfixName"}}`% Row Count 8 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{The hotfix branch is used to create fixes to the master branch, and then merge them back into the develop branch.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Git flow Release branch}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Creating a Release}} \newline % Row Count 1 (+ 1) `\$ git flow Release start {\emph{"ReleaseName"}}` \newline % Row Count 2 (+ 1) {\bf{Publish Release to remote}} \newline % Row Count 3 (+ 1) `\$ git flow Release publish {\emph{"ReleaseName"}}` \newline % Row Count 4 (+ 1) {\bf{Get a published release}} \newline % Row Count 5 (+ 1) `\$ git flow release pull origin {\emph{"ReleaseName"}}` \newline % Row Count 6 (+ 1) {\bf{Finishing a Release}} \newline % Row Count 7 (+ 1) `\$ git flow release finish {\emph{"ReleaseName"}}`% Row Count 8 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{The release branch is used to merge the {\emph{develop}} branch into {\emph{master}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Pushing changes}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{`\$ git push -{}-all`% Row Count 1 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Pushes your changes to the remote repository} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}