Git Client: Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(34 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Server ==
Siehe: [[Git_Server_(unterschiedliche_Versionen)|Git Server]]
== Installation ==
== Installation ==


=== PPA-Repository ===
<pre>
sudo add-apt-repository ppa:git-core/ppa
</pre>
=== Paket installieren ===
<pre>
sudo apt-get update
sudo apt-get install git
</pre>


== Konfiguration ==
== Konfiguration ==
Zeile 12: Zeile 28:


Kontrollieren kann man die Eingabe mit den selben Befehlen ohne Parameter.
Kontrollieren kann man die Eingabe mit den selben Befehlen ohne Parameter.
=== Remote-Repository hinzufügen ===
==== Mittels Editor ====
Die Date ''config'' bearbeiten
<pre>
vi .git/config
</pre>
und folgende Zeilen hinzufügen ('''Achtung: Benutzername und Passwort sind im Klartext'''):
<pre>
[remote "origin"]
url = https://<username>:<password>@<server>/<git project>.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
</pre>
==== Per Kommandozeile ====
Folgenden Befehl ausführen:
<pre>
git remote add origin https://<username>:<password>@<server>/<git project>.git
</pre>
Danach kann das Remote-Repositoy mit folgenden Befehl verifiziert werden:
<pre>
git remote -v
</pre>
== Visualisierung ==
=== Branch-Tree ===
<pre>
git log --all --graph --decorate --oneline
</pre>
== Graphische Benutzeroberfläche ==
Dazu [[RabbitVCS (Linux)|RabbitVCS]] installieren.


== Repository von Server klonen ==
== Repository von Server klonen ==
Zeile 32: Zeile 95:


<pre>
<pre>
<VirtualHost *:80>
git clone https://git.<domain>/<repository>.git [<local repository location>]
    ServerName git.<domain>
</pre>
    DocumentRoot /home/git/


    <Directory /home/git>
bzw. mit Zugangsdaten:
        Options +Indexes
        Require all granted
    </Directory>


    ErrorLog ${APACHE_LOG_DIR}/git.<domain>-error.log
<pre>
    CustomLog ${APACHE_LOG_DIR}/git.<domain>-access.log combined
git clone https://<user>:<password>@git.<domain>/<repository>.git [<local repository location>]
</VirtualHost>
</pre>
</pre>


Zeile 53: Zeile 111:


[http://www.tikalk.com/devops/setup-git-gitweb-git-http-backend-smart-http-ubuntu-1204/ http://www.tikalk.com/devops/setup-git-gitweb-git-http-backend-smart-http-ubuntu-1204/]
[http://www.tikalk.com/devops/setup-git-gitweb-git-http-backend-smart-http-ubuntu-1204/ http://www.tikalk.com/devops/setup-git-gitweb-git-http-backend-smart-http-ubuntu-1204/]
== Von Bare-Repository starten ==
# Klonen: siehe [[Git Client#Repository von Server klonen|Repository von Server klonen]]
# Ins Repository wechseln und Benutzer anlegen: siehe [[Git Client#Benutzer anlegen|Benutzer anlegen]]
# Datei anlgen, danach ''commit'' und ''push'':
<pre>
touch pom.xml
git commit -m "add pom.xml"
git push --set-upstream origin master
</pre>
== Datei löschen ==
<pre>
git rm <file>
git commit -m "remove <file>"
git push origin <branch_name> 
</pre>
== Lokalen Branch auf Remote-Branch zurücksetzen ==
Verwirft die lokalen Änderungen und aktualisiert die lokalen Dateien anhand des Remote-Repositories:
<pre>
git fetch origin
git reset --hard origin/master
</pre>
== Initial commit und push ==
Legt automatisch einen Branch <code>master</code> an:
<pre>
git add .
git commit -a -m "<message>"
git push
</pre>
== Stash ==
<pre>
git stash save "<message>"
</pre>
<pre>
git stash list
</pre>
<pre>
git stash pop stash@{2}
</pre>
=== Links ===
[https://www.atlassian.com/git/tutorials/saving-changes/git-stash https://www.atlassian.com/git/tutorials/saving-changes/git-stash]
== Neuen Branch aus commiteten aber noch nicht gepushten Master erstellen ==
<pre>
git log --graph
git checkout -b stock
git log --graph
git checkout master
git reset --hard origin/master
gitk --all
</pre>
== Selbst signiertes Zertifikat hinzufügen ==
Das Hinzufügen des selbst signierten Zertifikats wird am Beispiel des <code>jenkins</code>-Benutzers(siehe [[Jenkins_(Ubuntu)#Git|Jenkins]]) beschrieben.
Dazu das Zertifkat herunterladen
<pre>
openssl s_client -connect git.<domain>:443
</pre>
und das Zertifikat aus der Ausgabe
<pre>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</pre>
in die Datei hinzufügen (weitere Zertifkate einfach in dieser Datei anhängen):
<pre>
sudo -u jenkins mkdir /var/lib/jenkins/git_certs
sudo -u jenkins vi /var/lib/jenkins/git_certs/cert.pem
</pre>
Nach dem Herunterladen muss das Zertifikat noch zur Git-Konfiguration hinzugefügt werden:
<pre>
sudo -u jenkins git config --global http.sslCAInfo /var/lib/jenkins/git_certs/cert.pem
</pre>
Danach sollte die Konfigurationsdatei
<pre>
sudo vi /var/lib/jenkins/.gitconfig
</pre>
in etwa so aussehen:
<pre>
[http]
        sslCAInfo = /var/lib/jenkins/git_certs/cert.pem
</pre>


== Zu Git umziehen ==
== Zu Git umziehen ==
Zeile 71: Zeile 241:
<pre>
<pre>
git config --global http.sslverify false
git config --global http.sslverify false
</pre>
oder noch besser - das Zertifkat als vertrauenswürdig hinzufügen:
siehe [[Git_Client#Selbst signiertes Zertifikat hinzufügen|Selbst signiertes Zertifikat hinzufügen]]
=== Git: fatal: Der aktuelle Branch master hat keinen Upstream-Branch ===
<pre>
git push --set-upstream origin master
</pre>
</pre>


== Verwendung ==
== Verwendung ==


=== git gui ===
[http://rkd.zgib.net/scicomp/git-practical/git-practical.html http://rkd.zgib.net/scicomp/git-practical/git-practical.html]




Zurück zu [[Ubuntu#G (Client)|Ubuntu]]
Zurück zu [[Ubuntu#G (Client)|Ubuntu]]

Aktuelle Version vom 21. September 2022, 09:17 Uhr

Server

Siehe: Git Server

Installation

PPA-Repository

sudo add-apt-repository ppa:git-core/ppa

Paket installieren

sudo apt-get update
sudo apt-get install git 

Konfiguration

Benutzer anlegen

git config --global user.name "<first name> <surname>"
git config --global user.email <user>@<domain> 

Kontrollieren kann man die Eingabe mit den selben Befehlen ohne Parameter.

Remote-Repository hinzufügen

Mittels Editor

Die Date config bearbeiten

vi .git/config

und folgende Zeilen hinzufügen (Achtung: Benutzername und Passwort sind im Klartext):

[remote "origin"]
	url = https://<username>:<password>@<server>/<git project>.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

Per Kommandozeile

Folgenden Befehl ausführen:

git remote add origin https://<username>:<password>@<server>/<git project>.git

Danach kann das Remote-Repositoy mit folgenden Befehl verifiziert werden:

git remote -v

Visualisierung

Branch-Tree

git log --all --graph --decorate --oneline

Graphische Benutzeroberfläche

Dazu RabbitVCS installieren.

Repository von Server klonen

per SSH-Protokoll

git clone ssh://<user>@<server>/home/git/test.git

per GIT-Protokoll

Dazu muss git als Dämon laufen - siehe Git als Dämon starten

git clone git://git.<domain>/test.git test

per HTTP-Protokoll

git clone https://git.<domain>/<repository>.git [<local repository location>]

bzw. mit Zugangsdaten:

git clone https://<user>:<password>@git.<domain>/<repository>.git [<local repository location>]

Links

https://git-scm.com/docs/git-http-backend

https://kupschke.net/2012/02/23/git-server-mit-apache-und-dem-git-smart-http-protokoll/

http://www.tikalk.com/devops/setup-git-gitweb-git-http-backend-smart-http-ubuntu-1204/

Von Bare-Repository starten

  1. Klonen: siehe Repository von Server klonen
  2. Ins Repository wechseln und Benutzer anlegen: siehe Benutzer anlegen
  3. Datei anlgen, danach commit und push:
touch pom.xml
git commit -m "add pom.xml"
git push --set-upstream origin master

Datei löschen

git rm <file>
git commit -m "remove <file>"
git push origin <branch_name>  

Lokalen Branch auf Remote-Branch zurücksetzen

Verwirft die lokalen Änderungen und aktualisiert die lokalen Dateien anhand des Remote-Repositories:

git fetch origin
git reset --hard origin/master

Initial commit und push

Legt automatisch einen Branch master an:

git add .
git commit -a -m "<message>"
git push

Stash

git stash save "<message>"
git stash list
git stash pop stash@{2}

Links

https://www.atlassian.com/git/tutorials/saving-changes/git-stash

Neuen Branch aus commiteten aber noch nicht gepushten Master erstellen

git log --graph
git checkout -b stock
git log --graph
git checkout master
git reset --hard origin/master
gitk --all

Selbst signiertes Zertifikat hinzufügen

Das Hinzufügen des selbst signierten Zertifikats wird am Beispiel des jenkins-Benutzers(siehe Jenkins) beschrieben.


Dazu das Zertifkat herunterladen

openssl s_client -connect git.<domain>:443

und das Zertifikat aus der Ausgabe

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

in die Datei hinzufügen (weitere Zertifkate einfach in dieser Datei anhängen):

sudo -u jenkins mkdir /var/lib/jenkins/git_certs
sudo -u jenkins vi /var/lib/jenkins/git_certs/cert.pem

Nach dem Herunterladen muss das Zertifikat noch zur Git-Konfiguration hinzugefügt werden:

sudo -u jenkins git config --global http.sslCAInfo /var/lib/jenkins/git_certs/cert.pem

Danach sollte die Konfigurationsdatei

sudo vi /var/lib/jenkins/.gitconfig

in etwa so aussehen:

[http]
        sslCAInfo = /var/lib/jenkins/git_certs/cert.pem

Zu Git umziehen

Links

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

Probleme

fatal: remote error: access denied or repository not exported: /test.git

Entweder eine leere Datei git-daemon-export-ok im Repository anlegen oder den Dämonen mit der Option --export-all Option starten.

fatal: unable to access 'https://git.<domain>/test.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

SSL-Verifizierung mittels folgendem Befehl deaktivieren:

git config --global http.sslverify false

oder noch besser - das Zertifkat als vertrauenswürdig hinzufügen:

siehe Selbst signiertes Zertifikat hinzufügen

Git: fatal: Der aktuelle Branch master hat keinen Upstream-Branch

git push --set-upstream origin master

Verwendung

git gui

http://rkd.zgib.net/scicomp/git-practical/git-practical.html


Zurück zu Ubuntu