gitlab

Ceci est une ancienne révision du document !


GitLab

testé sur Debian 9 Stretch

⇒ Git est un Distributed Version Control System (DVCS)

⇒ GitLab est une interface pour Git

⇒ outil de gestion d'équipe

⇒ stockage de code dans un dépôt sous forme de source distant ou local, garde les version précédentes, génère un historique

⇒ toutes personnes auorisées peuvent contrinuer au code

Gère les dépôts, les issues, les utilisateurs, les groupes, intégration continue

Peut envoyer des messages vers Mattermost

Serveur: Gogs, GItlab, framagit,

Client: gitkraken, cgit

Quelques exemples de plugins:

Snippets: permet de partager des bouts de code entre utilisateurs

Gist: comme un pastbin mais pas temporaire

Gravatar: site qui fait la liaison entre tous les sites pour les avatars

# apt-get update

# apt-get install -y curl openssh-server ca-certificates

# apt-get install postfix

Indiquez 'Internet Site'

# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | bash

Pour installer la version Community Edition (gitlab-ce) ou pour la version propriétaire Enterprise Edition (gitlab-ee)

# EXTERNAL_URL=“http://gitlab.example.com” apt-get install gitlab-ce

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_gitlab -C "Clef SSH pour GitLab" -o -a 100
ssh-keygen -t ed25519 -f -f ~/.ssh/id_gitlab -C "Clef SSH pour GitLab" -a 100

