update Git für Anfänger: Der definitive praktische Leitfaden




git update tag (24)

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.


Push and pull changes

In an simplified way, just do git push and git pull . Changes are merged and if there's a conflict git will let you know and you can resolve it manually.

When you first push to a remote repository you need to do a git push origin master (master being the master branch). From then on you just do the git push .

Push tags with git push --tags .


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

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.


Wie "taggen" Sie bestimmte Revisionen?

Wie markierst du einen bestimmten Satz von Revisionen für einen bestimmten Satz von Dateien als "tag" oder "release", so dass du ihn später immer noch ziehen kannst?

Verwenden des Befehls git tag

Um einfach die aktuelle Revision zu "markieren", würden Sie einfach laufen ..

git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'

Um die aktuellen Tags aufzulisten, führen Sie einfach git tag ohne Argumente oder -l (Kleinbuchstaben L) aus:

$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname

Um ein Tag zu löschen, verwenden Sie das Flag -d :

$ git tag -d thetagname 
Deleted tag 'thetagname'
$ git tag
[no output]

Um ein bestimmtes (früheres) Commit zu markieren, tun Sie einfach ..

git tag [tag name] [revision SHA1 hash]

Beispielsweise:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b

Hinweis: Standardmäßig erstellt Git ein "leichtgewichtiges" -Tag (im Grunde eine Referenz auf eine bestimmte Revision). Der "richtige" Weg ist die Verwendung der -a Flagge. Dadurch wird der Editor gestartet, in dem nach einer Tag-Nachricht gefragt wird (identisch mit der Frage nach einer Commit-Nachricht. Sie können auch das Flag -m verwenden, um die Tag-Nachricht in der Befehlszeile anzugeben). Durch die Verwendung eines annotierten Tags wird ein Objekt mit einer eigenen ID, einem eigenen Datum, einem eigenen Tagger (Autor) und optional einer GPG-Signatur (mit dem Tag -s ) erstellt. Weitere Informationen hierzu finden Sie in diesem Beitrag

git tag mytagwithmsg -a -m 'This is a tag, with message'

-n1 die Tags mit Anmerkungen -n1 , verwenden Sie das Flag -n1 , um eine Zeile jeder Tag-Nachricht -n245 ( -n245 zeigt die ersten 245 Zeilen jeder Anmerkung an usw.):

$ git tag -l -n1
mytagwithmsg    This is a tag, with message

Weitere Informationen finden Sie auf der Handbuchseite git-tag (1)



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

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>

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


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

git log -- filename

Wie richten Sie ein gemeinsames Team-Repository ein?

Wie man ein normales Repository einrichtet, wird here beschrieben - aber wie richte ich ein Team-Repository ein, an das jeder ziehen und von dem man schieben kann?

Verwenden eines freigegebenen NFS-Dateisystems

Angenommen, Ihr Team verfügt bereits über eine freigegebene Gruppenmitgliedschaft, die verwendet werden kann.

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

Um dieses Repository zu verwenden, starten Sie am einfachsten von einem lokalen Repository aus, 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 jetzt klonen und anfangen zu arbeiten:

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

Verwenden von SSH

Richten Sie ein Benutzerkonto auf dem Zielserver ein. Ob Sie ein Konto ohne Passwort, ein Konto mit einem Passwort oder die Verwendung von authorized_keys hängt von Ihrem erforderlichen Sicherheitsniveau ab. Weitere Informationen finden Sie unter Konfigurieren von Git über SSH .

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

Nachdem Sie das Repository auf die gleiche Weise wie oben begonnen haben, führen Sie den ersten Push wie folgt aus:

cd your/local/workspace/project
git remote add origin [email protected]:/path/to/project.git
git push origin master

Sehen Sie die Ähnlichkeit mit dem oben genannten? Das einzige, was zusätzlich passieren kann, ist SSH fragt nach einem Passwort, wenn das Konto ein Passwort hat. Wenn Sie diese Eingabeaufforderung für ein Konto ohne Kennwort erhalten, hat der SSH-Server wahrscheinlich PermitEmptyPasswords deaktiviert.

