Added chapter about gitignore
This commit is contained in:
parent
2e9302476e
commit
e8e51b27d8
277
Git.tex
277
Git.tex
@ -6,14 +6,17 @@
|
||||
\usepackage{float}
|
||||
\usepackage{german}
|
||||
\usepackage{ae}
|
||||
\usepackage{alltt}
|
||||
\usepackage{amssymb}
|
||||
|
||||
\usepackage[latin1]{inputenc} % Umlaute und dt. Zeichen Kodieren
|
||||
\usepackage[utf8]{inputenc} % Umlaute und dt. Zeichen Kodieren
|
||||
|
||||
% ae.sty verwenden!
|
||||
\usepackage[T1]{fontenc} % ec* Schriftarten verwenden
|
||||
|
||||
\usepackage{times} % Times-Schriftart (pdf)
|
||||
\usepackage{calc}
|
||||
\usepackage{lmodern}
|
||||
|
||||
\setcounter{secnumdepth}{4}
|
||||
\setcounter{tocdepth}{4}
|
||||
@ -690,7 +693,7 @@ Date: Thu Mar 22 15:07:54 2018 +0100
|
||||
Blah
|
||||
|
||||
commit 19a30b330ab250a6d3ab3f0a9ecf1c6d9b2d9fd5
|
||||
Author: Hauke Zühl <hzuehl@phone-talk.net>
|
||||
Author: Hauke Zühl <hzuehl@phone-talk.net>
|
||||
Date: Thu Mar 22 13:40:59 2018 +0100
|
||||
|
||||
LIESMICH angelegt
|
||||
@ -727,6 +730,276 @@ ein sch"ones Log auf den Bildschirm. Und wenn du die Kurzform
|
||||
der Commits haben willst, dann bringt dich
|
||||
\textit{git log --abbrev-commit --graph} ans Ziel.
|
||||
|
||||
\chapter{Ignorieren von Dateien}
|
||||
Ich starte mal mit einem Beispiel, um zu zeigen, was das Problem ist:\\
|
||||
Wir gehen jetzt davon aus, dass wir ein C++-Projekt compilieren, d.h.
|
||||
aus dem Quellcode ein Programm ``basteln'' wollen. Wenn du dich damit
|
||||
nicht auskennst, ist das nicht schlimm, es geht um Dateien und nicht um
|
||||
irgendwelche freakigen Sachen.\\
|
||||
Zuerst der Verzeichnisbaum eines ``frischen'' Repos:
|
||||
\begin{alltt}
|
||||
hauke@apollo:~/git/Lara$ tree .
|
||||
.
|
||||
\textbar\textendash\textendash CMakeLists.txt
|
||||
\textbar\textendash\textendash Doxyfile
|
||||
\textbar\textendash\textendash README.md
|
||||
\textbar\textendash\textendash sql
|
||||
\textbar\ \ \textbar\textendash\textendash address.sql
|
||||
\textbar\ \ \(\llcorner\)\textendash\textendash customer.sql
|
||||
\(\llcorner\)\textendash\textendash src
|
||||
\textbar\textendash\textendash addons
|
||||
\textbar\ \ \textbar\textendash\textendash Address
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash AddressAddon.cc
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash AddressAddon.h
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash AddressMainWindow.cc
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash AddressMainWindow.h
|
||||
\textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash CMakeLists.txt
|
||||
\textbar\ \ \(\llcorner\)\textendash\textendash CMakeLists.txt
|
||||
\textbar\textendash\textendash CMakeLists.txt
|
||||
\textbar\textendash\textendash core
|
||||
\textbar\ \ \textbar\textendash\textendash Addon.h
|
||||
\textbar\ \ \textbar\textendash\textendash Base.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Base.h
|
||||
\textbar\ \ \textbar\textendash\textendash CMakeLists.txt
|
||||
\textbar\ \ \textbar\textendash\textendash Config.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Config.h
|
||||
\textbar\ \ \textbar\textendash\textendash Convert.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Convert.h
|
||||
\textbar\ \ \textbar\textendash\textendash Database.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Database.h
|
||||
\textbar\ \ \textbar\textendash\textendash Files.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Files.h
|
||||
\textbar\ \ \textbar\textendash\textendash IDatabase.cc
|
||||
\textbar\ \ \textbar\textendash\textendash IDatabase.h
|
||||
\textbar\ \ \textbar\textendash\textendash Lara.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Lara.h
|
||||
\textbar\ \ \textbar\textendash\textendash Loader.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Loader.h
|
||||
\textbar\ \ \textbar\textendash\textendash Map.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Map.h
|
||||
\textbar\ \ \textbar\textendash\textendash models
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash Address.h
|
||||
\textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash Customer.h
|
||||
\textbar\ \ \(\llcorner\)\textendash\textendash UserData.h
|
||||
\textbar\textendash\textendash GUI
|
||||
\textbar\ \ \textbar\textendash\textendash CMakeLists.txt
|
||||
\textbar\ \ \textbar\textendash\textendash MainWindow.cc
|
||||
\textbar\ \ \(\llcorner\)\textendash\textendash MainWindow.h
|
||||
\(\llcorner\)\textendash\textendash main.cc
|
||||
|
||||
7 directories, 39 files
|
||||
\end{alltt}
|
||||
Ein ``git status'' s"ahe so aus:
|
||||
\begin{verbatim}
|
||||
hauke@apollo:~/git/Lara$ git status
|
||||
Auf Branch develop
|
||||
Ihr Branch ist auf dem selben Stand wie 'origin/develop'.
|
||||
nichts zu committen, Arbeitsverzeichnis unverändert
|
||||
hauke@apollo:~/git/Lara$
|
||||
\end{verbatim}
|
||||
|
||||
Um dieses Projekt zu compilieren, muss ich folgende Schritte
|
||||
durchf"uhren:
|
||||
\begin{itemize}
|
||||
\item mkdir build
|
||||
\item cd build
|
||||
\item cmake ../
|
||||
\item make
|
||||
\end{itemize}
|
||||
Das heisst, ich erzeuge ein neues Verzeichnis namens ``build'',
|
||||
wechsele in das dortige Verzeichnis, f"uhre ein wenig Magie aus
|
||||
und am Ende f"allt das fertige Programm im Unterverzeichnis ``src''
|
||||
raus.\\
|
||||
Wenn ich das alles gemacht habe, sieht der Verzeichnisbaum so aus:
|
||||
\begin{alltt}
|
||||
.
|
||||
\textbar\textendash\textendash build
|
||||
\textbar\ \ \textbar\textendash\textendash CMakeCache.txt
|
||||
\textbar\ \ \textbar\textendash\textendash CMakeFiles
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash 2.8.12.2
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeCCompiler.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeCXXCompiler.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeDetermineCompilerABI\_C.bin
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeDetermineCompilerABI\_CXX.bin
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeSystem.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CompilerIdC
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash a.out
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash CMakeCCompilerId.c
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash CompilerIdCXX
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash a.out
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash CMakeCXXCompilerId.cpp
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash cmake.check\_cache
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeDirectoryInformation.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeOutput.log
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeTmp
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash Makefile2
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash Makefile.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash progress.marks
|
||||
\textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash TargetDirectories.txt
|
||||
\textbar\ \ \textbar\textendash\textendash cmake\_install.cmake
|
||||
\textbar\ \ \textbar\textendash\textendash Makefile
|
||||
\textbar\ \ \(\llcorner\)\textendash\textendash src
|
||||
\textbar\ \ \textbar\textendash\textendash addons
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash Address
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash address.so
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeFiles
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash address.dir
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash AddressAddon.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash AddressMainWindow.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash build.make
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash cmake_clean.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CXX.includecache
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash DependInfo.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash depend.internal
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash depend.make
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash flags.make
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash link.txt
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash progress.make
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeDirectoryInformation.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash progress.marks
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash cmake\_install.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash Makefile
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeFiles
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeDirectoryInformation.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash progress.marks
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash cmake\_install.cmake
|
||||
\textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash Makefile
|
||||
\textbar\ \ \textbar\textendash\textendash CMakeFiles
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash CMakeDirectoryInformation.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash lara.dir
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash build.make
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash cmake\_clean.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash core
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash Base.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash Config.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash Convert.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash Database.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash Files.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash IDatabase.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash Lara.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash Loader.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash Map.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash CXX.includecache
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash DependInfo.cmake
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash depend.internal
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash depend.make
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash flags.make
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash GUI
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash MainWindow.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash link.txt
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \textbar\textendash\textendash main.cc.o
|
||||
\textbar\ \ \textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash progress.make
|
||||
\textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash progress.marks
|
||||
\textbar\ \ \textbar\textendash\textendash cmake\_install.cmake
|
||||
\textbar\ \ \textbar\textendash\textendash lara
|
||||
\textbar\ \ \(\llcorner\)\textendash\textendash Makefile
|
||||
\textbar\textendash\textendash CMakeLists.txt
|
||||
\textbar\textendash\textendash Doxyfile
|
||||
\textbar\textendash\textendash README.md
|
||||
\textbar\textendash\textendash sql
|
||||
\textbar\ \ \textbar\textendash\textendash address.sql
|
||||
\textbar\ \ \(\llcorner\)\textendash\textendash customer.sql
|
||||
\(\llcorner\)\textendash\textendash src
|
||||
\textbar\textendash\textendash addons
|
||||
\textbar\ \ \textbar\textendash\textendash Address
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash AddressAddon.cc
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash AddressAddon.h
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash AddressMainWindow.cc
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash AddressMainWindow.h
|
||||
\textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash CMakeLists.txt
|
||||
\textbar\ \ \(\llcorner\)\textendash\textendash CMakeLists.txt
|
||||
\textbar\textendash\textendash CMakeLists.txt
|
||||
\textbar\textendash\textendash core
|
||||
\textbar\ \ \textbar\textendash\textendash Addon.h
|
||||
\textbar\ \ \textbar\textendash\textendash Base.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Base.h
|
||||
\textbar\ \ \textbar\textendash\textendash CMakeLists.txt
|
||||
\textbar\ \ \textbar\textendash\textendash Config.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Config.h
|
||||
\textbar\ \ \textbar\textendash\textendash Convert.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Convert.h
|
||||
\textbar\ \ \textbar\textendash\textendash Database.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Database.h
|
||||
\textbar\ \ \textbar\textendash\textendash Files.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Files.h
|
||||
\textbar\ \ \textbar\textendash\textendash IDatabase.cc
|
||||
\textbar\ \ \textbar\textendash\textendash IDatabase.h
|
||||
\textbar\ \ \textbar\textendash\textendash Lara.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Lara.h
|
||||
\textbar\ \ \textbar\textendash\textendash Loader.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Loader.h
|
||||
\textbar\ \ \textbar\textendash\textendash Map.cc
|
||||
\textbar\ \ \textbar\textendash\textendash Map.h
|
||||
\textbar\ \ \textbar\textendash\textendash models
|
||||
\textbar\ \ \textbar\ \ \textbar\textendash\textendash Address.h
|
||||
\textbar\ \ \textbar\ \ \(\llcorner\)\textendash\textendash Customer.h
|
||||
\textbar\ \ \(\llcorner\)\textendash\textendash UserData.h
|
||||
\textbar\textendash\textendash GUI
|
||||
\textbar\ \ \textbar\textendash\textendash CMakeLists.txt
|
||||
\textbar\ \ \textbar\textendash\textendash MainWindow.cc
|
||||
\textbar\ \ \(\llcorner\)\textendash\textendash MainWindow.h
|
||||
\(\llcorner\)\textendash\textendash main.cc
|
||||
|
||||
23 directories, 103 files
|
||||
\end{alltt}
|
||||
|
||||
Du siehst den Unterschied!\\
|
||||
|
||||
Git w"urde jetzt also alle ``neuen'' Datein unterhalb von build finden
|
||||
und nat"urlich daraus schliessen, dass man diese auch ins Repo
|
||||
aufnehmen will:
|
||||
\begin{verbatim}
|
||||
Auf Branch develop
|
||||
Ihr Branch ist auf dem selben Stand wie 'origin/develop'.
|
||||
Unversionierte Dateien:
|
||||
(benutzen Sie "git add <Datei>...", um die Änderungen zum Commit vorzumerken)
|
||||
|
||||
build/
|
||||
|
||||
keine Änderungen zum Commit vorgemerkt (benutzen Sie "git add" und/oder "git commit -a")
|
||||
\end{verbatim}
|
||||
|
||||
Nein! Will man nicht!\\
|
||||
Man h"atte jetzt den ganzen unn"utzen ``M"ull'' f"ur eine bestimmte
|
||||
Plattform und das ist nicht Sinn eines Quellcode Repositories.\\
|
||||
Ergo m"ussen wir daf"ur sorgen, dass git nicht nervt, wenn wir auf
|
||||
unserem Rechner das Programm bauen wollen. Dazu soll git also das
|
||||
gesamte Verzeichnis ``build'', mit allen Dateien und Unterverzeichnissen
|
||||
ignorieren.\\
|
||||
Dazu erstellen wir im Hauptverzeichnis unseres Repos die Datei
|
||||
``.gitignore'' (man beachte den Punkt vor dem Dateinamen). Die
|
||||
sieht dann so aus:
|
||||
\begin{verbatim}
|
||||
build/
|
||||
\end{verbatim}
|
||||
|
||||
Wenn wir jetzt ``git status'' machen, sieht das so aus:
|
||||
\begin{verbatim}
|
||||
Auf Branch develop
|
||||
Ihr Branch ist auf dem selben Stand wie 'origin/develop'.
|
||||
nichts zu committen, Arbeitsverzeichnis unverändert
|
||||
\end{verbatim}
|
||||
|
||||
Cool! Genau das, was wir haben wollen! Das Verzeichnis ``build'' wird
|
||||
von git ignoriert.\\
|
||||
\\
|
||||
Ein weiteres Beispiel:\\
|
||||
Unter MacOS wird gerne die Datei ``.DS\_Store'' angelegt. Da diese
|
||||
Datei f"ur Nutzer anderer Systeme uninteressant, ja sogar nervig
|
||||
ist, sollte man also, wenn Maccies mit im Team sind, in die
|
||||
.gitignore die Datei aufnehmen. Dann sieht also die .gitignore
|
||||
f"ur unser C++-Projekt so aus:
|
||||
\begin{verbatim}
|
||||
build/
|
||||
.DS_Store
|
||||
\end{verbatim}
|
||||
|
||||
Je nach Projekt, Programmiersprache, verwendetem Editor, oder
|
||||
verwendeter IDE gibt es noch weitere Dateien, die f"ur andere
|
||||
uninteressant oder unwichtig sind. Diese k"onnen dann nach
|
||||
und nach in die .gitignore aufgenommen werden, wobei nat"urlich
|
||||
auch Wildcards verwendet werden k"onnen.
|
||||
|
||||
\chapter{GIT in IDEs}
|
||||
Die meisten IDEs bringen inzwischen Unterst"utzung f"ur GIT mit.\\
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user