854 Stimmen

Git für Anfänger: Der endgültige praktische Leitfaden

Ok, nachdem ich dieser Beitrag von PJ Hyett habe ich beschlossen, das Ende zu überspringen und mit Git .

Was ich also brauche, ist ein Anfängerhandbuch praktisch Anleitung zu Git. "Anfänger" wird definiert als jemand, der weiß, wie man mit seinem Compiler umgeht, der einigermaßen versteht, was ein Makefile ist, und hat die Versionskontrolle angefasst, ohne sie sehr gut zu verstehen.

"Praktisch" bedeutet, dass diese Person nicht ins Detail gehen möchte, was Git im Hintergrund tut, und sich nicht einmal darum kümmert (oder weiß), dass es verteilt ist. Ihre Antworten könnten die Möglichkeiten andeuten, aber versuchen Sie, auf den Anfänger abzuzielen, der ein "Haupt"-Repository auf einem "Server" haben möchte, das gesichert und sicher ist, und sein lokales Repository lediglich als "Client"-Ressource behandelt.

Also:

Installation/Einrichtung

Arbeiten mit dem Code

Kennzeichnung, Verzweigung, Veröffentlichungen, Baselines

Andere

  • Beschreiben Sie eine gute grafische Benutzeroberfläche, ein IDE-Plugin usw., das Git zu einer Ressource macht, die nicht auf der Kommandozeile läuft, und verlinken Sie auf diese, führen Sie aber auch die Vorteile und Einschränkungen auf.
    • msysgit - Plattformübergreifend, mit Git enthalten
    • gitk - Plattformübergreifender Verlaufsbetrachter, enthalten in Git
    • gitnub - Mac OS X
    • gitx - Mac OS X Verlaufsanzeige
    • smartgit - Plattformübergreifend, kommerziell, Beta
    • tig - Konsolen-GUI für Linux
    • qgit - GUI für Windows, Linux
    • Git-Erweiterungen - Paket für Windows, enthält freundliche GUI
  • Gibt es noch andere allgemeine Aufgaben, die ein Anfänger kennen sollte?
  • Wie kann ich effektiv mit einem Subversion-Repository arbeiten, das als Quelle für die Versionskontrolle festgelegt wurde?

Andere Referenzen für Git-Anfänger

Eintauchen in Git

Ich werde die Einträge von Zeit zu Zeit durchgehen und sie "aufräumen", damit sie ein einheitliches Aussehen haben und die Liste leicht zu überblicken ist. Ich werde auch einen Link zu den Einträgen in der Aufzählung oben einfügen, damit man sie später leicht wiederfindet.

33voto

dbr Punkte 158949

So installieren Sie Git

Unter Windows:

Installieren Sie msysgit

Es gibt mehrere Downloads:

  • Git: Verwenden Sie diese Option, es sei denn, Sie benötigen ausdrücklich eine der anderen unten aufgeführten Möglichkeiten.
  • PortableGit: Verwenden Sie diese Option, wenn Sie Git auf einem PC ausführen möchten, ohne es auf diesem PC zu installieren (z. B. wenn Sie Git von einem USB-Laufwerk ausführen möchten)
  • msysGit: Verwenden Sie dies, wenn Sie Git selbst entwickeln wollen. Wenn Sie Git nur verwenden wollen für Ihr Quellcode, aber nicht bearbeiten wollen Git's Quellcode, brauchen Sie das nicht.

Dadurch wird auch eine Cygwin-Bash-Shell installiert, so dass Sie die git in einer schöneren Shell (als cmd.exe), und enthält auch git-gui (erreichbar über git gui oder den Befehl Start > All Programs > Git Menü)

Mac OS X

Verwenden Sie die git-osx-installer oder Sie können auch von der Quelle installieren

Über einen Paketmanager

Installieren Sie git mit Ihrem nativen Paketmanager. Zum Beispiel unter Debian (oder Ubuntu):

apt-get install git-core

Oder unter Mac OS X, über MacPorts :

sudo port install git-core+bash_completion+doc

oder fink:

fink install git

oder Selbstgebrautes :

brew install git

Auf Red-Hat-basierten Distributionen, wie Fedora:

yum install git

In Cygwin ist das Git-Paket unter dem Abschnitt "devel" zu finden

Aus der Quelle (Mac OS X/Linux/BSD/etc.)

Unter Mac OS X können Sie Git sehr einfach aus dem Quellcode kompilieren, wenn Sie die Developer Tools installiert haben. Laden Sie die neueste Version von Git als .tar.bz o .tar.gz de http://git-scm.com/ und entpacken Sie es (Doppelklick im Finder)

