Main /

Git Benutzen

Git Benutzen

/ HomePage / Computer / Software / Programmierung / EntwicklerTools / Versionsverwaltung / GitBenutzen

Git

Installation unter Linux (Ubuntu)

Die Installation von git gestaltet sich unter Linux recht einfach.

Unter Ubuntu reicht ein einfaches:

sudo apt-get update
sudo apt-get install git-core

Apt installiert dann git, welches anschließend im Terminal zur Verfügung steht.

Unter Gentoo reicht es das Package git zu emergen

emerge git

Auch unter Gentoo ist git dann ausschließlich im Terminal verfügbar.

Installation unter Windows

Für Windows sollte man sich Git von der offiziellen Homepage herunterladen. Hier empfehle ich die portable Version. Hat man diese entpackt, kann man die Datei git-cm.bat ausführen. Anschließend hat man eine Eingabeaufforderung, in der alle git Befehle zur Verfügung stehen.

Erste Schritte - Personalisieren von Git

Man kann eigentlich sofort mit Git arbeiten. Dennoch sollte man ein paar Einstellungen setzen, damit Commits mit dem eigenen Namen angezeigt werden.

Evtl. Proxy konfigurieren (optional)

In einigen Netzwerken wird die Verbindung zum Internet über einen Proxy Server hergestellt. In diesem Fall muss man Git den Proxy-Server bekannt machen. Dieses geschieht mit folgendem Befehl:

Proxy ohne Authentifizierung

git config --global http.proxy lokalerproxy.com:8080

Proxy mit Authentifizierung

git config --global http.proxy benutzer:passwort@lokalerproxy.com:8080

Eigenen Benutzernamen hinterlegen

Jeder commit sollte mit dem eigenen Namen und E-Mail Adresse gemacht werden. Um diesen für Git zu setzen, findet folgender Befehl Anwendung.

git config --global user.name "Your Name Comes Here"
git config --global user.email you@yourdomain.example.com

Ausgaben hübscher gestalten

Git kann in der Eingabeaufforderung etwas Farbe bekennen. Diese trägt deutlich der Übersicht der Git Ausgaben bei und sollte mit folgenden Befehlen aktiviert werden.

git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto

Git Hilfe aufrufen

Wenn man mal nicht weiter weiß, kann man durch Eingabe von git (ohne Parameter) die Git Kurzhilfe aufrufen. Diese ist sehr hilfsbereit und versucht immer sinnvolle Vorschläge zu unterbreiten:

usage: git [--version] [--exec-path[=<path>]] [--html-path]
[-p|--paginate|--no-pager] [--no-replace-objects]
[--bare] [--git-dir=<path>] [--work-tree=<path>]
[-c name=value] [--help]
<command> [<args>]

The most commonly used git commands are:
add Add file contents to the index
bisect Find by binary search the change that introduced a bug
branch List, create, or delete branches
checkout Checkout a branch or paths to the working tree
clone Clone a repository into a new directory
commit Record changes to the repository
diff Show changes between commits, commit and working tree, etc
fetch Download objects and refs from another repository
grep Print lines matching a pattern
init Create an empty git repository or reinitialize an existing one
log Show commit logs
merge Join two or more development histories together
mv Move or rename a file, a directory, or a symlink
pull Fetch from and merge with another repository or a local branch
push Update remote refs along with associated objects
rebase Forward-port local commits to the updated upstream head
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
show Show various types of objects
status Show the working tree status
tag Create, list, delete or verify a tag object signed with GPG

See 'git help <command>' for more information on a specific command.
git add
Nothing specified, nothing added.
Maybe you wanted to say 'git add .'?

Ein eigenes Repository erstellen

Sind alle Schritte soweit durchgeführt worden, kann man ein neues Repository erstellen. Dafür legen wir uns einen neuen Ordner an oder wechseln in einen Ordner, dessen Inhalt wir unter die Quellcodeverwaltung von Git stellen möchten.

cd FirstGitProject
git init .
git add .
git commit -a -m "initial commit"

"git init ." erstellt ein leeres Git Repository im aktuellen Verzeichnis. "git add ." fügt alle im Verzeichnis vorhandenen Dateien der Versionsverwaltung hinzu. "git commit -a -m" führt einen lokalen commit durch und versioniert damit den aktuell im Verzeichnis befindlichen Stand. Die letzten beiden Befehle solltest Du dir merken.

Ein zentrales Repository anlegen

