OpenSimGerman/Update mit Git

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Using Git like Subversion/trunk development)
(CLI)
 
(36 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Dies ist eine Anleitung zur Verwendung von Git für OpenSim core Entwickler.
+
Dies ist eine Anleitung zur Verwendung von Git für OpenSimulator core Entwickler.
  
 
= Installieren von Git =
 
= Installieren von Git =
Line 7: Line 7:
 
=== CLI ===
 
=== CLI ===
 
:Git ist ein Package das für alle modernen Linux Distributionen vorhanden ist. Installieren Sie die folgenden Packages entsprechend Ihrer OS-Umgebung:
 
:Git ist ein Package das für alle modernen Linux Distributionen vorhanden ist. Installieren Sie die folgenden Packages entsprechend Ihrer OS-Umgebung:
::* Debian, Ubuntu: <pre>apt-get install git-core</pre>
+
::* Debian: <pre>apt-get install git-core</pre>
 +
::* Ubuntu: <pre>apt-get install git</pre>
 +
Weitere Ubuntu Informationen gibt es [https://wiki.ubuntuusers.de/Git/ hier]. Diese Anleitung enthält auch die Grundlagen und ist eigentlich eine Pflichtlektüre für alle Linux Nutzer.
 +
 
 
::* Centos: Anleitung unter http://www.how-to-linux.com/2009/01/install-git-161-on-centos-52/
 
::* Centos: Anleitung unter http://www.how-to-linux.com/2009/01/install-git-161-on-centos-52/
  
Line 24: Line 27:
  
 
Unter Windows benötigen Sie 2 Komponenten:
 
Unter Windows benötigen Sie 2 Komponenten:
* [http://msysgit.googlecode.com/files/Git-1.6.4-preview20090730.exe msysgit] - Das Grundmodul für Windows. Installieren Sie dieses zuerst.
+
* [https://git-scm.com/ https://git-scm.com/] - Das Grundmodul für Windows. Installieren Sie dieses zuerst.
* [http://code.google.com/p/tortoisegit/ Tortoise Git] - Der Git Explorer. Installieren Sie dieses als zweites Modul.
+
* [https://t3n.de/news/git-gui-clients-644472/ GUI-Clients für Git: 5 grafische Benutzeroberflächen im Test]
 +
 
 +
* Dies geht aber auch mit der kostenlosen Visual Studio Community Version: [https://www.visualstudio.com/de/downloads/?rr=https%3A%2F%2Fwww.google.com%2F Downloadseite]
  
Wenn Sie '''msysgit installieren''' vergewissern Sie sich, dass Sie
+
* Verwenden von Visual Studio mit Git: [https://msdn.microsoft.com/de-de/library/hh850437(v=vs.120).aspx Anleitung]
'''Unix style line endings''' aktiviert haben. Damit wird sichergestellt das die Zeilen-Endekennung richtig interpretiert werden, und gemischte Ergebnisse in Zukunft vermieden werden.
+
  
[[Image:msysgit1.png]] [[Image:msysgit2.png]] [[Image:msysgit3.png]] [[Image:msysgit4.png]] [[Image:msysgit5.png]]
+
Vergewissern Sie sich, dass Sie '''Unix style line endings''' aktiviert haben. Damit wird sichergestellt das die Zeilen-Endekennung richtig interpretiert werden, und gemischte Ergebnisse in Zukunft vermieden werden.
  
 
= Git Konfiguration =
 
= Git Konfiguration =
Line 45: Line 49:
 
[[Image:config1.png]] [[Image:Config2.png]]
 
[[Image:config1.png]] [[Image:Config2.png]]
  
= Git Repositories für OpenSim =
+
= Git Repositories für OpenSimulator =
  
 
Hier die Repository Url's:
 
Hier die Repository Url's:
Line 57: Line 61:
 
== Klonen des Repositry (für Core Developers) ==
 
== Klonen des Repositry (für Core Developers) ==
  
Wenn Du ein Core Developer bist benutze die Developer URL von oben. Wenn Du kein Core Developer bist , benutze die User Url. Das erzeugen des ersten Klones kann einige Minuten in Anspruch nehmen, da das komplette Repository mit der ganzen history erzeugt und geladen wird.
+
Wenn Du ein Core Developer bist benutze die Developer URL von oben. Wenn Du kein Core Developer bist , benutze die User Url. Das erzeugen des ersten Klones kann einige Minuten in Anspruch nehmen, da das komplette Repository mit der ganzen history erzeugt und geladen wird.
  
Anders als mit svn können Sie mehrere Quellen definieren, von denen Sie Daten ziehen können. Wenn Sie zuerst mit einem User tree (welcher nur read only ist), können Sie später den core tree (oder einen anderen tree vom github) benutzen.
+
Anders als mit svn können Sie mehrere Quellen definieren, von denen Sie Daten ziehen können. Wenn Sie zuerst mit einem User tree (welcher nur read only ist), können Sie später den core tree (oder einen anderen tree vom github) benutzen.
  
 
=== Linux ===
 
=== Linux ===
Line 67: Line 71:
  
 
Dieses legt ein Test-Verzeichnis opensim an.
 
Dieses legt ein Test-Verzeichnis opensim an.
 +
 +
Beispielscript für die Automatisierung. Legen sie hierfür im Hauptverzeichnis das Verzeichnis opensim an:
 +
<source lang=bash>
 +
#!/bin/sh
 +
 +
cd /tmp
 +
# Vorhandenes opensim Verzeichnis löschen
 +
rm -r opensim
 +
 +
# Neues opensim Verzeichnis erstellen und mit dem Source füllen
 +
git clone git://opensimulator.org/git/opensim
 +
 +
# In das neue Verzeichnis wechseln
 +
cd opensim
 +
 +
# Kompilieren
 +
./runprebuild.sh
 +
nant
 +
 +
# Kopieren des opensim Verzeichnisses
 +
cp -r /tmp/opensim/bin /opensim
 +
 +
# In das opensim Verzeichnis wechseln
 +
cd /opensim/bin
 +
# Fertig
 +
</source>
 +
 +
Das script muss noch ausführbar gemacht werden.
 +
 +
chmod +x /pfad/zu/mein_Skript
 +
 +
Starten mit:
 +
 +
./mein_skript.sh
 +
 
=== Windows ===
 
=== Windows ===
  
Mausklick rechts auf den Desktop (oder wo auch immer) und 'Git Clone...'
+
Mausklick rechts auf den Desktop (oder wo auch immer) und 'Git Clone...'  
  
Wenn Sie nach einer Url gefragt werden geben Sie bitte folgende ein ssh://opensimulator.org/var/git/opensim. Dein Username und Dein Passwort werden dann benutzt für opensimulator.org.
+
Wenn Sie nach einer Url gefragt werden geben Sie bitte folgende ein ssh://opensimulator.org/var/git/opensim. Dein Username und Dein Passwort werden dann benutzt für opensimulator.org.
  
 
== Klonen des Repositry (für Nicht Core Developers) ==
 
== Klonen des Repositry (für Nicht Core Developers) ==
  
Benutze die selbe Vorgehensweise wie oben, nur '''anstatt''' der Nutzung der ssh:// Url benutze die '''git://''' Url. Dies ist das Äquivalent zum anonymen svn Zugang.
+
Benutze die selbe Vorgehensweise wie oben, nur '''anstatt''' der Nutzung der ssh:// Url benutze die '''git://''' Url. Dies ist das Äquivalent zum anonymen svn Zugang.
  
= Konzeptionelle Veränderungen zu Subversion =  
+
= Konzeptionelle Veränderungen zu Subversion =
  
Distributed source code control is a substantially different mental model than centralized source code control. If it freaks you out a bit, don't worry, everyone has that same reaction initially. This [http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/ blog post] is the best explanation that I've seen of the concepts involved.
+
Distributed source code ist ein wesentlich anderes modell zur zentralisierten source code Verwaltung. Nicht verzweifeln, am Anfang ist es für jeden etwas gewöhnungsbedürftig. Dieses [http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/ blog posting] ist das Beste das ich jeh zu disem Thema gesehen habe.
  
For heavy users of subversion you should read the [http://git.or.cz/course/svn.html git / svn cheat sheet]. This provides a very solid basis for making your changes.  That being said there are some conceptual changes to note.
+
Der eingefleischte SVN Benutzer sollte diese Page lesen[http://git.or.cz/course/svn.html git / svn cheat sheet]. Es ist eine Solide Basis um Ihre Anpassungen zu machen.  
  
 
* Terminologie
 
* Terminologie
 
** master ist der name der primären upstream branch (bei subversion trunk genannt)
 
** master ist der name der primären upstream branch (bei subversion trunk genannt)
 
** origin ist der name und die location von dem Sie Ihren Klon gezogen haben
 
** origin ist der name und die location von dem Sie Ihren Klon gezogen haben
* All repositories are full peers to all other repositories.  Your cloned git repo is all the history of the entire project, available locally.  It means you can sync between any 2 clones of the repository, not just between your clone and the master repo.  This lets people work together on changes not in
+
* Versionsnummern sind SHA1 hashes, keine sequentiellen Nummern. Man benutzt in der Regel die ersten 6-8 digits der hash um mit Ihnen zu arbeiten.
* Version numbers are SHA1 hashes, not sequential integers. This means referring to specific revisions is a bit more interesting.  For most of the git commands, you only need to give it the first 6-8 digits of the hash for them to work.
+
 
* Committing  
 
* Committing  
** commits are local. This means they are fast (no network involved) and they are committed against the last state of the tree. Any conflict resolution will be handled after commits, during your next pull. This is slightly different than pull-resolve-then-commit model of subversion.
+
** commits sind lokal. Das heisst, sie sind schnell. Alle Konflikte werden werden während des nächsten pull geklärt. Das ist ein wesentlicher Unterschied zum SVN modell von subversion.
** by default only files you explicitly '''git add''' are put into the commit. To get '''svn ci''' equivalency use '''git commit -a''' to commit all outstanding files (I think tortoise handles this for you)
+
** normalerweise werden nur Files die Sie mit '''git add''' committed haben. Um '''svn ci''' equivalent zu benutzen geben Sie '''git commit -a''' ein.
** after making a commit you must then '''push''' it to a remote repository (probably origin).  By default you push only branches you have previously pushed, typically master.
+
** nach einem commit müssen Sie das Ergebnis auf ein remot repository '''push'''en(normalerweise origin).
 
+
The biggest real change is the Subversion dictates a very specific workflow.  Git does not.  Git allows for many different workflows, and lets each developer use the one that is best suited to his/her self.
+
  
 
= Gegenüberstellung Git --- SVN Befehle =
 
= Gegenüberstellung Git --- SVN Befehle =
  
Hier eine Schnellanleitung zur Benutzung von Git als Versionsverwaltung für core developer. Für normale Benutzer funktionieren diese Befehle genauso, es muss lediglich die Git:// anstatt der ssh:// URL benutzt werden.
+
Hier eine Schnellanleitung zur Benutzung von Git als Versionsverwaltung für core developer. Für normale Benutzer funktionieren diese Befehle genauso, es muss lediglich die Git:// anstatt der ssh:// URL benutzt werden.
 
+
  
Hier dei Unix Kommandozeilenbefehle. Diese Befehle sind auch im kontext menü von Tortoise git vorhanden.
+
Hier die Unix Kommandozeilenbefehle. Diese Befehle sind auch im Kontextmenü von Tortoise git vorhanden.
  
 
== Ziehen des Quellcodes ==
 
== Ziehen des Quellcodes ==
Line 137: Line 172:
 
== Pushen der commiteten Änderungen ==
 
== Pushen der commiteten Änderungen ==
  
Beim ersten mal müssen Sie eine '''Bracnh''' zuweisen die Sie pushen wollen.
+
Beim ersten mal müssen Sie eine '''Branch''' zuweisen die Sie pushen wollen.
  
 
'''git push origin master'''
 
'''git push origin master'''
Line 143: Line 178:
 
Nach dem ersten mal reicht ein simples '''git push''' , und git weiss dass master syncronisiert werden muss zu origin.
 
Nach dem ersten mal reicht ein simples '''git push''' , und git weiss dass master syncronisiert werden muss zu origin.
  
'''Achtung:''' commits in git sind lokal. Sie sind nicht verfügbar im Main Tree solange Du Sie '''nicht mit push''' bereit stellst. Das heisst, Sie können offline Änderungen vornehmen und diese später mit dem Netz syncronisieren.
+
'''Achtung:''' commits in git sind lokal. Sie sind nicht verfügbar im Main Tree solange Du Sie '''nicht mit push''' bereit stellst. Das heisst, Sie können offline Änderungen vornehmen und diese später mit dem Netz syncronisieren.
  
== Das Checkout auf eine spezielle Revision setzen==
+
== Das Checkout auf eine spezielle Revision setzen ==
  
 
'''git reset --hard #HASHVALUE'''
 
'''git reset --hard #HASHVALUE'''
Line 164: Line 199:
 
'''git format-patch #HASHVALUE'''
 
'''git format-patch #HASHVALUE'''
  
This will create a patch suitable for attaching or emailing from a single commit. You can also specify a range of commits.
+
Dadurch wird ein Patch erstellt, der zum Anhängen oder Versenden per E-Mail von einem einzelnen Commit geeignet ist. Sie können auch einen Bereich von Commits angeben.  
  
 
Dies ist am nächsten zu '''svn diff > patchfile.txt''' für nicht übertragene patches in subversion.
 
Dies ist am nächsten zu '''svn diff > patchfile.txt''' für nicht übertragene patches in subversion.
  
== Applying a Git Patch ==
+
== Anwenden eines Git Patch ==
  
If someone has formatted a git patch you can apply it directly (including all file adds, file mode changes, and their change log entry) with:
+
Wenn jemand einen Git-Patch formatiert hat, können Sie ihn direkt anwenden (einschließlich aller Datei-Adds, Datei-Modus-Änderungen und ihres Änderungsprotokolleintrags) mit:
  
 
'''git apply patchfile.patch'''
 
'''git apply patchfile.patch'''
  
== Reverting a Change ==
+
== Eine Änderung rückgängig machen  ==
  
 
'''git revert #HASHVALUE'''
 
'''git revert #HASHVALUE'''
  
This directly reverts the change, with a commit message stating that fact. There is no svn direct equiv, though this is often accomplished through: svn diff -R revisions > revert.patch && patch -p0 < revert.patch && svn ci -m "reverting revisions"
+
Dies führt die Änderung direkt zurück, wobei eine Bestätigungsnachricht diese Tatsache angibt. Es gibt kein direktes Äquivalent, obwohl dies oft erreicht wird durch:  
  
== Resetting part of the tree to master ==
+
svn diff -R revisions > revert.patch && patch -p0 < revert.patch && svn ci -m "reverting revisions"
 +
 
 +
== Zurücksetzen eines Teils des tree zum Master  ==
  
 
'''git checkout -- file1 file2 ...'''
 
'''git checkout -- file1 file2 ...'''
  
Checkout is an operation that populates the working directory from the git repository. Doing a git checkout (master is the implied branch) -- file1 file2 repulls those files from the git repo, clobbering them in your local directory. This is like '''svn revert'''.
+
Checkout ist eine Operation, die das Arbeitsverzeichnis aus dem Git-Repository auffüllt. Einen Git-Checkout durchführen (Master ist die implizierte Verzweigung) - file1 file2 repulsiert diese Dateien aus dem git-Repo und übergeht sie in Ihrem lokalen Verzeichnis. Das ist wie '''svn revert'''.
  
== Diffing Changes ==
+
== Differierende Änderungen  ==
  
Against your most recently committed changes
+
Gegen Ihre zuletzt vorgenommenen Änderungen
  
 
'''git diff'''
 
'''git diff'''
  
From your most recent changes to a past change
+
Von Ihren letzten Änderungen zu einer früheren Änderung
  
 
'''git diff #HASHVALUE'''
 
'''git diff #HASHVALUE'''
  
Between any 2 changes
+
Zwischen zwei beliebigen Änderungen
  
 
'''git diff #HASHVALUE1 #HASHVALUE1'''
 
'''git diff #HASHVALUE1 #HASHVALUE1'''
Line 202: Line 239:
 
== Branches ==
 
== Branches ==
  
=== Erzeugen ein Branch ===
+
=== Erzeuge ein Branch ===
  
To create a new branch based on the current one, do:
+
Um einen neuen Zweig basierend auf dem aktuellen Zweig zu erstellen, tun Sie Folgendes:
  
 
'''git branch <branchname>'''
 
'''git branch <branchname>'''
  
=== Changing Branches ===
+
=== Branch wechseln ===
  
To change between branches do:
+
Um zwischen den Zweigen wechseln:
  
 
'''git checkout <branchname>'''
 
'''git checkout <branchname>'''
  
=== Tracking a Branch ===
+
=== Einen Branch verfolgen===
  
If you want to work on a specific branch, you can track it, by creating a local version of it on which you can pull and push. If you have already pulled (or fetched) from origin, you should have all remote branches names:
+
Wenn Sie an einem bestimmten Zweig arbeiten möchten, können Sie ihn verfolgen, indem Sie eine lokale Version erstellen, auf der Sie ziehen und drücken können. Wenn Sie bereits aus dem Ursprung gezogen (oder geholt) haben, sollten Sie alle Namen der Remote-Zweige haben:
  
 
'''git branch -a'''
 
'''git branch -a'''
  
Will show all branches, local and remote. Choose a remote branch to track then do:
+
Zeigt alle Zweige an, lokal und entfernt. Wählen Sie einen entfernten Zweig, den Sie verfolgen möchten, und führen Sie Folgendes aus:
  
 
'''git branch --track <localbranchname> origin/remote/<remotebranchname>'''
 
'''git branch --track <localbranchname> origin/remote/<remotebranchname>'''
  
A new local branch will be created created, which will push and pull to the specific remote branch.
+
Es wird ein neuer lokaler Zweig erstellt, der an den bestimmten entfernten Zweig pusht und zieht.
 +
 
 +
== Ressourcen und Referenzen ==
 +
 
 +
Git Grundlagen [https://git-scm.com/book/de/v1/Los-geht%E2%80%99s-Git-Grundlagen https://git-scm.com/book/de/v1/Los-geht%E2%80%99s-Git-Grundlagen]
 +
 
 +
git - Der einfache Einstieg [https://rogerdudler.github.io/git-guide/index.de.html eine einfache Anleitung, um git zu lernen.]
 +
 
 +
Git-und-andere-Versionsverwaltungen-Git-und-Subversion:  [https://git-scm.com/book/de/v1/Git-und-andere-Versionsverwaltungen-Git-und-Subversion https://git-scm.com/book/de/v1/Git-und-andere-Versionsverwaltungen-Git-und-Subversion]
 +
 
 +
Git - SVN Crashkurs bei [http://git-scm.com/course/svn.html git-scm.com/course/svn.html]
 +
 
 +
Git Video Tutorials bei [http://gitcasts.com/ http://gitcasts.com/]&nbsp;&nbsp; (Mehrere ausgezeichnete Video Tutorials in Englisch)
 +
 
 +
The Git Community Book bei [http://book.git-scm.com/ http://book.git-scm.com/]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
[[Category:German Translations]]

Latest revision as of 17:30, 30 March 2018

Dies ist eine Anleitung zur Verwendung von Git für OpenSimulator core Entwickler.

Contents

[edit] Installieren von Git

[edit] Linux

[edit] CLI

Git ist ein Package das für alle modernen Linux Distributionen vorhanden ist. Installieren Sie die folgenden Packages entsprechend Ihrer OS-Umgebung:
  • Debian:
    apt-get install git-core
  • Ubuntu:
    apt-get install git

Weitere Ubuntu Informationen gibt es hier. Diese Anleitung enthält auch die Grundlagen und ist eigentlich eine Pflichtlektüre für alle Linux Nutzer.

[edit] GUIs

git-gui
  • Debian, Ubuntu:
$ sudo apt-get install git-gui
$ git gui
git-cola
  • Debian, Ubuntu:
$ apt-get install git-cola
$ git-cola

[edit] Windows

Unter Windows benötigen Sie 2 Komponenten:

  • Dies geht aber auch mit der kostenlosen Visual Studio Community Version: Downloadseite
  • Verwenden von Visual Studio mit Git: Anleitung

Vergewissern Sie sich, dass Sie Unix style line endings aktiviert haben. Damit wird sichergestellt das die Zeilen-Endekennung richtig interpretiert werden, und gemischte Ergebnisse in Zukunft vermieden werden.

[edit] Git Konfiguration

Git hat eine globale wie eine lokale Konfiguration für jedes Repository. Als Erstes ist es wichtig dass Sie Ihre Emailadresse und Ihren Namen der im System benutzt werden soll wie folgt bekannt geben.

Linux:

git config user.email Deine@EMAIL.ADDR 
git config user.name "Dein Name"

Unter Windows benutze das Konfigurationsmenü wie folgt:

Config1.png Config2.png

[edit] Git Repositories für OpenSimulator

Hier die Repository Url's:

Repository Developer URL User URL
opensim (main repository) ssh://opensimulator.org/var/git/opensim git://opensimulator.org/git/opensim

[edit] Klonen des Repositry (für Core Developers)

Wenn Du ein Core Developer bist benutze die Developer URL von oben. Wenn Du kein Core Developer bist , benutze die User Url. Das erzeugen des ersten Klones kann einige Minuten in Anspruch nehmen, da das komplette Repository mit der ganzen history erzeugt und geladen wird.

Anders als mit svn können Sie mehrere Quellen definieren, von denen Sie Daten ziehen können. Wenn Sie zuerst mit einem User tree (welcher nur read only ist), können Sie später den core tree (oder einen anderen tree vom github) benutzen.

[edit] Linux

Benutzen Sie die folgende Kommandozeile:

git clone ssh://opensimulator.org/var/git/opensim

Dieses legt ein Test-Verzeichnis opensim an.

Beispielscript für die Automatisierung. Legen sie hierfür im Hauptverzeichnis das Verzeichnis opensim an:

#!/bin/sh
 
cd /tmp
# Vorhandenes opensim Verzeichnis löschen
rm -r opensim
 
# Neues opensim Verzeichnis erstellen und mit dem Source füllen
git clone git://opensimulator.org/git/opensim
 
# In das neue Verzeichnis wechseln
cd opensim
 
# Kompilieren
./runprebuild.sh
nant
 
# Kopieren des opensim Verzeichnisses
cp -r /tmp/opensim/bin /opensim
 
# In das opensim Verzeichnis wechseln
cd /opensim/bin
# Fertig

Das script muss noch ausführbar gemacht werden.

chmod +x /pfad/zu/mein_Skript

Starten mit:

./mein_skript.sh

[edit] Windows

Mausklick rechts auf den Desktop (oder wo auch immer) und 'Git Clone...'

Wenn Sie nach einer Url gefragt werden geben Sie bitte folgende ein ssh://opensimulator.org/var/git/opensim. Dein Username und Dein Passwort werden dann benutzt für opensimulator.org.

[edit] Klonen des Repositry (für Nicht Core Developers)

Benutze die selbe Vorgehensweise wie oben, nur anstatt der Nutzung der ssh:// Url benutze die git:// Url. Dies ist das Äquivalent zum anonymen svn Zugang.

[edit] Konzeptionelle Veränderungen zu Subversion

Distributed source code ist ein wesentlich anderes modell zur zentralisierten source code Verwaltung. Nicht verzweifeln, am Anfang ist es für jeden etwas gewöhnungsbedürftig. Dieses blog posting ist das Beste das ich jeh zu disem Thema gesehen habe.

Der eingefleischte SVN Benutzer sollte diese Page lesengit / svn cheat sheet. Es ist eine Solide Basis um Ihre Anpassungen zu machen.

  • Terminologie
    • master ist der name der primären upstream branch (bei subversion trunk genannt)
    • origin ist der name und die location von dem Sie Ihren Klon gezogen haben
  • Versionsnummern sind SHA1 hashes, keine sequentiellen Nummern. Man benutzt in der Regel die ersten 6-8 digits der hash um mit Ihnen zu arbeiten.
  • Committing
    • commits sind lokal. Das heisst, sie sind schnell. Alle Konflikte werden werden während des nächsten pull geklärt. Das ist ein wesentlicher Unterschied zum SVN modell von subversion.
    • normalerweise werden nur Files die Sie mit git add committed haben. Um svn ci equivalent zu benutzen geben Sie git commit -a ein.
    • nach einem commit müssen Sie das Ergebnis auf ein remot repository pushen(normalerweise origin).

[edit] Gegenüberstellung Git --- SVN Befehle

Hier eine Schnellanleitung zur Benutzung von Git als Versionsverwaltung für core developer. Für normale Benutzer funktionieren diese Befehle genauso, es muss lediglich die Git:// anstatt der ssh:// URL benutzt werden.

Hier die Unix Kommandozeilenbefehle. Diese Befehle sind auch im Kontextmenü von Tortoise git vorhanden.

[edit] Ziehen des Quellcodes

git clone ssh://opensimulator.org/git/opensim-test

Dies ist das Äquivalent zu svn co

Note: Alle anderen Anweisung erwarten das Du Dich im git Verzeichnis befindest.

[edit] Updaten Deines checkout

git pull

Dies ist das Äquivalent zu svn update

[edit] Kontrolliert Veränderungen im working tree

git status

Dies ist das Äquivalent zu svn status

[edit] Übertragen einer Änderung

Beispiel:

git add file1 file2 ...

git commit

oder

git commit -a


[edit] Pushen der commiteten Änderungen

Beim ersten mal müssen Sie eine Branch zuweisen die Sie pushen wollen.

git push origin master

Nach dem ersten mal reicht ein simples git push , und git weiss dass master syncronisiert werden muss zu origin.

Achtung: commits in git sind lokal. Sie sind nicht verfügbar im Main Tree solange Du Sie nicht mit push bereit stellst. Das heisst, Sie können offline Änderungen vornehmen und diese später mit dem Netz syncronisieren.

[edit] Das Checkout auf eine spezielle Revision setzen

git reset --hard #HASHVALUE

Dieses gibt Ihnen dei Möglichkeit ganz bestimmte Versionen zu nutzen. Dies ist das Äquivalent zu svn up -R#version.

git reset dient natürlich auch um Versionensänderungen zurückzusetzen.

[edit] Resetten des tree auf master (i.e. trunk)

git pull

pro vorgehen

[edit] Erzeugen eines Patch

git format-patch #HASHVALUE

Dadurch wird ein Patch erstellt, der zum Anhängen oder Versenden per E-Mail von einem einzelnen Commit geeignet ist. Sie können auch einen Bereich von Commits angeben.

Dies ist am nächsten zu svn diff > patchfile.txt für nicht übertragene patches in subversion.

[edit] Anwenden eines Git Patch

Wenn jemand einen Git-Patch formatiert hat, können Sie ihn direkt anwenden (einschließlich aller Datei-Adds, Datei-Modus-Änderungen und ihres Änderungsprotokolleintrags) mit:

git apply patchfile.patch

[edit] Eine Änderung rückgängig machen

git revert #HASHVALUE

Dies führt die Änderung direkt zurück, wobei eine Bestätigungsnachricht diese Tatsache angibt. Es gibt kein direktes Äquivalent, obwohl dies oft erreicht wird durch:

svn diff -R revisions > revert.patch && patch -p0 < revert.patch && svn ci -m "reverting revisions"

[edit] Zurücksetzen eines Teils des tree zum Master

git checkout -- file1 file2 ...

Checkout ist eine Operation, die das Arbeitsverzeichnis aus dem Git-Repository auffüllt. Einen Git-Checkout durchführen (Master ist die implizierte Verzweigung) - file1 file2 repulsiert diese Dateien aus dem git-Repo und übergeht sie in Ihrem lokalen Verzeichnis. Das ist wie svn revert.

[edit] Differierende Änderungen

Gegen Ihre zuletzt vorgenommenen Änderungen

git diff

Von Ihren letzten Änderungen zu einer früheren Änderung

git diff #HASHVALUE

Zwischen zwei beliebigen Änderungen

git diff #HASHVALUE1 #HASHVALUE1

[edit] Branches

[edit] Erzeuge ein Branch

Um einen neuen Zweig basierend auf dem aktuellen Zweig zu erstellen, tun Sie Folgendes:

git branch <branchname>

[edit] Branch wechseln

Um zwischen den Zweigen wechseln:

git checkout <branchname>

[edit] Einen Branch verfolgen

Wenn Sie an einem bestimmten Zweig arbeiten möchten, können Sie ihn verfolgen, indem Sie eine lokale Version erstellen, auf der Sie ziehen und drücken können. Wenn Sie bereits aus dem Ursprung gezogen (oder geholt) haben, sollten Sie alle Namen der Remote-Zweige haben:

git branch -a

Zeigt alle Zweige an, lokal und entfernt. Wählen Sie einen entfernten Zweig, den Sie verfolgen möchten, und führen Sie Folgendes aus:

git branch --track <localbranchname> origin/remote/<remotebranchname>

Es wird ein neuer lokaler Zweig erstellt, der an den bestimmten entfernten Zweig pusht und zieht.

[edit] Ressourcen und Referenzen

Git Grundlagen https://git-scm.com/book/de/v1/Los-geht%E2%80%99s-Git-Grundlagen

git - Der einfache Einstieg eine einfache Anleitung, um git zu lernen.

Git-und-andere-Versionsverwaltungen-Git-und-Subversion: https://git-scm.com/book/de/v1/Git-und-andere-Versionsverwaltungen-Git-und-Subversion

Git - SVN Crashkurs bei git-scm.com/course/svn.html

Git Video Tutorials bei http://gitcasts.com/   (Mehrere ausgezeichnete Video Tutorials in Englisch)

The Git Community Book bei http://book.git-scm.com/

Personal tools
General
About This Wiki