Um Git lediglich lokal zu verwenden kann einfach mittels
\begin{lstlisting}
$ git init reponame
\end{lstlisting}
ein neues Repository namens \textsl{reponame} erzeugt werden.
\section*{Git mit einem Server verwenden}
Meistens bekommt man jedoch eine git URL wenn man an einem Projekt mitarbeiten möchte. Mann kann sich auch ein Repository bei einem der folgenden Anbieter holen:
\begin{itemize}
\item Github.com
\item BitBucket.org
\end{itemize}
Um an einem Projekt mitzuarbeiten Klont man das Repo wie folgt:
\begin{lstlisting}
$ git clone [proto://][user]@[server]:[pfad]
\end{lstlisting}
Bei einigen URLs wird noch ein Protokoll angegeben, z.B. https:// oder git://.
Wird https verwendet ist das Repo nur lesbar geklont, es kann nichts hochgeladen werden.
\section*{SSH-Key}
Wer schon mal mit SSH gearbeitet, oder den Workshop besucht hat weiß es gibt SSH-Keys, die eine sicherere Verbindung ermöglichen, und auch den User besser Identifizieren als ein Login mittels Passwort. In den meisten fällen arbeitet git über SSH, daher kann man auch bei git diesen SSH-Key benutzen.\\
Dabei kann man einen bestehenden Key benutzen oder sich wie folgt einen neuen generieren:
\begin{lstlisting}
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/[yourUser]/.ssh/id\_rsa):
/home/[yourUser]/.ssh/git
\end{lstlisting}
Den Inhalt der dabei erzeugten Datei /home/\textsl{[yourUser]}/.ssh/git.pub kann man nun bei dem Hoster hochladen oder dem Administrator des git per mail zukommen lassen.\\
Man kann SSH (und damit auch git) noch mitteilen, welchen Key es verwenden soll, falls nicht der Standardkey verwendet wird. Dafür ergänzt du die Datei $\sim/.ssh/config$ um folgendes:
\begin{lstlisting}[language=bash,caption={}]
Host [server]
HostName [server]
User [user]
IdentityFile ~/.ssh/git
\end{lstlisting}
wobei du server und user aus der URL entnimmst und die IdentityFile mit dem ssh-keygen abgleichst.
Daten von dem Dateisystem in das Repository schreiben
\begin{lstlisting}
$ git pull
\end{lstlisting}
Daten vom Server anfordern
\begin{lstlisting}
$ git push
\end{lstlisting}
Repository auf den Server übertragen
\begin{lstlisting}
$ git add FILE
\end{lstlisting}
Datei/Ordner zu einem Repository hinzufügen
\begin{lstlisting}
$ git mv FROM TO
\end{lstlisting}
Datei im Dateisystem und im Repository verschieben
\begin{lstlisting}
$ git rm FILE
\end{lstlisting}
Datei im Dateisystem und im Repository löschen
\begin{lstlisting}
$ git status
\end{lstlisting}
Gibt den aktuellen Status des Repositorys im Vergleich zum Dateisystem aus
\begin{lstlisting}
$ git log
\end{lstlisting}
Gibt eine Liste aller “Commits” aus
\begin{lstlisting}
$ git diff
\end{lstlisting}
Zeigt Unterschiede seit dem letzten Commit an
\begin{lstlisting}
$ git reset TO-COMMIT-HASH
\end{lstlisting}
Setzt das Repository auf eine frühere Version zurück
\begin{lstlisting}
$ git --help
$ git [kommando] --help
\end{lstlisting}
Gibt weitere Infos
\section*{Dateien ignorieren}
Es ist zudem möglich Dateien zu ignorieren indem man folgende Datei anlegt: $.gitignore$
\begin{lstlisting}
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
\end{lstlisting}
Es können Beispielsweise Wildcards verwendet werden um, wie im Beispiel, alle Dateien mit der Endung \textquotedblleft.class\textquotedblright zu ignorieren. Zeilen die mit einem Hashtag beginnen sind lediglich Kommentare die von GIT ignoriert werden.
Diese Datei sollte mit in das Repository gelegt werden und gilt für alle Unterverzeichnisse.