remove - git update tag




Git für Anfänger: Der definitive praktische Leitfaden (20)

Ok, nachdem ich diesen Post von PJ Hyett gesehen habe , habe ich beschlossen, zum Ende zu springen und mit Git gehen.

Was ich also brauche, ist ein praktischer Führer für Git. "Anfänger" wird definiert als jemand, der weiß, wie er mit seinem Compiler umgehen soll, versteht bis zu einem gewissen Grad, was ein Makefile ist und hat die Quellcodeverwaltung berührt, ohne es sehr gut zu verstehen.

"Praktisch" wird definiert, da diese Person nicht im Detail darüber informiert werden möchte, was Git im Hintergrund macht und sich nicht einmal darum kümmert (oder weiß), dass es verteilt ist. Ihre Antworten könnten Hinweise auf die Möglichkeiten geben, aber versuchen Sie, auf den Anfänger zu zielen, der ein "Haupt" -Repository auf einem "Server" behalten möchte, der gesichert und gesichert ist, und sein lokales Repository als reine Client-Ressource behandelt.

Damit:

Installation / Einrichtung

Mit dem Code arbeiten

Tagging, Verzweigungen, Releases, Baselines

Andere

  • Beschreibe und verbinde dich mit einer guten GUI, einem IDE-Plugin, etc., was Git zu einer Nicht-Befehlszeilen-Ressource macht, aber lies bitte seine Beschränkungen sowie seine Vorteile auf.
    • msysgit - Cross-Plattform, in Git enthalten
    • msysgit - Cross-Plattform-History-Viewer, in Git enthalten
    • msysgit - Mac OS X
    • msysgit - Mac OS X-Verlaufsanzeige
    • msysgit - Plattformübergreifend, kommerziell, Beta
    • tig - Konsolen GUI für Linux
    • qgit - GUI für Windows, Linux
    • msysgit - Paket für Windows, enthält eine benutzerfreundliche GUI
  • Irgendwelche anderen allgemeinen Aufgaben, die ein Anfänger wissen sollte?
  • Wie kann ich effektiv mit einem Subversion-Repository arbeiten, das als Quelle für die Quellcodeverwaltung festgelegt wurde?

Andere Git Anfänger Referenzen

Eintauchen in Git

Ich werde die Einträge von Zeit zu Zeit durchgehen und sie aufräumen, damit sie ein konsistentes Aussehen / Gefühl haben und es ist einfach, die Liste zu scannen - fühlen Sie sich frei, einem einfachen "Header - kurze Erklärung - Liste von Anweisungen - gotchas und Extra Info "Vorlage. Ich werde auch auf die Einträge in der oben stehenden Aufzählungsliste verweisen, damit Sie sie später leichter finden können.


GUIs für Git

Git-GUI

Enthalten in git - Führen Sie git gui über die Befehlszeile aus, und das Windows msysgit Installationsprogramm fügt es dem Startmenü hinzu.

Git GUI kann einen Großteil dessen tun, was Sie mit Git tun müssen. Einschließlich Stage Changes, Konfiguration von Git und Repositories, Push-Änderungen, Erstellen / Auschecken / Löschen von Zweigen, Zusammenführen und viele andere Dinge.

Eine meiner Lieblingsfunktionen ist die "stage line" - und "stage hunk" -Kurzbefehle im Rechtsklick-Menü, mit der Sie bestimmte Teile einer Datei festschreiben können. Du kannst dasselbe über git add -i , aber ich finde es einfacher zu benutzen.

Es ist nicht die schönste Anwendung, aber es funktioniert auf fast allen Plattformen (basierend auf Tcl / Tk)

Screenshots | ein Screencast

GitK

Auch mit Git enthalten. Es ist ein Git History Viewer, mit dem Sie den Verlauf eines Repositories visualisieren können (einschließlich Zweige, wenn sie erstellt und zusammengeführt werden). Sie können Commits anzeigen und suchen.

Geht gut mit Git-Gui zusammen.

Gitnub

Mac OS X-Anwendung. Hauptsächlich ein Äquivalent von git log , hat aber eine gewisse Integration mit github (wie die "Network view").

