Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:git_server

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
prog:git_server [2019/06/28 14:22] – [Quellen] gpipperrprog:git_server [2021/02/08 15:54] – [Die wichtigsten git Kommandos] gpipperr
Zeile 1: Zeile 1:
 +=====Distributed version control mit Git=====
  
 +Git ist ein open source distributed version control system => http://git-scm.com
 +
 +
 +Als erstes sollte man sich Gedanken darüber machen wie die Struktur der Versionierung aufgebaut werden soll.
 +
 +Siehe dazu diesen Vorschlag: => http://nvie.com/posts/a-successful-git-branching-model/
 +
 +
 +Sind MS tools im Einsatz und es soll migriert werden  => https://www.visualstudio.com/learn/centralized-to-git/ und  https://accu.org/index.php/journals/1828.
 +
 +
 +Wo zu kann Git noch eingesetzt werden =>  [[prod:oracle_primavera_archive_projekt_plan|Archivierung von Projektplänen mit Werkzeugen der Software Entwicklung]]
 +
 +
 +----
 +
 +===== Git Client Installieren =====
 +
 +====Installation und Upgrade Git 2.5 auf Oracle Linux 7 ====
 +**User root**
 +
 +Wird per "yum install git" (Oracle Linux Server release 7.1) das Package "git" installiert, ist die Version eine "1.8.3.1":
 +
 +<code bash>
 +#Install
 +yum install git
 +
 +#Show version
 +git version
 +git version 1.8.3.1
 +</code>
 +
 +Soll die aktuellste Version eingesetzt werden, kann nun per git Kommando der letzte Stand geladen und git neu übersetzt werden.
 +
 +Vorbereitung: Die notwendigen Basis Pakete installieren bzw. selbst übersetzen falls nicht für OEL 7 verfügbar:
 +<code bash>
 +
 +#Make utils
 +yum install autoconf
 +
 +#Perl libraries
 +yum install perl-CPAN
 +
 +
 +#install base packages
 +yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
 +
 +########################
 +#install package for the document feature usage
 +
 +yum install xmlto 
 +
 +
 +#install docbook2x
 +
 +# search a rpm over http://rpm.pbone.net/index.php3 
 +#wget ftp://ftp.muug.mb.ca/mirror/fedora/epel/7/x86_64/d/docbook2X-0.8.8-17.el7.x86_64.rpm
 +#yum install docbook2X-0.8.8-17.el7.x86_64.rpm
 +
 +#besser Source Code von http://sourceforge.net/projects/docbook2x/ herunterladen und neu übersetzen
 +#Zuvor Datei configure.ac von http://sourceforge.net/p/docbook2x/bugs/20 austauschen
 +
 +tar xvfz docbook2X-0.8.8.tar.gz
 +cd docbook2X-0.8.8/
 +
 +wget -O configure.ac  http://docbook2x.cvs.sourceforge.net/viewvc/docbook2x/docbook2X/configure.ac 
 +
 +./configure
 +make
 +make install
 +
 +
 +#install asciidoc 
 +# see http://www.methods.co.nz/asciidoc/INSTALL.html
 +# Download the zip file with a browser
 +# not working wget -O asciidoc-8.6.9.zip http://sourceforge.net/projects/asciidoc/files/latest/download
 +
 +unzip asciidoc-8.6.9.zip
 +cd asciidoc-8.6.9/
 +./configure
 +make install
 +
 +</code>
 +
 +Git Source laden und neu übersetzen:
 +<code bash>
 +
 +cd /srv
 +
 +#git source repository laden
 +git clone https://github.com/git/git
 +
 +
 +
 +cd /srv/git
 +
 +#########################
 +#Create configure script
 +
 +make configure
 +
 +./configure --prefix=/usr
 +
 +#########################
 +#Compile git core and install
 +make all 
 +make install 
 +
 +
 +
 +#test the version 
 +git --version
 +git version 2.5.0.342.g44e0223
 +
 +
 +
 +#########################
 +# Create the git documentation
 +make doc 
 +make install-doc install-html 
 +
 +make info
 +# Problems with /bin/sh: line 1: docbook2x-texi: command not found
 +# docbook2x-texi not availible for my platform ... hmmmm
 +
 +ln -s /srv/docbook2X-0.8.8/perl/docbook2texi /usr/bin/docbook2x-texi
 +
 +#better but
 +make info
 +
 +#make[2]: Leaving directory `/srv/git'
 +#    DB2TEXI user-manual.texi
 +#I/O error : Attempt to load network entity http://docbook2x.sf.net/latest/xslt/texi/docbook.xsl
 +# not realy working ...
 +# may be this bug http://sourceforge.net/p/docbook2x/bugs/20/
 +# load the configure.ac from http://docbook2x.cvs.sourceforge.net/viewvc/docbook2x/docbook2X/configure.ac
 +# copy file to the source directory and recompile/reinstall the docbook2x 
 +
 +make install-info
 +
 +</code>
 +
 +Leider ist mir das Übersetzen der Dokumentation am Anfang nur in Teilen gelungen, das Programm  docbook2x-texi fehlt zu Beginn, ein Links auf das richtige Programm hilft dann zwar etwas, für den Folgefehler muss noch ein Patch für docbook2x  eingespielt werden, dann funktioniert es.
 +
 +== Quellen ==
 +
 +  * https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
 +
 +
 +----
 +
 +==== Git 2.5 unter Windows 10 ====
 +
 +Download der Git Software über https://git-scm.com/downloads, die Website erkennt die richtige Version und startet den Download. 
 +
 +Die Datei (Stand 08.2015) Git-2.5.0-64-bit.exe für die Installation starten:
 +
 +  * Welcome to the Git Setup Wizard - Next 
 +  * Legal information - Next
 +  * Verzeichnis auswählen-  wie C:\Program Files\Git -Next
 +  * Componenten auswählen - alles Default 
 +    * {{:prog:git_setup_windows10_v01.png?300|Git Components}} - Next
 +  * Selct Start Menu Folder - alles Default - git - Next
 +  * Adjust your PATH enviroment - alles Default
 +    * {{:prog:git_setup_windows10_v02.png?300|Git Path settings}} - Next
 +  * SSH executable auswählen - Option 1 "Use OpenSSH" auswählen -Next
 +  * Configure line ending conversion - Da mein persönlicher Default Linux ist, Option 2 gewählt, für mehr Windows lastige Projekte ist Option 1 wohl besser - 
 +    * {{:prog:git_setup_windows10_v03.png?300|Git Line ending}} - Next
 +  * Terminal emulator - Default - Use MinTTY - Next
 +  * Performance Tweaks - Nichts angewählt - Default - Next
 +  * Installation läuft
 +  * Finsh
 +
 +Die Installation benötigt am Ende  ~367 MB da auch ein kompletter kleiner [[http://sourceforge.net/projects/mingw-w64/|minGW64 - Ein runtime environment for gcc ]] dabei ist.
 +
 +Nach der Installation kann im gewünschten Verzeichnis eine Bash Shell über das Kontext Menü im Explorer gestartet werden. 
 +{{ :prog:git_windows10_usage_v01.png?400 |Git unter Windows 10 - Kommando Shell starten}}
 +In der Bash Shell kann wie unter Linux gewohnt gearbeitet werden.
 +
 +
 +
 +==== Alternative Git Oberflächen unter MS Windows ====
 +
 +Oberflächen für das Arbeiten mit Git unter Windows
 +
 +SoucreTree
 +  * https://www.sourcetreeapp.com/
 +
 +Git-Client Tower
 +  * https://www.git-tower.com/windows
 +
 +
 +Git Hub for Windows
 +  * https://desktop.github.com/
 +  * Als Editor Atom verwenden https://atom.io/ oder  https://code.visualstudio.com
 +
 +
 +----
 +==== Scripten unter MS Windows ====
 +
 +Alles einchecken
 +<code dos>
 +
 +cd <LAUFWERK>
 +cd <PROJKET_DIR>
 +
 +set GIT_HOME=C:\Program Files\Git
 +
 +"%GIT_HOME%\cmd\git.exe" add .
 +"%GIT_HOME%\cmd\git.exe" commit -m "Commit done by %USERNAME% at %DATE% %TIME%"
 +"%GIT_HOME%\cmd\git.exe" push
 +  
 +</code>
 +
 +
 +Bzw. in der Powershell 
 +<code powershell>
 +set-item -path env:GIT_HOME -value "C:\Program Files\Git"
 +$datum = Get-Date
 +
 +
 +& "$ENV:GIT_HOME\cmd\git.exe" add .
 +& "$ENV:GIT_HOME\cmd\git.exe" commit -m "Commit done by $env:UserName at $datum"
 +& "$ENV:GIT_HOME\cmd\git.exe" push
 +
 +</code>
 +
 +
 +Alles auschecken:
 +<code dos>
 +cd <LAUFWERK>
 +cd <PROJKET_DIR>
 +
 +set GIT_HOME=C:\Program Files\Git
 +
 +"%GIT_HOME%\cmd\git.exe" pull
 +</code>
 +----
 +
 +==== Git Client Konfiguration ====
 +
 +
 +Nach der Installation (unabhängig ob Linux oder Windows) muss git konfiguriert werden.
 +
 +Unter Linux:
 +
 +Globale Einstellungen lassen sich unter "/etc/gitconfig" (alternativ "/usr/git/config") hinterlegen, persönliche Einstellungen unter "~/.gitconfig" (alternativ "~/.config/git/config")
 +
 +Unter Windows:
 +
 +Die Bash Emulatoin verwendt als User Home den Windows Pfad (C:\Users\<username>) und legt dort die .gitconfig an.
 +
 +
 +Globale Konfiguration erfolgt mit "git --system", hier zum Beispiel um den Editor zu setzen und Farben zu verwenden:
 +<code bash>
 +git config --system core.editor vi
 +git config --system color.ui true
 +
 +</code>
 +
 +User Konfiguration:
 +
 +<code bash>
 +git config --global user.name "Gunther Pippèrr"
 +git config --global user.email "info @ pipperr.de"
 +</code>
 +
 +Konfiguration (ließt über alle Konfigurationsdateien, letzter gefundener Wert wird verwendet) anzeigen:
 +
 +<code bash>
 +#All
 +git config --list
 +
 +#One Parameter 
 +git config core.editor
 +
 +#kein CRLF auf Windows !
 +
 +git config --global core.autocrlf false
 +
 +</code>
 +
 +
 +==== Die wichtigsten git Kommandos====
 +
 +Neben den einzelnen Kommandos kann auch der Interactive Modus genützt werden mit zum Beispiel "git commit --interactive -m "My Git Test""
 +
 +===Neues Repository===
 +
 +Das git Repository liegt im Unterordner ".git" des Projekt Verzeichnisses. Mit "git init" wird das Repository angelegt.
 +
 +<code bash>
 +# In das neue Projektverzeichnis wechseln
 +git init
 +Initialized empty Git repository in /srv/projectplan/.git/
 +</code>
 +
 +Soll das Repository später verteilt werden besser gleich so anlegen:
 +<code bash>
 +git init --bare --shared
 +</code>
 +
 +===Datei Handling===
 +
 +Die Daten zum nächsten Commit hinzufügen und dann ein Commit mit Kommentar absetzen:
 +<code bash>
 +#add
 +git add plan1.xer
 +
 +#add all new and changed files
 +git add -A
 +
 +#check the Status
 +git status
 +
 +#Commit
 +git commit -m "Start Project"
 +
 +#show the last commit
 +git show
 +
 +</code>
 +Immer beachten dass nur die Dateien commited werden die im Status "Staged" sich befinden, d.h. die in den git Index aufgenommen wurden. Wird eine Datei geändert, wird die geänderte Datei nicht automatisch aufgenommen, sondern muss dem git Index hinzugefügt werden.
 +Will man das "git add" auf jede geänderte Datei vermeiden, den commit mit der Option "-a" absetzen.
 +
 +Übersicht über den Status einer Datei in Git:
 +
 +{{ :prog:git_file_status_v01.png?650 | Git File status Overview }}
 +
 +
 +Dateien ausschließen mit einem ".gitignore" im  Wurzel/Stammpfad des neuen Projektes (Gute Beispiele siehe unter https://github.com/github/gitignore):
 +<code bash>
 +cd <root path of your project
 +
 +#Create first on windows
 +touch .gitignore
 +
 +vi .gitignore
 +
 +#Ignore all tmp files
 +*.tmp
 +
 +# but add this tmp file (overwrite rule 1)
 +!myprojekt.tmp
 +
 +# ignore all files in the log directory
 +log/
 +
 +#Ignore all log file in directroy trace
 +trace/**/*.log
 +
 +</code>
 +
 +
 +Dateien von Platte und aus dem Repository löschen:
 +<code bash>
 +git rm <myilename>
 +git status
 +</code>
 +
 +Dateien nur aus dem Repository löschen (Daten bleiben auf Platten enthalten und können dann in .gitignore aufgenommen werden und nicht wieder neu eingecheckt zu werden) mit der Option "--cached":
 +<code bash>
 +git rm --cached <myilename>
 +git status
 +</code>
 +
 +
 +Dateien umbennenen oder verschieben
 +<code bash>
 +git mv <myilename>
 +git status
 +</code>
 +
 +
 +===Commit Handling===
 +
 +Den letzen Commit Kommentar bearbeiten:
 +<code bash>
 +git commit --amend
 +</code>
 +
 +Dateien den letzen Commit hinzufügen:
 +<code bash>
 +git add <file_name>
 +git commit --amend
 +</code>
 +
 +Letze Änderung an einer Datei wieder rückgängig machen:
 +<code bash>
 +git reset Head <filename>
 +git checkout HEAD <filename>
 +</code>
 +
 +Alles wieder zurück setzen auf den letzten Commit im Master:
 +<note warning>!!!! alle Dateien die auf new File stehen werden gelöscht !!!!!! Müssen zuvor unstaged werden !!!!!</note>
 +<code bash>
 +git reset --hard
 +</code>
 +
 +=> Falls danach ein Undo notwendig wird =>https://stackoverflow.com/questions/5788037/recover-from-git-reset-hard/5788069
 +<code bash>
 +git reflog show
 +git reset HEAD@{1} 
 +git push 
 +</code>
 +
 +
 +{{ :prog:git_file_status_v02.png?650 | Overview git rest}}
 +
 +
 +Die letzen Commits anzeigen:
 +<code bash>
 +#All
 +git log
 +
 +#Bessere Ausgabe
 +git log --oneline
 +
 +
 +#Formated
 +git log --pretty=format:"%cd  - %an -  %s"
 +
 +#Last 9 commits
 +git log --pretty=oneline -9
 +
 +#last commit
 +git show
 +
 +</code>
 +
 +Wer hat was an einer Datei geändert mit "git blame <filename>"
 +<code bash>
 +git blame readme.txt
 +</code>
 +
 +
 +===Branch Handling und stash Funktionalität===
 +
 +Auf welchen Branch arbeite ich geraden:
 +<code bash>
 +git branch
 +</code>
 +
 +Einen neuen Branch anlegen mit "git branch <branch_name>:
 +<code bash>
 +git branch branch_gpi
 +</code>
 +
 +Auf den neuen Branch umschalten
 +<code bash>
 +git  checkout branch_gpi
 +# Daten ändern/hinzufügen
 +git add -A
 +git commit -m "start new branch"
 +git status
 +</code>
 +
 +
 +Auf den alten Branch zurückschalten:
 +<code bash>
 +git  checkout master
 +git status
 +</code>
 +
 +Unser Änderungen in den Master einarbeiten
 +<code bash>
 +git merge branch_gpi
 +</code>
 +
 +
 +Eine Branch löschen:
 +<code bash>
 +#wiht upper D also if not merged!
 +git branch -D branch_gpi
 +</code>
 +
 +Mit "stash" kann der Inhalt der Working Directory auf einen "Stack" gelegt werden und damit wird zum letzten Commit Punkt zurück gesprungen
 +<code bash>
 +git stash
 +</code>
 +
 +Nun können Änderungen am letzen Release durchgeführt und später können die vorherigen Änderungen wieder eingearbeitet werden
 +
 +
 +"stack" wieder einfügen:
 +<code bash>
 +git stash apply
 +</code>
 +
 +
 +HEAD anzeigen lassen auf welchen Branche das zeigt!
 +<code bash>
 +git symbolic-ref HEAD
 +</code>
 +
 +Übersicht:
 +
 +{{ :prog:git_branch_v01.png?550 | Git Branch and stash }}
 +
 +
 +Eine gute Übersicht siehe auch hier => http://nvie.com/posts/a-successful-git-branching-model/
 +
 +
 +
 +===Mit Remote Repositories arbeiten===
 +
 +Es wird immer auf einer lokalen Kopie des Remote Repository gearbeitet.
 +
 +
 +Herunterladen und damit lokales Repository anlegen:
 +<code bash>
 +git clone https://github.com/git/git
 +</code>
 +
 +Prüfen wie die URL lautet:
 +<code bash>
 +git remote -v
 +</code>
 +
 +Aktuelle Version landen (Fetch), aber nicht mergen! 
 +Merge muss mit "git merge" im Anschluss erfolgen!
 +<code bash>
 +git fetch
 +#Bei Bedarf
 +git merge
 +</code>
 +
 +
 +Update from global mit "git pull [remote-name]", Merge mit der bestehenden Stand des lokalen Working Directory, wie ein "git fetch" und ein "git merge" zusammen
 +<code bash>
 +git pull
 +</code>
 +
 +
 +
 +Meine Commits hochladen mit "git push [remote-name] [branch-name]" :
 +<code bash>
 +git push
 +</code>
 +
 +
 +Auf Neues prüfen mit "git remote show [remote-name]":
 +<code bash>
 +git remote show
 +</code>
 +
 +
 +Übersicht:
 +{{ :prog:git_branch_remote_v01.png?550 |Git Remote}}
 +
 +
 +===Ein Repository lokal klonen===
 +
 +Als URL wird das Filesystem angegeben:
 +<code bash>
 +git clone file:///srv/projectplan/ projectplan02
 +</code>
 +
 +
 +**Ein Repository über ssh klonen**
 +
 +<code bash>
 +git clone root@primaeppmp151:/srv/projectplan/ projectplan03
 +</code>
 +
 +
 +===Ein Repository umziehen===
 +
 +Git Repository aus orginal Quelle clonen.
 +
 +
 +URL umsetzen
 +<code bash>
 +git remote rm origin
 +git remote add origin https://gitxxxxxx.org/yyyyyy
 +
 +</code>
 +
 +Daten in das neue Repository übertragen:
 +<code bash>
 + git push -u origin --all
 +</code>
 +===Das git Repository pflegen===
 +
 +Manuell die Maintenance auf dem Repository anstossen:
 +<code bash>
 +git gc
 +</code>
 +
 +Wieviele Objekte:
 +<code bash>
 +git count-objects -v
 +</code>
 +
 +Siehe auch =>  [[https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery | Git-Internals-Maintenance-and-Data-Recovery]]
 +
 +
 +===Einen Git Patch erstellen ===
 +
 +Mit einem Patch über Git werden alle Änderungen in eine Branch in eine Datei übernommen, diese Änderungen können dann in den Master eingespielt werden.
 +Damit muss der Entwickler den Master nicht direkt "commiten" kann aber seine Änderungsvorschläge an den Maintainer des Codes einfach als eine Datei senden.
 +Der Maintainer kann dann diese Patch in den Master einspielen und diesen commiten.
 +
 +**Branch mit dem Bug Fix**
 +
 +Eine Patch mit allen Änderungen des aktuellen Branches gegenüber dem Master anlegen:
 +<code bash>
 +git format-patch master --stdout > fix_gpi.patch
 +</code>
 +
 +**Auf dem Master Branch**
 +Prüfen:
 +<code bash>
 +git apply --stat fix_gpi.patch
 +git apply --check fix_gpi.patch
 +</code>
 +
 +Einspielen:
 +<code bash>
 +#Apply mit Tag um später das besser nachvollziehen zu können
 +git am --signoff < fix_gpi.patch
 +</code>
 +
 +
 +===Übersicht über die wichtigsten Kommandos===
 +
 +^Kommando^Bedeutung^Kommentar^
 +|git help <befehl>| Man Page zu dem Befehl anzeigen|-|
 +|git init| Neues Repository anlegen| Im Wurzel/Stammpfad des neuen Projektes|
 +|git clone <nowiki>https://<url to git repository></nowiki> <new name> | Ein Repository clonen und mit neuen Namen anlegen|
 +|git fetch | Aktuellen Stand von remote laden|Aber nicht mergen!|
 +|git pul | Aktuellen Stand von remote laden und mergen|-|
 +| git push | Commit auf den Server puschen |-|
 +|git add <file> | Datei hinzufügen | Auch mit * wie *.xer möglich|
 +|git commit -am "Comment" | Ein Commit durchführen | mit -m Kommentar hinterlegen, mit -a alle bekannten Dateien mit aufnehmen|
 +|git add -A |Alle neuen Dateien im Baum zum nächsten Commit hinzufügen | -|
 +|git status| Status der neuen/geänderten Dateien im Repository|Kurze Übersicht mit git status -s|
 +|git diff| Alle Änderungen anzeigen | mit "git diff <dateiname> nur auf einer Datei|
 +|git rm <file>|Eine Datei löschen | mit --cached  Schalte Datei auf Platte belassen!|
 +|git mv <file>|Eine Datei umbenennen oder verschieben| - |
 +|git log | Historie anzeigen | mit Schalter die letzten Änderungen wie "git log -p -1" oder formatieren mit git log --pretty=format:"%cd  - %an -  %s" |
 +|git show | Letzes Commit anzeigen|-|
 +|git commit --amend| Den letzten Commit anpassen | Wenn sich nichts anders geändert hat nur den Kommentar anpassen|
 +|git reset Head <filename>| Datei aus dem Index entfernen| Nicht mehr im Status "Staged"|
 +|git checkout HEAD <filename>| Datei mit der letzten Version vom letzten Commit überschreiben|-|
 +|git gc | Git Repository "aufräumen"| -|
 +
 +
 +Eine gute Zusammenfassung der git Befehle mit Beispielen  => http://gitref.org/index.html
 +
 +
 +=== Git DIFF Befehlt ===
 +
 +Aufgabe: Alle Unterschied in einer Datei vom ersten Einchecken bis zum aktuellen Master aufzeigen
 +
 +<code bash>
 +
 + git diff --output=dif.log fe145a7..HEAD  /e/GPI/entwicklung/code/04-PLSQL/PKG_GPI.pkb
 +
 +</code> 
 +
 +siehe auch =>https://www.git-tower.com/learn/git/ebook/en/command-line/advanced-topics/diffs/
 +
 +=== Von Mercurial nach Git migrieren ===
 +
 +
 +Übersicht über die möglichen Werkzeuge =>  https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools#Mercurial
 +
 +
 +fast-export.git 
 +
 +  * https://hedonismbot.wordpress.com/2008/10/16/hg-fast-export-convert-mercurial-repositories-to-git-repositories/
 +  * http://repo.or.cz/w/fast-export.git
 +
 +
 +----
 +  
 +  
 +=== Hooks verwenden um code zu deployen===
 +
 +Idee: Auf dem Server ein Git Repository anlegen, bei einem erfolgreichen Pull vom Master werden die Daten gleich verteilt ( ohne das .git directory !)
 +
 +
 +Hook anlegen in .git/hook Directory:
 +
 +<code bash>
 +#!/bin/sh 
 +GIT_WORK_TREE=/c/work/server git checkout -f
 +</code>
 +
 +
 +
 +siehe auch https://mikeeverhart.net/2013/01/using-git-to-deploy-code/ 
 +
 +
 +
 +----
 +  
 +  
 +====Einen Git Server aufsetzen ====
 +
 +Ziel: Einen Git Server unter Linux mit einer komfortablen Weboberfläche aufsetzen
 +
 +
 +Übersicht über Web Interfaces für Git => https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Web_Interfaces
 +
 +=== SSH nützen===
 +
 +Am einfachsten kann das SSH Protokoll für eine verteilte Git Umgebung eingesetzt werden. 
 +Dies ist zum Beispiel sehr praktisch um in einer Server Umgebung Konfigurationsdateien etc. über git zu verwalten.
 +
 +Spezielle Firewall Regeln sind dann nicht notwendig, die bestehenden Wartungszugänge können genützt werden.
 +
 +Auf einem zentralen Server das Repository leer anlegen
 +<code bash>
 +mkdir sqlscripts
 +cd sqlscripts
 +git init --bare --shared
 +</code>
 +
 +Mit Dateien füllen und entsprechend die erste Version anlegen.
 +
 +Die SSH Zugänge mit Keys hinterlegen (falls möglich siehe für die Keys [[linux:vi#ssh_key_austausch|SSH Key's verwenden]]
 +
 +
 +Das Repository kann nun über ssh auf die entsprechenden Server geklont werden
 +<code bash>
 +git clone root@primaeppmp151:/srv/sqlscripts/ sqlscripts
 +</code>
 +
 +
 +===gitlab===
 +
 +Installationsanleitung und Download über https://about.gitlab.com/downloads/ oder mit dem https://bitnami.com/stack/gitlab/installer auf einen eigenen Server.
 +
 +
 +Anbinden an das AD => https://www.caseylabs.com/setup-gitlab-ce-with-active-directory-authentication/
 +
 +
 +== Test mit einer virtuellen Maschine ==
 +
 +Für einen ersten Test kann auch hier eine Virtuelle Maschine heruntergeladen werden => https://bitnami.com/stack/gitlab , bzw. https://bitnami.com/stack/gitlab/virtual-machine
 +
 +Datei herunterladen und über  VMWare Workstation die bitnami-gitlab-8.14.3-0-linux-ubuntu-14.04-x86_64.ova importieren, z.b. nach "R:\vmware\GITSRV01" und die VM Appliance starten.
 +
 +
 +Der User heißt bitnami, Password bitnami, das Password muss beim ersten Login gesetzt werden.
 +
 +System vorbereiten:
 +
 +<code bash>
 +# Keyboard auf Deutsch
 +sudo apt-get install console-common
 +
 +#Zeitzone setzen
 +sudo dpkg-reconfigure tzdata
 +
 +# Vmware Tools
 +apt-get install open-vm-tools
 +
 +</code>
 +
 +
 +Leider liegt bei dieser Maschine nun ein Problem mit der Netzwerk Konfiguration vor, DHCP funktioniert nicht, sorgfältig VMWare Netzwerk Eigenschaften und Status der Netzwerkkarte überprüfen.
 +
 +SSH einschalten:
 +<code bash>
 +$ sudo mv /etc/init/ssh.conf.back /etc/init/ssh.conf
 +$ sudo start ssh
 +</code>
 +
 +Aufruf der Weboberfläche über <ip-Adresse-der-appliance>:80 aufrufen und mit "user@example.com" und Password "bitnami1" anmelden und Konfiguration durchführen.
 +
 +Weiter siehe http://git-scm.com/book/en/v2/Git-on-the-Server-GitLab
 +
 +<fc #800000>Wichtig! Passwörter sorgfältig ausschreiben! Nachträglich macht das sonst keinen Spass mehr .-(</fc>
 +
 +
 +==Quellen==
 +
 +  * http://git-scm.com/book/en/v2/Git-on-the-Server-GitLab
 +
 +
 +----
 +
 +==== Quellen ====
 +
 +Git
 +
 +  * http://git-scm.com/doc
 +  * https://www.atlassian.com/git/tutorials/what-is-version-control
 +
 +
 +Übersicht:
 +
 +  * https://www.heise.de/developer/artikel/Die-vielfaeltigen-Faehigkeiten-von-Git-Teil-1-4456122.html
 +  * https://www.heise.de/developer/artikel/Die-vielfaeltigen-Faehigkeiten-von-Git-Teil-2-4476370.html
 +
 +Video Tutorials
 +
 +  * https://www.youtube.com/watch?v=qh-R0-7Ii_U
 +
 +
 +Zwei Git Repository mergen
 +
 +  * https://saintgimp.org/2013/01/22/merging-two-git-repositories-into-one-repository-without-losing-file-history/
 +
 +
 +MS VSS zu Git migrieren
 +
 +  * https://github.com/trevorr/vss2git
 +
 +Git umziehen
 +  * http://www.almguide.com/2016/02/10-steps-to-move-a-git-repo-from-github-to-visual-studio-team-services/
 +
 +Line Endings
 +  * https://help.github.com/articles/dealing-with-line-endings/
 +
 +
 +Changing a remote's URL
 +
 +  * https://help.github.com/articles/changing-a-remote-s-url/
 +
 +
 +Changing a commit message
 +  * https://help.github.com/articles/changing-a-commit-message/
 +
 +Repostory Cleaner
 +
 +  * https://rtyley.github.io/bfg-repo-cleaner/
prog/git_server.txt · Zuletzt geändert: 2022/06/13 08:36 von gpipperr