On peut importer des projets (exemple le noyau Linux, https://github.com/torvalds/linux.git)

Fichier de configuration de gitlab:

/etc/gitlab/gitlab.rb

Fichier de configuration d'exemple:

/opt/gitlab/etc/gitlab.rb.template

Command line instructions

Git global setup
 
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"

Create a new repository

git clone git@gitlab.DOMAIN.TLD:root/repo.git
cd repo
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Existing folder

cd existing_folder
git init
git remote add origin git@gitlab.DOMAIN.TLD:root/repo.git
git add .
git commit -m "Initial commit"
git push -u origin master

Existing Git repository

cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.DOMAIN.TLD:root/repo.git
git push -u origin --all
git push -u origin --tags

Pour travailler sur un code il faut le récupérer:

Clone:

git clone < URL du dépôt > [destination]
--bare: récupérer un tarball
exemple: git clone --bare https://github.com/roundcube/roundcubemail/ /var/www/html/

Travailler sur un projet: avec une branche, parallèlement au master

Git est une arborescence

Une branche (new branch) est une déviation du code depuis un commit particulier

Commencer un projet:

git init

Pour visualiser les branches locales:

git branch

Pour visualiser les branches disponibles sur le serveur central:

git ls-remote

Pour afficher les dépôts configurés:

git remote -v

Ajouter un dépôt distant:

git remote add spare https://gitlab.com/patrick/anniversaire_de_patrick

Supprimer le dépôt machin:

git remote remove machin

Utiliser la nouvelle branche:

git checkout NouvelleBranche

Les tags sont utilisés pour figer une version

Travis est un outil utilisé par Git qui permet de valider le fonctionnement de tout le code

Exemple: répertoire git, fichier d'ajout readme, “First” message pour expliquer le commit

# mkdir git

# cd git

# git init

# touch readme

# git add readme

# git commit -m “First”

# git branch

	* master

# git branch nouvelle_branche

# tree .git

Créer et utiliser la nouvelle branche:

# git checkout -b nouvelle_branche

Voir tous les changments

# git status

Ajouter un fichier au Master ou Branche

git add Nom_du_fichier

Enregistrer l'avancement du code

git commit

Enregistrer l'avancement du code Alternative, envoi de toutes les modifications de tous les fichiers

git commit -a -m "message"

Avant son premier commit, il faut préciser:

git config --global user.name "USER NAME"
git config --global user.email "USER@DOMAIN.TLD"

Configurer l'éditeur préféré:

git config --global core.editor "vim"

Récupérer toutes les informations distantes:

git fetch origin

Comparer notre environnement de travail:

git log origin/dev..dev
git log dev..origin/dev

Comparer notre environnement de travail EN MODE GRAPHIQUE:

gitk log origin/dev..dev

Pour publier les commits sur le dépôt distant:

git push

Pour publier les commits sur le dépôt distant:

git push -u origin master	
git push -u origin NouvelleBranche

Pour fusionner deux branches

git merge master NouvelleBranche

Pour fusionner deux branches, se positionner sur la branche cible puis

git merge NouvelleBranche

A partir des commandes précédentes avec le fichier readme créé Aller sur http://gitlab.DOMAIN.TLD puis faire ces commandes:

# cd git
# git remote add origin http://gitlab.DOMAIN.TLD/root/test.git
# git push -u origin --all
Username for 'http://gitlab.DOMAIN.TLD': root
Password for 'http://root@gitlab.DOMAIN.TLD': 
Counting objects: 3, done.
Writing objects: 100% (3/3), 200 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://gitlab.DOMAIN.TLD/root/test.git
 * [new branch]      master -> master
 * [new branch]      nouvelle_branche -> nouvelle_branche
Branch master set up to track remote branch master from origin.
Branch nouvelle_branche set up to track remote branch nouvelle_branche from origin.

Procédure générale de Git

init → créer fichier → add → commit → push

# cd git

# git init ça créé un .git

# touch readme

# git add readme ou . pour que tous les fichiers du répertoire soient ajoutés

# git commit -m “bla bla”

# git remote rename origin old-origin

# git remote add origin git@gitlab.DOMAIN.TLD:root/test.git

# ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_gitlab -C “clef ssh pour gitlab” -o -a 100

	Ajouter notre clé à notre registre SSH:
# eval "$(ssh-agent -s)"
# ssh-add ~/.ssh/id_gitlab
		/!\ .git doit être avec les droits de l'utilisateur de la clef ssh

# git push -u origin master pour soumettre vos changements au serveur Git dans Master

# git status

Récupérer les dernières modifications depuis le dépôt:

# git pull

# Vérifier le .ssh/conf que la branche est bien dans le origin

Revenir en arrière

git log
git revert 5b1c84457c97379c6318c1c6a6f024e576d0595b

Visualiser des modifications:

git diff [ commit_1 commit_2 ]

Différence entre fetch et pull

git fetch= récupère la liste des modifications
git pull= récupère la liste des modifications + récupère le travail localement

Visualiser l'origine des modifications

git blame < fichier >

Annuler les modifications dans la copie de travail

git checkout --NOM_DU_FICHIER

Afficher la liste des branches du serveur:

git branch -r

Soit la méthode radicale, qui fait tout perdre

git checkout

Soit la méthode idéale, les modifications distantes sont mises en stash en:

git stash
git pull
	Vérifier les conflits
git stash pop	Permet de fusionner les deux versions en conflits

Pour lister les stash:

git stash list

Applique un stash mais ne le supprime pas de la liste

$ git stash apply [stash@{x}] 

Si on veut supprimer ensuite un stash

$ git stash drop 

<<<<<<<<<<<<<<<< HEAD	local
==========
>>>>>>>>>>>>>>>>	distant
NouvelleBranche

Supprimer une branche distante:

$ git push origin --delete NouvelleBranche

(différence entre deux fichiers exporté sous forme de fichier)

Créer le patch

Créer une nouvelle branche

$ git checkout -b patchMiniuature
		export
$ git format-patch master --stdout > correction_export_miniature.patch

Appliquer le patch

$ git apply --stat correction_export_miniature.patch
$ git apply --check correction_export_miniature.patch
$ git apply correction_export_miniature.patch
$ git am --signoff < correction_export_miniature.patch		en complément de la cde préc. pour insérer les informations de l'auteur du patch

fichier config:

fichier index: binaire, rescence les fichiers commités, permissions rattachés, la sommme de contrôle en SHA

	git ls-tree [-r|-d] <branch>

fichier head: indique branche courante et répertoire actuel

	cat $PROJET/.git/HEAD

Ajouter des membres

Settings / Members  

git pull
git checkout  branche
git origin branche
touch test.txt
git commit
git push --set-upstream origin branche

Après avoir faire un fork, il faut ajouter le nouveau dépôt

$ git remote add fork_truc git@gitlab.DOMAIN.TLD:USER/project.git
	remarquez qu'il faut changer le nom, fork au lieu de origin
$ vim README.MD 
 
$ git commit -a -m "fix #1"
 
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 3 commits.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
 
$ git pull
remote: Counting objects: 2, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From gitlab.DOMAIN.TLD:root/project
   5531440..bd5281e  master     -> origin/master
Merge made by the 'recursive' strategy.
 README.MD.orig | 7 +++++++
 1 file changed, 7 insertions(+)
 create mode 100644 README.MD.orig
 
$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
 
  git config --global push.default matching
 
To squelch this message and adopt the new behavior now, use:
 
  git config --global push.default simple
 
See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)
 
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 563 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To git@gitlab.DOMAIN.TLD:root/project.git
   bd5281e..7758735  master -> master

Dans l'interface web gitlab aller dans Issues / List / Closed pour voir la notification du fix #1

  • gitlab.1511643266.txt.gz
  • Dernière modification: 2017/11/25 21:54
  • par naos