Sieht gut aus und passt zu Mac OS X. Sie können Repositorys durchsuchen. Die größte Kritik von Gitnub ist, dass es Geschichte in einer linearen Art und Weise zeigt (ein einziger Zweig zu einer Zeit) - es visualisiert keine Verzweigung und Verschmelzung, was bei Git wichtig sein kann, obwohl dies eine geplante Verbesserung ist.

Gitnub | github

GitX

Beabsichtigt, ein "Gitk-Klon für OS X" zu sein.

Es kann nicht-lineare Verzweigungshistorie visualisieren, Commits ausführen, Commits anzeigen und suchen und es hat einige andere nette Eigenschaften wie "jede Datei in jeder Revision" schnell zu "schauen" (Speicherplatz in der Dateilistenansicht drücken), jede Datei exportieren (per Drag & Drop).

Es ist weitaus besser in OS X integriert als git-gui / gitk und ist selbst bei außergewöhnlich großen Repositories schnell und stabil.

Der ursprüngliche Git-Repository- pieter wurde kürzlich nicht aktualisiert (mehr als ein Jahr zum Zeitpunkt des Schreibens). Ein brotherbard/gitx Ast ist bei brotherbard/gitx - er fügt "sidebar, fetch, pull, push, remote hinzufügen, merge, cherry-pick, rebase, clone, clone to" hinzu.

Download | Screenshots | Git-Repository | brotherbard/gitx | Laulón-Gabel

SmartGit

Von der Homepage:

SmartGit ist ein Frontend für das verteilte Versionskontrollsystem Git und läuft unter Windows, Mac OS X und Linux. SmartGit richtet sich an Entwickler, die eine grafische Benutzeroberfläche über einen Befehlszeilen-Client bevorzugen, um mit Git - dem leistungsstärksten DVCS von heute - noch produktiver zu arbeiten.

Sie können es von SmartGit .

Download

TortoiseGit

TortoiseSVN Git-Version für Windows-Benutzer.

Es portiert TortoiseSVN nach TortoiseGit Die neueste Version 1.2.1.0 Diese Version kann reguläre Aufgaben wie commit, show log, diff zwei Version, create branch und tag, Create patch und so weiter abschließen. Siehe ReleaseNotes für Details. Willkommen, um dieses Projekt beizutragen.

Download

QGit

QGit ist ein git GUI-Viewer, der auf Qt / C ++ basiert.

Mit qgit können Sie den Revisionsverlauf durchsuchen, Patch-Inhalt und geänderte Dateien anzeigen und grafisch verschiedenen Entwicklungszweigen folgen.

Download

gitg

gitg ist ein Git-Repository-Viewer, der auf gtk + / GNOME abzielt. Eines seiner Hauptziele ist die Bereitstellung einer einheitlicheren Benutzererfahrung für Git-Frontends über mehrere Desktops hinweg. Es wird nicht eine plattformübergreifende Anwendung geschrieben, sondern eine enge Zusammenarbeit mit ähnlichen Clients für andere Betriebssysteme (wie GitX für OS X).

Eigenschaften

  • Durchsuchen des Überarbeitungsverlaufs
  • Handle große Repositories (lädt Linux-Repository, 17000+ Revisionen, unter 1 Sekunde).
  • Änderungen übernehmen
  • Stage / Unstagierung einzelner Stücke.
  • Änderungen rückgängig machen.
  • Zeige farblich geänderte Änderungen in Revisionen an.
  • Durchsuchen Sie den Baum nach einer bestimmten Revision.
  • Exportiert Teile des Baums einer bestimmten Revision.
  • Liefern Sie alle refspec, die ein Befehl wie 'git log' verstehen kann, um die Geschichte zu erstellen.
  • Zeigen und wechseln Sie zwischen Zweigen in der History-Ansicht.

Download: releases oder source

Gitbox

Gitbox ist eine grafische Benutzeroberfläche von Mac OS X für Git Version Control System. In einem einzigen Fenster sehen Sie Zweige, Verlauf und Arbeitsverzeichnisstatus.