Klonen sieht jetzt so aus:

cd your/local/workspace
git clone [email protected]:/path/to/project.git

Console UI - Tig

Installation:

apt-get install tig

Verwendung

While inside a git repo, type 'tig', to view an interactive log, hit 'enter' on any log to see more information about it. h for help, which lists the basic functionality.

Wissenswertes

"Tig" is "Git" backwards.


How do I delete a branch on a remote repository?

Perform a push in your remote using : before the name of the branch

git push origin :mybranchname

being origin the name of your remote and mybranchname the name of the branch about to be deleted

http://help.github.com/remotes/


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


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 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!


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


How do you merge branches?

If you want to merge a branch (eg master to release ), make sure your current branch is the target branch you'd like to merge into (use git branch or git status to see your current branch).

Then use

git merge master

(where master is the name of the branch you want to merge with the current branch).

If there are any conflicts, you can use

git diff

to see pending conflicts you have to resolve.


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


Änderungen bestätigen

Sobald 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 jedem sagt, was Sie geändert haben.

$ git commit source/main.c

Übernimmt die Datei main.c im Verzeichnis ./source/

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

wird alle geänderten Dateien übernehmen (aber keine neuen Dateien, diese müssen mit git-add zum Index hinzugefügt werden). Wenn Sie nur bestimmte Dateien festschreiben möchten, müssen Sie diese zuerst mit git-add und dann ohne das Flag -a bereitstellen.

Commiting ändert nur Ihr lokales Repository, nicht jedoch die Remote-Repositories. Wenn Sie die Commits an das Remote-Repository senden möchten, müssen Sie einen Push ausführen.

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

Für jemanden, der aus CVS oder SVN kommt, ist dies eine Änderung, da das Commit zum zentralen Repository nun zwei Schritte erfordert.


Workflow-Beispiel mit GIT.

Git ist extrem flexibel und passt sich gut an jeden Workflow an, aber das Erzwingen eines bestimmten Workflows kann den negativen Effekt haben, dass es nicht nachvollziehbar ist, was man mit git jenseits des linearen "Backup" -Workflows machen kann und wie nützlich Branching sein kann .

Dieser Blogbeitrag erklärt einen sehr einfachen, aber effektiven Workflow, der mit git sehr einfach einzurichten ist.

Zitat aus dem Blogpost: Wir betrachten Ursprung / Master als den Hauptzweig, wo der Quellcode von HEAD immer einen produktionsbereiten Zustand widerspiegelt:

Der Workflow wurde populär genug, um ein Projekt zu git-flow , das diesen Workflow implementiert: git-flow

Schöne Illustration eines einfachen Workflows, in dem Sie all Ihre Änderungen in Entwicklung vornehmen und nur dann zum Master-Modus wechseln, wenn sich der Code in einem Produktionszustand befindet:

Angenommen, Sie möchten an einem neuen Feature arbeiten oder ein Modul refaktorieren. Sie könnten einen neuen Zweig erstellen, den wir einen "Feature" -Abzweig nennen könnten, etwas, das einige Zeit in Anspruch nimmt und möglicherweise Code sprengt. Sobald Ihr Feature "stabil genug" ist und Sie es der Produktion "näher bringen" möchten, fügen Sie Ihren Feature-Zweig in develop ein. Wenn alle Fehler nach der Zusammenführung aussortiert wurden und Ihr Code alle Tests bestanden hat, schieben Sie Ihre Änderungen in den Master.

Während dieses ganzen Prozesses finden Sie einen schrecklichen Sicherheitsfehler, der sofort behoben werden muss. Sie könnten eine Verzweigung namens Hotfixes haben, die Änderungen, die schneller zurück in die Produktion als der normale "entwickeln" Zweig geschoben werden.

Hier haben Sie eine Illustration, wie diese Funktion / dieser Hotfix / Entwicklung / Produktion Workflow aussehen könnte (gut erklärt im Blog-Post, und ich wiederhole, der Blog-Beitrag erklärt den gesamten Prozess viel detaillierter und viel besser als ich .


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


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.


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.


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.





version-control