Eigentlich gibt es kein zentrales Repository bei git, jeder hat sein eigenes, um die Arbeit aber zu erleichtern, legt man doch irgendwo an zentraler Stelle ein Repository für alle Benutzer an, von dem dann alle clonen. Dazu legt man ein Repository mit git init --bare an und verschiebt dies auf den entfernten Rechner, oder legt es gleich dort an.

Man kann auch sein eigenes/lokales Repository irgendwo zentral ablegen, so dass alle es als zentrales Repository nutzen. Allerdings motzt git beim push dann rum.

 remote: error: refusing to update checked out branch: refs/heads/master
 remote: error: By default, updating the current branch in a non-bare repository
 remote: error: is denied, because it will make the index and work tree inconsistent
 remote: error: with what you pushed, and will require 'git reset --hard' to match
 remote: error: the work tree to HEAD.
 ...

Das kann man umgehen, indem man im zentralen Repository in der Datei .git/config folgendes einfügt:

 [receive]
	denyCurrentBranch = ignore

Jetzt wird ignoriert, das die vorhandenen Sourcen und der .git/* Content auseinander laufen.

Ein fremdes Repository auschecken/clonen

Möchte man ein entferntes Repository auschecken/clonen, dann verwendet man folgenden Befehl. Da es sich bei Git um eine dezentrale Versionsverwaltung handelt, werden commits immer nur in der lokalen Kopie gemacht und stehen erst mal nur einem selbst zur Verfügung. Daher trifft der Begriff clone eher zu, als der Begriff auschecken.

# Clone a remote repository
git clone http://git.kernel.org/pub/scm/git/git.git

Initialized empty Git repository in S:/_sourcecode/test/git/.git/
remote: Counting objects: 119710, done.
remote: Compressing objects: 100% (29766/29766), done.
remote: Total 119710 (delta 88430), reused 119423 (delta 88155)
Receiving objects: 100% (119710/119710), 24.75 MiB | 2.99 MiB/s, done.
Resolving deltas: 100% (88430/88430), done.
Checking out files: 100% (1902/1902), done.

Changeset erstellen und einpflegen

git erlaubt es sog. Changesets zu erstellen.

git log -10
commit bf28d7a5d610fccf060fab8546d3f9a69a5ae95a
...

Gibt z.B. die letzten 10 log aus, zusätzlich die commit hashes. Und die werden gebraucht.

git diff <älterer Hash> <neuerer Hash>

Gibt die Differenz im patch format aus (Zeilen mit '-' am Anfang werden entfernt, Zeilen mit '+' am Anfang werden hinzugefügt) Es werden immer 3 Zeilen über und 3 Zeilen unter der eigentlichen Änderung mit ausgegeben, so kann patch auch noch arbeiten, wenn es schon andere Änderungen an den Sourcen gibt.

Tip: Von den Commit hashes braucht man meist nur die ersten 7-8 Zeichen einzugeben, um diese eindeutig zu identifizieren.

Den Output kann man auch in eine patch Datei redirekten ( >/c/temp/datei.patch ) anhängen.

Zum Einfügen bindet man den Patch wieder ein mit:

patch -p1 </c/temp/datei.patch

Gibt es dabei Fehler, fangen die Patches an auseinander zu laufen, dann hilft evtl. gesunder Menschenverstand und ein guter Compiler.

So lassen sich einfachst Änderungen an beliebig vielen Dateien in einem Patch zwischen den Repositories hin und her schieben. Wenn die Sourcen allerdings schon zu stark auseinander gelaufen sind, braucht man keine Diffs mehr, sondern die gesamten Dateien.

Wer dem nicht traut, (git stash) ist ein Freund

Anwenden

 Wiederfinden von Änderungen im git GitDurchsuchen

Rechte unter Windows setzen

Unter Linux brauchen Programme/Scripte spezielle Rechte um ausgeführt werden zu dürfen. Das sog. Executable Flag x unter Linux zu setzen mit chmod unter Windows gibt es das nicht, da gibt es sehr viel feingranularere Regeln. Nevertheless um diese Rechte zu setzen gibt es unter Git folgendes:

 git update-index --chmod=+x <file>

Merge Fehler beheben

tbc...

Anwendungen

Es gibt eine sehr schöne Anwendung für Git von Atlassian mit Namen SourceTree damit lassen sich viele Git Repositorys verwalten, alles wird grafisch hübsch dargestellt.

Leider gibt es SourceTree nicht für Linux. Als Ersatz bietet sich SmartGit an.

Links

Frische Änderungen | Menü editieren
zuletzt geändert am 07.11.2016 11:41 Uhr von Lars
Edit Page | Page History