Alltägliche Operationen sind einfach: Stage und Unstages ändert sich mit einer Checkbox. Commit, Pull, Merge und Push mit einem einzigen Klick. Doppelklicken Sie auf eine Änderung, um ein Diff mit FileMerge.app anzuzeigen.

Gitbox

Gity

Die Gity-Website hat nicht viele Informationen, aber von den Screenshots dort scheint es eine funktionsreiche Open Source OS X git gui zu sein.

Download oder source

Meld

Meld ist ein visuelles Diff- und Merge-Tool. Sie können zwei oder drei Dateien vergleichen und sie an Ort und Stelle bearbeiten (diffs werden dynamisch aktualisiert). Sie können zwei oder drei Ordner vergleichen und Dateivergleiche starten. Sie können eine Arbeitskopie von gängigen Versionskontrollsystemen wie CVS, Subversion, Bazaar-ng und Mercurial [ und Git ] durchsuchen und anzeigen.

Downloads

Katana

Eine Git GUIfor OSX von Steve Dekorte.

Auf einen Blick sehen Sie, welche Remote-Zweige Änderungen zu ziehen haben und lokale Repos Änderungen an Push haben. Die git ops von add, commit, push, pull, tag und reset werden ebenso unterstützt wie visuelle diffs und visuelles Browsen der Projekthierarchie, die lokale Änderungen und Ergänzungen hervorheben.

Kostenlos für 1 Repository, 25 $ für mehr.

Katana

Sprout (früher GitMac)

Konzentriert sich darauf, Git benutzerfreundlich zu machen. Verfügt über eine native Cocoa (Mac-ähnliche) Benutzeroberfläche, schnelles Repository-Browsing, Klonen, Push / Pull, Verzweigen / Zusammenführen, visuelles Vergleichen, Remote-Verzweigungen, einfachen Zugriff auf das Terminal und mehr.

Indem die gängigsten Git-Aktionen intuitiv und einfach durchzuführen sind, macht Sprout (früher GitMac) Git benutzerfreundlich. Kompatibel mit den meisten Git-Workflows, ist Sprout ideal für Designer und Entwickler, Team-Collaboration sowie fortgeschrittene und unerfahrene Benutzer gleichermaßen.

Herunterladen | Webseite

Tower

Eine funktionsreiche Git GUI für Mac OSX. 30-tägige kostenlose Testversion, $ 59USD für eine Einzelplatzlizenz.

Download | Tower

EGit

EGit ist ein Eclipse-Team-Provider für das Versionskontrollsystem Git. Git ist ein verteilter SCM, was bedeutet, dass jeder Entwickler eine vollständige Kopie des gesamten Verlaufs jeder Revision des Codes hat, wodurch Abfragen gegen die Historie sehr schnell und vielseitig sind.

Das EGit-Projekt implementiert Eclipse-Tools auf der JGit Java-Implementierung von Git.

Download | EGit

Git Erweiterungen

Open Source für Windows - installiert alles, was Sie brauchen, um mit Git zu arbeiten, in einem einzigen Paket, einfach zu bedienen.

Git Extensions ist ein Toolkit, um die Arbeit mit Git unter Windows intuitiver zu gestalten. Die Shell-Erweiterung wird in Windows Explorer integriert und zeigt ein Kontextmenü für Dateien und Verzeichnisse an. Es gibt auch ein Visual Studio-Plugin, um git von Visual Studio zu verwenden.

Download

Ein großes Dankeschön an dbr für die Ausarbeitung der git gui Sachen.

SourceTree

SourceTree ist ein kostenloser Mac-Client für Git, Mercurial und SVN. Er wurde von Atlassian, den Leuten hinter BitBucket, entwickelt und scheint mit jedem VC-System zu funktionieren, das es Ihnen ermöglicht, ein einziges Tool für alle Ihre Projekte zu beherrschen, jedoch versionsgesteuert. Feature-verpackt und KOSTENLOS.

Expert-Ready & Feature-verpackt für Anfänger und Fortgeschrittene:

Überprüfen Sie ausgehende und eingehende Änderungsmengen. Kirschbaum zwischen Zweigen. Patch-Handling, Rebase, Stash / Shelve und vieles mehr.