Unter Linux/BSD/etc. sollte es in etwa gleich sein. Unter Debian (und Ubuntu) müssen Sie zum Beispiel das build-essential Paket über apt .

Dann in einem Terminal, cd zu dem Ort, an den Sie die Dateien extrahiert haben (Running cd ~/Downloads/git*/ sollte funktionieren), und dann ausführen.

./configure && make && sudo make install

Dadurch wird Git an der Standardposition installiert ( /usr/local - also git wird in /usr/local/bin/git )

Sie werden aufgefordert, Ihr Passwort einzugeben (für sudo ), damit es in die Datei /usr/local/ Verzeichnis, auf das nur der Benutzer "Root" zugreifen kann, also ist sudo erforderlich!

Wenn Sie es an einem separaten Ort installieren möchten (damit die Dateien von Git nicht mit anderen Tools vermischt werden), verwenden Sie --prefix mit dem Befehl configure:

./configure --prefix=/usr/local/gitpath
make
sudo make install

Dadurch wird die git binär in /usr/local/bin/gitpath/bin/git - damit Sie das nicht jedes Mal eintippen müssen, sollten Sie in Ihrem $PATH durch Hinzufügen der folgenden Zeile in Ihr ~/.profile :

export PATH="${PATH}:/usr/local/bin/gitpath/bin/"

Wenn Sie keinen sudo-Zugang haben, können Sie --prefix=/Users/myusername/bin und installieren Sie es in Ihrem Heimatverzeichnis. Denken Sie daran, Folgendes hinzuzufügen ~/bin/ a $PATH

Das Drehbuch x-git-update-to-latest-version automatisiert einen Großteil dieser Vorgänge:

Dieses Skript aktualisiert meinen lokalen Klon des Git-Repos (localy unter ~/work/track/git ), und konfiguriert und installiert (unter /usr/local/git - git describe ) und aktualisiert die /usr/local/git symlink.

Auf diese Weise kann ich /usr/local/git/bin in meinem PATH und ich benutze immer die neueste Version.

In der neuesten Version dieses Skripts werden auch die Manpages installiert. Sie müssen Ihr MANPATH zur Aufnahme der /usr/local/git/share/man Verzeichnis.

5 Stimmen

Unter Fedora: yum install git . Für die GUI führen Sie yum install git-gui .

2 Stimmen

Auf dem Mac, sudo port install git-core+bash_completion+doc

0 Stimmen

Ich habe fink für Mac heruntergeladen, aber wenn ich fink install git ausführe, bekomme ich eine Fehlermeldung: "Fehlgeschlagen: kein Paket für die Spezifikation 'git' gefunden!"

32voto

Dean Rather Punkte 30466

Git Reset

Angenommen, Sie machen einen Pull, fügen ihn in Ihren Code ein und entscheiden, dass er Ihnen nicht gefällt. Benutzen Sie git-log oder tig und finden Sie den Hash der Stelle, zu der Sie zurückgehen wollen (wahrscheinlich Ihr letzter Commit vor dem Pull/Merge), kopieren Sie den Hash und tun Sie es:

# Revert to a previous commit by hash:
git-reset --hard <hash>

Anstelle des Hashes können Sie auch HEAD^ als Abkürzung für die vorherige Übergabe.

# Revert to previous commit:
git-reset --hard HEAD^

4 Stimmen

Dies ist das Analogon zu einem Revert in den meisten anderen zentralisierten Versionskontrollsystemen.

0 Stimmen

"$ git-reset --hard HEAD^" sollte eine Abkürzung für den Elternteil von head sein (d.h. den vorherigen Zustand vor der letzten Übertragung).

6 Stimmen

Nur ein einfacher alter git reset sollte die Bühne zufällig verlassen git add

31voto

Asgeir S. Nilsen Punkte 1147

Wie richtet man ein gemeinsames Team-Repository ein?

Wie man eine normal Repository wird beschrieben aquí -- aber wie richtet man ein Team-Repository ein, aus dem jeder schöpfen und in das jeder pushen kann?

Verwendung eines gemeinsamen NFS-Dateisystems

Angenommen, Ihr Team verfügt bereits über eine gemeinsame Gruppenmitgliedschaft, die genutzt werden kann.

mkdir /your/share/folder/project.git
cd /your/share/folder/project.git
newgrp yourteamgroup # if necessary
git init --bare --shared

Um mit diesem Repository zu beginnen, ist es am einfachsten, von einem lokalen Repository auszugehen, das Sie bereits verwendet haben:

cd your/local/workspace/project
git remote add origin /your/share/folder/project.git
git push origin master