Download | SourceTree


Git zurücksetzen

Nehmen wir an, Sie machen einen Pull, fügen ihn in Ihren Code ein und entscheiden, dass Sie ihn nicht mögen. Verwenden Sie git-log oder tig und suchen Sie den Hash-Wert, an den Sie zurückkehren möchten (wahrscheinlich Ihr letzter Commit vor dem Ziehen / Zusammenführen), kopieren Sie den Hash und tun Sie Folgendes:

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

Anstelle des Hash können Sie HEAD ^ als Abkürzung für das vorherige Commit verwenden.

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

Wie erstellst du ein neues Projekt / Repository?

Ein Git-Repository ist einfach ein Verzeichnis, das ein spezielles .git Verzeichnis enthält.

Dies unterscheidet sich von "zentralisierten" Versionskontrollsystemen (wie Subversion), bei denen ein "Repository" auf einem entfernten Server gehostet wird, den Sie in ein "Arbeitskopie" -Verzeichnis auschecken. Mit git ist Ihre Arbeitskopie das Repository.

Führen Sie einfach git init in dem Verzeichnis aus, das die Dateien enthält, die Sie verfolgen möchten.

Beispielsweise,

cd ~/code/project001/
git init

Dies erstellt einen .git (versteckten) Ordner im aktuellen Verzeichnis.

Um ein neues Projekt zu erstellen, führe git init mit einem zusätzlichen Argument aus (der Name des zu erstellenden Verzeichnisses):

git init project002

(This is equivalent to: mkdir project002 && cd project002 && git init)

Um zu überprüfen, ob sich der aktuelle Pfad in einem Git-Repository befindet, führe einfach git status - wenn es kein Repository ist, meldet es "fatal: Not a git repository"

Sie könnten auch das .git Verzeichnis .git und prüfen, ob es Dateien / Verzeichnisse ähnlich der folgenden enthält:

$ ls .git
HEAD         config       hooks/       objects/
branches/    description  info/        refs/

Wenn Sie aus irgendeinem Grund ein Repository "de-git" wollen (Sie wollen aufhören, git zu verwenden, um das Projekt zu verfolgen). Entfernen Sie einfach das .git Verzeichnis auf der Basisebene des Repositorys.

cd ~/code/project001/
rm -rf .git/

Achtung: Dies wird den gesamten Revisionsverlauf, all deine Tags, alles , was git getan hat, zerstören. Es wird nicht die "aktuellen" Dateien (die Dateien, die Sie gerade sehen können) berühren, aber vorherige Änderungen, gelöschte Dateien und so weiter sind nicht wiederherstellbar!


Wie installiere ich Git?

Unter Windows:

Installieren Sie msysgit

Es gibt mehrere Downloads:

  • Git: Verwenden Sie dies, wenn Sie nicht speziell eine der folgenden Optionen benötigen.
  • PortableGit: Verwenden Sie diese Option, wenn Sie Git auf einem PC ausführen möchten, ohne auf diesem PC zu installieren (z. B. wenn Sie Git von einem USB-Laufwerk aus starten).
  • msysGit: Verwenden Sie dies, wenn Sie Git selbst entwickeln möchten. Wenn Sie Git nur für Ihren Quellcode verwenden möchten, aber den Quellcode von Git nicht bearbeiten möchten, brauchen Sie dies nicht.

Dadurch wird auch eine Cygwin-Bash-Shell installiert, so dass Sie den git in einer netteren Shell (als cmd.exe) verwenden können und auch git-gui (über den Befehl git gui oder das Menü Start > All Programs > Git )

Mac OS X

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

Über einen Paketmanager

Installieren Sie git mit Ihrem nativen Paketmanager. Zum Beispiel auf 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 Homebrew :

brew install git

Auf Red Hat-basierten Distributionen wie Fedora:

yum install git

In Cygwin befindet sich das Git-Paket unter dem Abschnitt "devel"

Von der Quelle (Mac OS X / Linux / BSD / usw.)

Wenn Sie in Mac OS X Developer Tools installiert haben, können Sie Git sehr einfach aus der Quelle kompilieren. Laden Sie die neueste Version von Git als .tar.bz oder .tar.gz von http://git-scm.com/ .tar.bz und extrahieren Sie sie (Doppelklick im Finder)

Unter Linux / BSD / etc. Es sollte ähnlich sein. Zum Beispiel müssen Sie in Debian (und Ubuntu) das build-essential Paket über apt installieren.

Dann in einem Terminal, cd , wo Sie die Dateien extrahiert (laufende cd ~/Downloads/git*/ sollte funktionieren), und dann ausführen ..

./configure && make && sudo make install

Dadurch wird Git in den Standardordner ( /usr/local - also git wird in /usr/local/bin/git ) installiert.

Sie werden aufgefordert, Ihr Passwort (für sudo ) einzugeben, damit es in das Verzeichnis /usr/local/ schreiben kann, auf das nur der Benutzer "root" zugreifen kann, damit sudo benötigt wird!

Wenn Sie es irgendwo anders installieren --prefix (damit die Git-Dateien nicht mit anderen Tools gemischt werden), verwenden Sie --prefix mit dem Befehl configure:

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

Dadurch wird die git Binärdatei in /usr/local/bin/gitpath/bin/git installiert - damit Sie nicht jedes Mal neu /usr/local/bin/gitpath/bin/git müssen, fügen Sie die folgende Zeile in Ihr $PATH ~/.profile :

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

Wenn Sie keinen sudo-Zugriff haben, können Sie --prefix=/Users/myusername/bin und in Ihr Home-Verzeichnis installieren. Denken Sie daran, ~/bin/ zu $PATH hinzuzufügen

Das Skript x-git-update-to-latest-version automatisiert eine Menge davon:

Dieses Skript aktualisiert meinen lokalen Klon des Git Repos (lokal bei ~/work/track/git ) und konfiguriert dann, installiert (at /usr/local/git - git describe ) und aktualisiert den Symlink /usr/local/git .

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

Die neueste Version dieses Skripts installiert auch die man-Seiten. Sie müssen Ihren MANPATH , dass er das MANPATH /usr/local/git/share/man .


Wie verzweigst du?

Der Standardzweig in einem Git-Repository heißt master .

Um einen neuen Zweig zu erstellen, verwenden Sie

git branch <branch-name>

Um eine Liste aller Zweige im aktuellen Repository-Typ anzuzeigen

git branch

Wenn Sie zu einem anderen Zweig wechseln möchten, den Sie verwenden können

git checkout <branch-name>

Um einen neuen Zweig zu erstellen und in einem Schritt zu diesem Zweig zu wechseln

git checkout -b <branch-name>

Um einen Zweig zu löschen, verwenden Sie

git branch -d <branch-name>

Um eine Verzweigung mit den Änderungen aus der aktuellen Verzweigung zu erstellen, tun Sie

git stash
git stash branch <branch-name>

Checking Out Code

Gehen Sie zuerst in ein leeres Verzeichnis, verwenden Sie "git init", um es zu einem Repository zu machen, und klonen Sie dann das Remote-Repository in Ihr eigenes.

git clone [email protected]:/dir/to/repo

Wo immer du anfängst zu klonen ist, wo "git pull" standardmäßig abzieht.


How can I create a branch on a remote repository?

Assuming that you have cloned your remote repository from some single remote repository.

# create a new branch locally
git branch name_of_branch
git checkout name_of_branch
# edit/add/remove files    
# ... 
# Commit your changes locally
git add fileName
git commit -m Message
# push changes and new branch to remote repository:
git push origin name_of_branch:name_of_branch

How do you compare two revisions of a file, or your current file and a previous revision?

Compare command is git diff .

To compare 2 revisions of a file:

$ git diff <commit1> <commit2> <file_name>

That diffs commit1 against commit2; if you change order then files are diffed the other way round, which may not be what you expect...

To compare current staged file against the repository:

$ git diff --staged <file_name>

To compare current unstaged file against the repository:

$ git diff <file_name>

How do you see the history of revisions to a file?

git log -- filename

How to track remote branches