Andere können dies nun nachahmen und mit der Arbeit beginnen:

cd your/local/workspace
git clone /your/share/folder/project.git

SSH verwenden

Richten Sie ein Benutzerkonto auf dem Zielserver ein. Ob Sie ein Konto ohne Passwort, ein Konto mit Passwort oder ein authorized_keys hängt wirklich von dem von Ihnen gewünschten Sicherheitsniveau ab. Werfen Sie einen Blick auf Git über SSH konfigurieren für einige weitere Informationen.

Wenn alle Entwickler das gleiche Konto für den Zugriff auf dieses gemeinsame Repository verwenden, müssen Sie nicht die --shared Option wie oben.

Nachdem Sie das Repository wie oben beschrieben angelegt haben, führen Sie den ersten Push wie folgt durch:

cd your/local/workspace/project
git remote add origin user@server:/path/to/project.git
git push origin master

Sehen Sie die Ähnlichkeit mit dem oben Gesagten? Das einzige, was zusätzlich passieren könnte, ist, dass SSH nach einem Passwort fragt, wenn das Konto ein Passwort hat. Wenn Sie diese Aufforderung bei einem Konto ohne Passwort erhalten, hat der SSH-Server wahrscheinlich die Funktion PermitEmptyPasswords .

Das Klonen sieht nun wie folgt aus:

cd your/local/workspace
git clone user@server:/path/to/project.git

0 Stimmen

Neben NFS - wie richtet man einen Git-Server ein, der über SSH funktioniert? - Wie eine kleine Instanz von github.com?

0 Stimmen

Ist es notwendig, ein Gruppen-Sticky-Bit für die entsprechenden Verzeichnisse zu setzen, oder kümmert sich Git um all das? Wenn letzteres der Fall ist, woher weiß Git, welche Gruppe es für die Berechtigungen für die Unix-Dateien verwenden soll?

0 Stimmen

Ich habe wie gewünscht einen Abschnitt über SSH hinzugefügt. Das Sticky-Bit wird benötigt, wenn nicht alle Entwickler die gemeinsame Gruppe als ihre primäre Gruppe haben. Wenn einer der Benutzer eine andere primäre Gruppe hat, würden sie standardmäßig Dateien mit dem Eigentum dieser Gruppe erstellen. Dies geschieht unterhalb von Git und unterliegt daher nicht immer der Kontrolle von Git.

28voto

Peter Burns Punkte 43323

git status ist dein Freund, benutze ihn oft. Gut für die Beantwortung von Fragen wie:

  • Was hat dieser Befehl gerade getan?
  • In welcher Branche bin ich?
  • Welche Änderungen werde ich vornehmen, und habe ich etwas vergessen?
  • War ich beim letzten Mal, als ich an diesem Projekt gearbeitet habe (vor Tagen, Wochen oder vielleicht Monaten), gerade mit etwas beschäftigt?

Im Gegensatz zu, sagen wir svn status , git status läuft auch bei großen Projekten in kürzester Zeit. Als ich Git lernte, fand ich es oft beruhigend, es häufig zu benutzen, um sicherzugehen, dass mein mentales Modell von dem, was vor sich ging, korrekt war. Jetzt verwende ich es meist nur noch, um mich daran zu erinnern, was ich seit meinem letzten Commit geändert habe.

Natürlich ist es viel nützlicher, wenn Ihre .gitignore vernünftig konfiguriert ist.

27voto

Adam Davis Punkte 89506

Änderungen bestätigen

Wenn Sie eine Datei bearbeitet haben, müssen Sie Ihre Änderungen an Git übergeben. Wenn Sie diesen Befehl ausführen, werden Sie nach einer Commit-Nachricht gefragt - das ist nur ein einfacher Text, der allen mitteilt, was Sie geändert haben.

$ git commit source/main.c

Wird die Datei main.c im Verzeichnis ./source/ übertragen

$ git commit -a # the -a flag pulls in all modified files

überträgt alle geänderten Dateien (nicht aber neue Dateien, diese müssen mit git-add in den Index aufgenommen werden). Wenn Sie nur bestimmte Dateien übertragen wollen, müssen Sie diese zunächst mit git-add bereitstellen und dann ohne die Option -a übertragen.

Ein Commit ändert nur Ihr lokales Repository, nicht aber die entfernten Repositories. Wenn Sie die Commits an das entfernte Repository senden wollen, müssen Sie einen Push durchführen.

$ git push <remote> <branch> # push new commits to the <branch> on the <remote> repository

Für jemanden, der von CVS oder SVN kommt, ist dies eine Änderung, da die Übergabe an das zentrale Repository nun zwei Schritte erfordert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X