Assuming there is a remote repository that you cloned your local repository from and also assuming that there is a branch named 'some_branch' on that remote repository, here is how to track it locally:

# list remote branches
git branch -r

# start tracking one remote branch
git branch --track some_branch origin/some_branch

# change to the branch locally
git checkout some_branch

# make changes and commit them locally
....

# push your changes to the remote repository:
git push

Den neuesten Code abrufen

$ git pull <remote> <branch> # fetches the code and merges it into 
                             # your working directory
$ git fetch <remote> <branch> # fetches the code but does not merge
                              # it into your working directory

$ git pull --tag <remote> <branch> # same as above but fetch tags as well
$ git fetch --tag <remote> <branch> # you get the idea

Das deckt praktisch jeden Fall ab, um die neueste Kopie des Codes aus dem Remote-Repository zu erhalten.


Wie man es konfiguriert, um Dateien zu ignorieren:

Die Möglichkeit, dass Git Dateien ignoriert, die nicht verfolgt werden sollen, ist sehr nützlich.

Um eine Datei oder einen Satz von Dateien zu ignorieren, liefern Sie ein Muster. Die Mustersyntax für Git ist ziemlich einfach, aber leistungsstark. Es gilt für alle drei verschiedenen Dateien, die ich im Folgenden erwähnen werde.

  • Eine leere Zeile ignoriert keine Dateien, sie wird normalerweise als Trennzeichen verwendet.
  • Linien, die mit # beginnen, dienen als Kommentare.
  • Das ! Präfix ist optional und negiert das Muster. Jedes negierte Muster, das übereinstimmt, überschreibt niedrigere Präzedenzmuster.
  • Unterstützt erweiterte Ausdrücke und Platzhalter
    • Beispiel: Das Muster: *. [Oa] ignoriert alle Dateien im Repository, die auf .o oder .a (Objekt- und Archivdateien) enden.
  • Wenn ein Muster ein Verzeichnis hat, das mit einem Schrägstrich endet, passt git nur auf dieses Verzeichnis und Pfade darunter. Dies schließt normale Dateien und symbolische Links aus dem Spiel aus.
  • Ein führender Schrägstrich entspricht allen Dateien in diesem Pfadnamen.
    • Beispiel: Das Muster /*.c stimmt mit der Datei foo.c überein, aber nicht mit bar / awesome.c

Großes Beispiel von der gitignore(5) Man Seite:

$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
#       Documentation/gitignore.html
#       file.o
#       lib.a
#       src/internal.o
[...]
$ cat .git/info/exclude
  # ignore objects and archives, anywhere in the tree.
  *.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
[...]

Im Allgemeinen gibt es drei verschiedene Möglichkeiten, nicht verfolgte Dateien zu ignorieren.

1) Ignoriere für alle Benutzer des Repositories:

Fügen Sie dem Stamm Ihrer Arbeitskopie eine Datei namens .gitignore hinzu .

Bearbeiten Sie .gitignore , um Ihren Einstellungen zu entsprechen, welche Dateien nicht ignoriert werden sollen.

git add .gitignore 

und begehe, wenn du fertig bist.

2) Ignoriere nur für deine Kopie des Repositories:

Hinzufügen / Bearbeiten Sie die Datei $ GIT_DIR / info / exclude in Ihrer Arbeitskopie mit Ihren bevorzugten Mustern.

Bsp: Meine Arbeitskopie ist ~ / src / project1, also würde ich ~ / src / project1 / .git / info / exclude bearbeiten

Sie sind fertig!

3) Ignoriere in allen Situationen auf deinem System:

Globale Ignoriermuster für Ihr System können in eine Datei mit dem Namen "was immer Sie wollen" aufgenommen werden.

Meine heißt persönlich ~ / .gitglobalignore

Ich kann dann von dieser Datei wissen lassen, indem ich meine ~ / .gitconfig Datei mit der folgenden Zeile bearbeite:

core.excludesfile = ~/.gitglobalignore

Sie sind fertig!

Ich finde die gitignore(5) man-Seite als beste gitignore(5) für weitere Informationen.


Hier ist eine Kopie von PJ Hyetts Beitrag, da dieser nicht mehr verfügbar ist:

Git ist nicht schwer

23. November 2008

Wenn wir Leuten sagen, warum sie Git über Subversion verwenden sollten, lautet die Zeile: "Git tut Subversion besser als Subversion, aber es macht viel mehr als das."

Das "viel mehr" besteht aus einer Menge Sachen, die Git wirklich glänzen lassen, aber es kann ziemlich überwältigend sein für diejenigen, die von anderen SCMs wie Subversion kommen.

Nichtsdestotrotz hält dich nichts davon ab, Git zu benutzen, so wie du Subversion benutzt, während du den Übergang machst.

Angenommen, Sie haben die erforderliche Software installiert und haben irgendwo ein Remote-Repository, so würden Sie den Code greifen und Ihre Änderungen mit Subversion zurückgeben:

$ svn checkout svn://foo.googlecode.com/svn/trunk foo
# make your changes
$ svn commit -m "my first commit"

Und wie würdest du es in Git machen:

$ git clone [email protected]:pjhyett/foo.git
# make your changes
$ git commit -a -m "my first commit"
$ git push

Ein weiterer Befehl, um es in Git möglich zu machen. Dieser zusätzliche Befehl hat große Auswirkungen, aber für den Zweck dieses Posts, das ist alles, worüber wir reden, einen zusätzlichen Befehl.

Siehst du, es ist wirklich nicht so schwer.

Update: Ich wäre nachlässig zu erwähnen, dass das Äquivalent der Aktualisierung Ihrer lokalen Kopie in Subversion im Vergleich zu Git svn update bzw. git pull ist. In beiden Fällen nur ein Befehl.


Nun, trotz der Tatsache, dass du darum gebeten hast, dass wir nicht "einfach" auf andere Ressourcen verlinken, ist es ziemlich dumm, wenn es bereits eine gemeinschaftlich gewachsene (und wachsende) Ressource gibt, die wirklich gut ist: das Git Community Book . Im Ernst, diese 20+ Fragen in einer Frage werden alles andere als knapp und konsistent sein. Das Git Community Book ist sowohl als HTML als auch als PDF verfügbar und beantwortet viele Ihrer Fragen mit klaren, gut formatierten und von Experten geprüften Antworten und in einem Format, das es Ihnen ermöglicht, direkt zu Ihrem Problem zu springen.

Leider, wenn mein Beitrag dich wirklich aufregt, dann werde ich es löschen. Sag es einfach.


Git Magic is all you'll ever need. Guaranteed or your money back!


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

  • Was hat dieser Befehl getan?
  • In welchem ​​Zweig bin ich?
  • Welche Veränderungen werde ich begehen, und habe ich etwas vergessen?
  • War ich mitten in etwas, das ich letztes Mal an diesem Projekt gearbeitet habe (Tage, Wochen oder vielleicht Monate zuvor)?

Im Gegensatz zu, sagen wir svn status , läuft git status fast sofort auch bei großen Projekten. Ich fand es oft beruhigend, wenn ich Git lernte, es häufig zu benutzen, um sicherzustellen, dass mein mentales Modell von dem, was vor sich ging, korrekt war. Jetzt benutze ich es hauptsächlich, um mich daran zu erinnern, was ich seit meinem letzten Commit geändert habe.

Offensichtlich ist es viel nützlicher, wenn Ihr .gitignore vernünftig konfiguriert ist.


A real good paper for understanding how Git works is The Git Parable . Very recommended!


I got started with the official Git tutorial . I think it's practical enough for beginners (I was, and still am, a beginner, by your definition! I barely grasp makefiles, I've only played a bit with Apache Subversion, etc.).


The Pro Git free book is definitely my favorite, especially for beginners.


Why yet another howto? There are really good ones on the net, like the git guide which is perfect to begin. It has good links including the git book to which one can contribute (hosted on git hub) and which is perfect for this collective task.

On , I would really prefer to see your favorite tricks !

Mine, which I discovered only lately, is git stash , explained here , which enables you to save your current job and go to another branch

EDIT: as the previous post, if you really prefer stackoverlow format with posts as a wiki I will delete this answer







version-control