Logo carnetderootxzz@carnetderoot.net"La simplicité est la sophistication suprême" - Léonard De Vinci
samedi 14 février 2026

:: Nextcloud en ligne de commande ::

Commandes occ

Rappel

Les commandes occ sont des commandes php et doivent donc être lancées via php. D'autre part, elles doivent être lancées avec les droits de l'utilisateur propriétaire du répertoire Nextcloud (ici 'www-data').

Par exemple, pour lister les commandes occ disponibles :

# sudo -u www-data /usr/bin/php occ list
[...]
Available commands:
  check                                  check dependencies of the server environment
  completion                             Dump the shell completion script
  help                                   Display help for a command
  list                                   List commands
  setupchecks                            Run setup checks and output the results
  status                                 show some status information
  upgrade                                run upgrade routines after installation of a new release. The release has to be installed before.
 activity
  activity:send-mails                    Sends the activity notification mails
 admin-delegation
  admin-delegation:add                   add setting delegation to a group
  admin-delegation:remove                remove settings delegation from a group
[...]

Maintenance du système

Vérification des mises à jour

# sudo -u www-data php occ update:check
Nextcloud 32.0.6 is available. Get more information on how to update at https://docs.nextcloud.com/server/32/admin_manual/maintenance/upgrade.html.
Update for calendar to version 6.2.0 is available.
Update for contacts to version 8.3.2 is available.
Update for cookbook to version 0.11.6 is available.
Update for files_automatedtagging to version 3.0.3 is available.
Update for groupfolders to version 20.1.10 is available.
Update for mail to version 5.6.12 is available.
Update for spreed to version 22.0.9 is available.
8 updates available

Mise à jour des applications

Mise à jour d'une application spécifique

# sudo -u www-data php occ app:update calendar
calendar new version available: 6.2.0
calendar updated

Mise à jour de toutes les applications

# sudo -u www-data php occ app:update --all
spreed new version available: 22.0.9
spreed updated
contacts new version available: 8.3.2
contacts updated
cookbook new version available: 0.11.6
cookbook updated
groupfolders new version available: 20.1.10
groupfolders updated
files_automatedtagging new version available: 3.0.3
files_automatedtagging updated
quicknotes new version available: 0.8.40
quicknotes updated
mail new version available: 5.6.12
mail updated
notes new version available: 4.13.0
notes updated

Gestion des utilisateurs

Commandes disponibles

 user
  user:add                               adds an account
  user:auth-tokens:add                   [user:add-app-password] Add app password for the named account
  user:auth-tokens:delete                Deletes an authentication token
  user:auth-tokens:list                  List authentication tokens of an user
  user:clear-avatar-cache                clear avatar cache
  user:delete                            deletes the specified user
  user:disable                           disables the specified user
  user:enable                            enables the specified user
  user:info                              show user info
  user:keys:verify                       Verify if the stored public key matches the stored private key
  user:lastseen                          shows when the user was logged in last time
  user:list                              list configured users
  user:profile                           Read and modify user profile properties
  user:report                            shows how many users have access
  user:resetpassword                     Resets the password of the named user
  user:setting                           Read and modify user settings
  user:sync-account-data                 sync user backend data to accounts table for configured users
  user:welcome                           Sends the welcome email

Résumé des utilisateurs

# sudo -u www-data php occ user:report
+------------------+---+
| Account Report   |   |
+------------------+---+
| Database         | 2 |
| LDAP             | 3 |
|                  |   |
| total users      | 5 |
|                  |   |
| user directories | 2 |
| active users     | 4 |
| disabled users   | 0 |
+------------------+---+

Lister les utilisateurs

# sudo -u www-data /usr/bin/php occ user:list
  - admin: admin
  - user1: Utilisateur local
  - eb34a76e-047d-4f78-9bb0-cf352b352014: Utilisateur LDAP
  [...]

La liste des utilisateurs est de la forme id: Nom complet

Infos d'un utilisateur

Utilisateur local

# sudo -u www-data php occ user:info admin
  - user_id: admin
  - display_name: admin
  - email: admin@carnetderoot.net
  - cloud_id: admin@cloud.carnetderoot.net
  - enabled: true
  - groups:
    - admin
  - quota: 10 GB
  - storage:
    - free: 10712659669
    - used: 24758571
    - total: 10737418240
    - relative: 0.23
    - quota: 10737418240
  - first_seen: unknown
  - last_seen: 2026-02-06T19:42:15+00:00
  - user_directory: /var/cloud/nextcloud/data/admin
  - backend: Database

Utilisateur LDAP

# sudo -u www-data php occ user:info eb34a76e-047d-4f78-9bb0-cf352b352014
  - user_id: eb34a76e-047d-4f78-9bb0-cf352b352014
  - display_name: Utilisateur LDAP
  - email: ldap_user@carnetderoot.local
  - cloud_id: eb34a76e-047d-4f78-9bb0-cf352b352014@cloud.carnetderoot.net
  - enabled: true
  - groups:
  - quota: 10 GB
  - storage:
    - free: 10737418240
    - used: 0
    - total: 10737418240
    - relative: 0
    - quota: 10737418240
  - first_seen: never
  - last_seen: never
  - user_directory: /var/cloud/nextcloud/data/eb34a76e-047d-4f78-9bb0-cf352b352014
  - backend: LDAP

Gestion des groupes

Commandes disponibles

 group
  group:add                              Add a group
  group:adduser                          add a user to a group
  group:delete                           Remove a group
  group:info                             Show information about a group
  group:list                             list configured groups
  group:removeuser                       remove a user from a group

:: Utilisation de la commande find sous Linux ::

Syntaxe générale

find <chemin> <options>

Utilisation

Options fréquemment utilisées

Option Signification
-name Recherche du nom de fichier suivant le motif indiqué
-iname Semblable à '-name', mais sans différenciation de la casse
-type Recherche selon le type de fichier
-size Recherche par taille
-empty Fichier vide (fichier normal ou répertoire)
-ctime, -mtime, -atime Recherche par date de création, date de dernière modification ou date de dernier accès (n*24h)
-cmin, -mmin, -amin Recherche par date de création, date de dernière modification ou date de dernier accès (n minutes)
-user, -group Recherche par propriétaire ou par groupe
-perm Recherche par permissions

Type de fichier (option '-type')

Type Signification
b Mode bloc
c Mode caractère
d Répertoire
p Tube nommé
f Fichier normal
l Lien symbolique
s Socket

Unité de taille (option '-size')

Unité Signification
b bloc de 512 octets (défaut)
c octet
W mot de deux octets
k kilooctet (KiO)
M mégaoctet (MiO)
G gigaoctet (GiO)

Options combinées

Il est possible de combiner plusieurs options de recherche, ces éléments étant séparés par des opérateurs :

Opérateur Signification
-and, -a ET logique (permet d'utiliser plusieurs options)
-or, -o OU logique (si la 1ère expression est vraie la suivante n'est pas exprimée)
-not, ! Exception

Note : En cas d'absence d'opérateurs, '-and' est appliqué par défaut

Références


mardi 09 avril 2024

:: Docker ::

Principes

-------------- -------------- --------------
| ---------- | | ---------- | | ---------- |
| |  App1  | | | |  App2  | | | |  App3  | |
| ---------- | | ---------- | | ---------- |
| ---------- | | ---------- | | ---------- |
| |  Deps  | | | |  Deps  | | | |  Deps  | |
| ---------- | | ---------- | | ---------- |
|            | |            | |            |
| Conteneur1 | | Conteneur2 | | Conteneur3 |
-------------- -------------- --------------
--------------------------------------------                ------------
|                  Images                  | <-----get----- | Registry |
--------------------------------------------                ------------
--------------------------------------------
|              Moteur Docker               |
--------------------------------------------
--------------------------------------------
|                    OS                    |
--------------------------------------------
--------------------------------------------
|                 Serveur                  |
--------------------------------------------

Installation

Nettoyage

$ sudo apt remove docker docker-engine docker.io conteneurd runc

Déclaration du dépôt Docker

$ sudo apt install ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Installation de docker

$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli conteneurd.io docker-buildx-plugin docker-compose-plugin

Ajout de l'utilisateur au groupe docker

$ sudo usermod -aG docker $USER

Premiers pas

Vérifier la version

$ docker version
Client:
[...]
Server:
[...]

Infos supplémentaires

$ docker info
conteneurs: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
[...]

Test du bon fonctionnement de l'installation

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
[...]
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]

Commandes principales

Lister les conteneurs

conteneurs actifs

$ docker ps
conteneur ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3dbec964fa3a   nginx:latest   "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes   80/tcp    agitated_dubinsky

Tous les conteneurs

$ docker ps -a [--all]
conteneur ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
3dbec964fa3a   nginx:latest   "/docker-entrypoint.…"   6 minutes ago    Up 7 minutes                80/tcp    agitated_dubinsky
882f5d50bdab   nginx:latest   "/docker-entrypoint.…"   13 minutes ago   Exited (0) 12 minutes ago             dreamy_yalow
[...]

Lancer un conteneur

$ docker run nginx:latest

Options

  • -d : lance le conteneur en arrière-plan (detached)
  • -ti : mode interactif (text interactive)
  • --rm : supprime le conteneur lorsqu'il est stoppé
  • --name : assigne un nom au conteneur
  • --hostname : modifie le hostname du système dans le conteneur
  • --dns : précise le serveur DNS à utiliser dans le conteneur

Exemple :

$ docker run -d -ti --rm --name c1 --hostname h1 --dns 192.168.0.254 debian:latest

Manipuler les conteneurs

Note : on peut utiliser soit le nom du conteneur, soit son id.

Stopper un conteneur

$ docker stop c1

Démarrer un conteneur

$ docker start c1

Supprimer un conteneur

Note : on ne peut pas supprimer un conteneur actif, il faut d'abord le stopper ou forcer sa suppression avec l'argument "--force" ou "-f"

$ docker rm c1
$ docker rm -f c1

Pour supprimer tous les conteneurs :

$ docker rm -f $(docker ps)
$ docker rm -f $(docker ps -a)

Gestion des volumes

Lister les volumes

$ docker volume ls

Créer un volume

$ docker volume create mynginx

$ docker volume ls
DRIVER    VOLUME NAME
local     mynginx

Consulter les métadatas

$ docker volume inspect mynginx
[
    {
        "CreatedAt": "2024-04-04T17:31:23+02:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/mynginx/_data",
        "Name": "mynginx",
        "Options": null,
        "Scope": "local"
    }
]

Supprimer un volume

Note : on ne peut pas supprimer un volume en cours d'utilisation

$ docker volume rm mynginx

Utiliser le volume dans un conteneur

$ docker run -d --name c1 -v mynginx:/usr/share/nginx/html/ nginx:latest

$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
c43d0ade1d09   nginx:latest   "/docker-entrypoint.…"   4 seconds ago   Up 3 seconds   80/tcp    c1

Pour vérifier, on lance un shell bash interactif dans le conteneur et on affiche le contenu du fichier index.html par défaut de nginx :

$ docker exec -ti c1 bash
root@c43d0ade1d09:/# cat /usr/share/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
[...]
</body>
</html>

mercredi 05 avril 2023

:: Cheatsheet FreeBSD ::

Mise à jour

Mise à jour système

# freebsd-update fetch
# freebsd-update install

Mise à jour paquets

# pkg update
# pkg upgrade [-y]

Gestion des paquets pré-compilés

Recherche

$ pkg search neovim

Installation

# pkg install [-y] neovim

Téléchargement (sans installation)

$ sudo pkg fetch -y -d -o /usr/home/xzz/packages/ neovim

Options :

  • -d : téléchargement des dépendances
  • -o : répertoire cible
  • -y : sans confirmation

Téléchargement (sans installation) dans le répertoire cache par défaut

Par défaut pkg utilise le répertoire cache définit par la variable PKG_CACHEDIR du fichier /usr/local/etc/dpkg.conf (défaut /var/cache/pkg).

Installation d'un paquet téléchargé

$ sudo pkg install /usr/home/xzz/packages/All/neovim-0.8.2.pkg

Suppression de paquets

$ sudo pkg delete neovim

Suppression automatique des paquets inutilisés

$ sudo pkg autoremove

Note : relancer la commande plusieurs fois si nécessaire jusqu'à obtenir un résultat similaire au retour ci-dessous.

Checking integrity... done (0 conflicting)
Nothing to do.

Informations sur les paquets installés

Liste de tous les paquets installés

$ pkg info

Liste des paquets explicitement installés

$ pkg prime-list

Avec le repository d'origine :

$ pkg prime-origins

Informations sur un paquet

$ pkg info neovim
neovim-0.8.2
Name           : neovim
Version        : 0.8.2
[...]

Déterminer quel package a installé un fichier

$ pkg which /usr/local/bin/perl

Auditer les paquets installés

$ pkg audit -F
vulnxml file up-to-date
0 problem(s) in 0 installed package(s) found.

Option :

  • -F : met à jour la base avant de vérifier

Nettoyage du cache

Cette commande permet de ne garder que la dernière version des paquets en cache.

# pkg clean

Pour vider intégralement le cache :

# pkg clean -a

Gestion des utilisateurs

Ajout d'un nouvel utilisateur

# pw useradd -n xzz -c "Xzz" -s /bin/sh -m -w random

Options :

  • -n : Utilisateur
  • -c : Commentaire
  • -s : Emplacement du shell
  • -m : Création du répertoire personnel
  • -w : Mode de génération du mot de passe

Suppression d'un utilisateur et de son répertoire personnel

# pw userdel -n xzz -r

Option :

  • -r : Suppression du répertoire utilisateur

Ajout d'un utilisateur au groupe wheel

# pw groupmod wheel -m xzz

Références


mercredi 23 juin 2021

:: Bash - Trucs utiles ::

Couleurs

Afficher les couleurs supportées par le terminal

for color in {0..255}; do
    tput setab $color
    echo -n "$color "
done
tput sgr0
echo

~/.bashrc

Equivalence de couleurs

Couleur Code
Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
Light Gray 0;37
Dark Gray 1;30
Light Blue 1;34
Light Green 1;32
Light Cyan 1;36
Light Red 1;31
Light Purple 1;35
Yellow 1;33
White 1;37

Eléments basiques

Code Elément affiché
\a Echappement
\d Date (Sun Jun 20)
\e Caractère 'Bell'
\h Nom d'hôte (hostname)
\H Nom d'hôte complet (hostname.domain.tld)
\j Nombre de process lancés par le shell
\l Nom du terminal
\n Retour à la ligne
\r Retour chariot
\u Nom d'utilisateur
\v Version de Bash
\w Répertoire courant
\W Chemin complet du répertoire courant
! Numéro d'historique de la commande en cours

Exemples

Couleur du prompt en rouge

PS1='\[\033[31m\][\u@\h \W]\$\[\033[0m\] '

Couleur du prompt en bleu

PS1='\[\033[34m\][\u@\h \W]\$\[\033[0m\] '

Bashrc

#
# ~/.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

####################
# SHELL OPTS
###############
#PS1='[\u@\h \W]\$ '
PS1='\[\033[34m\][\u@\h \w]\$\[\033[0m\] '

####################
# ENV
###############
# Editor
export EDITOR=vim

####################
# ALIAS
###############
# Colorization of outputs
alias diff='diff --color=auto'
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias ls='ls --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias ip='ip --color=auto'
alias dmesg='dmesg --color=always'

# Commands alias
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias cls='clear'
alias vi='vim'

# Tricks & Useful aliases
alias cd..='cd ..'
alias env='env | sort'
# -> if the second argument is an alias, it will get expanded prior to passing to sudo
alias sudo='sudo '
alias keygen='keygen -C "$(whoami)@$(uname -n)-$(date -I)"'

Références


lundi 05 avril 2021
jeudi 02 juillet 2020

:: Xresources ::

Le fichier Xresources, habituellement ~/.Xresources, peut être utilisé pour configurer les applications X.

Configuration de xterm

Xterm.termName: xterm
Xterm.vt100.locale: true
XTerm.vt100.metaSendsEscape: true
XTerm.vt100.backarrowKey: false
XTerm.ttyModes: erase ^?
XTerm.vt100.saveLines: 4096
XTerm.vt100.scrollBar: true
XTerm.vt100.scrollbar.width: 8
!-------------------------------------------------------------------------------
! Fonts
XTerm.vt100.faceName: DejaVu Sans Mono:size=9:antialias=true
XTerm.vt100.font: 7x13
!-------------------------------------------------------------------------------
! Colors
*background: #181818
*foreground: #c0c0c0
*cursorColor: #93a1a1
!! black dark/light
*color0: #121212
*color8: #2e3436
!! red dark/light
*color1: #a35b66
*color9: #ab6b74
!! green dark/light
*color2: #99ab6f
*color10: #acb972
!! yellow dark/light
*color3: #ca9733
*color11: #ccaa69
!! blue dark/light
*color4: #495d6e
*color12: #687987
!! magenta dark/light
*color5: #825969
*color13: #977381
!! cyan dark/light
*color6: #839191
*color14: #98a4a4
!! white dark/light
*color7: #e0e0e0
*color15: #e5e5e5

mercredi 12 février 2020

:: ALSA ::

Liste des périphériques audio

$ cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf2520000 irq 30

Liste des périphériques de capture

$ arecord -l
**** Liste des Périphériques Matériels CAPTURE ****
carte 0: PCH [HDA Intel PCH], périphérique 0: CX20590 Analog [CX20590 Analog]
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0

Test du microphone

Enregistrement

$ arecord -d 10 /tmp/test-mic.wav

Lecture

$ aplay /tmp/test-mic.wav

Utilitaires Alsa

Mixeur Alsa

$ alsamixer

Enregistrmeent des paramètres

$ sudo alsactl store

:: Création et montage d'une partition chiffrée LUKS sur sdx1 ::

Note : remplacer sdx1 par le périphérique concerné

Installation de cryptsetup

$ sudo apt-get install cryptsetup

Créez une partition non-formatée (fdisk, gdisk, etc.)

Création de la partition chiffrée

$ sudo cryptsetup luksFormat /dev/sdx1

En précisant un format (exemple de chiffrement fort) :

$ sudo cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdx1

Ouverture

$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt

Création du répertoire de montage

$ sudo mkdir /mnt/sdx1_crypt

Formatage

$ sudo mkfs.ext4 /dev/mapper/sdx1_crypt

Montage

$ sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

Modifications des permissions pour que le répertoire appartienne à l'utilisateur courant et au groupe 'users'

$ sudo chown $USER:users /mnt/sdx1_crypt/ -R

Démontage du volume

$ cd / && sudo umount /mnt/sdx1_crypt    

Fermeture

$ sudo cryptsetup luksClose sdx1_crypt

Utilisation du volume

Ouverture

$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt

Montage

$ sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

Instructions pour démonter et fermer

Démontage

$ cd / && sudo umount /mnt/sdx1_crypt    

Fermeture

$ sudo cryptsetup luksClose sdx1_crypt

One-liner

Ouverture

$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt && sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

ou, si on est root :

# echo 'passphrase' | cryptsetup luksOpen /dev/sdx1 sdx1_crypt && mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

Fermeture

$ cd / && sudo umount /mnt/sdx1_crypt && sudo cryptsetup luksClose sdx1_crypt

ou, si on est root :

# cd / && umount /mnt/sdx1_crypt && cryptsetup luksClose sdx1_crypt

dimanche 06 mai 2018

:: Git ::

Introduction

Fichiers de configuration

Git utilise une série de fichiers de configuration pour déterminer son comportement. Les emplacements sont lus dans un ordre précis et les valeurs lues en dernier écrasent les précédentes ("C'est le dernier qui parle qui a raison"). Vous pouvez positionner ces valeurs manuellement en éditant ces fichiers, mais je vous recommande d'utiliser la commande git config, ne serait-ce que pour éviter des erreurs de syntaxe.

/etc/gitconfig

Contient des valeurs pour tous les utilisateurs du système et tous leurs dépôts. Pour lire et modifier ce fichier, utiliser l'option --system avec git config.

$ git config --system [...]

~/.gitconfig

Spécifique à chaque utilisateur. Pour lire et modifier ce fichier, utiliser l'option --global.

$ git config --global [...]

.git/config

Le dernier emplacement lu par git est le fichier de configuration du dépôt en cours d'utilisation. Ces valeurs sont spécifiques à un unique dépôt. Pour lire et modifier ce fichier, utiliser l'option --local.

$ git config --local [...]

git-config

Pour modifier le comportement de git, il est nécessaire de spécifier certains paramètres de configuration à l'aide de la commande git-config.

Synopsis

$ git config [<file-option>] [type] [--show-origin] [-z|--null] name [value [value_regex]]
$ git config [<file-option>] [type] --add name value
$ git config [<file-option>] [type] --replace-all name value [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] --get name [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] --get-all name [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
$ git config [<file-option>] [type] [-z|--null] --get-urlmatch name URL
$ git config [<file-option>] --unset name [value_regex]
$ git config [<file-option>] --unset-all name [value_regex]
$ git config [<file-option>] --rename-section old_name new_name
$ git config [<file-option>] --remove-section name
$ git config [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
$ git config [<file-option>] --get-color name [default]
$ git config [<file-option>] --get-colorbool name [stdout-is-tty]
$ git config [<file-option>] -e | --edit

Paramètres de configuration

Identité

Note importante : ces informations sont utilisées par Git de manière indélébile (on ne peut changer l'auteur d'un commit après-coup, ni son adresse email).

$ git config --global user.name "Xzz"
$ git config --global user.email "xzz@carnetderoot.net"

Editeur de texte

A ne pas oublier, mon éditeur de texte préféré (parce que nano par défaut, hein, sérieux...) :

$ git config --global core.editor vi

Colorisation de la sortie de git

Pour faire simple on peut activer la colorisation de plusieurs paramètres en une seule commande :

$ git config --global color.ui auto

Si on préfère agir de manière spécifique, on peut modifier les paramètres un par un

$ git config --global color.branch auto
$ git config --global color.diff auto
$ git config --global color.interactive auto
$ git config --global color.status auto

Pour plus de détails sur les paramètres disponibles et leurs effets, je vous invite à consulter la documentation de référence git-config

Vérification des paramètres

$ git config --list
user.name=Xzz
user.email=xzz@carnetderoot.net
color.ui=auto
core.editor=vi

Utilisation de Git

Utilisation courante

Initialisation d'un projet

$ cd projet
$ git init
Dépôt Git vide initialisé dans /path/to/projet/.git/

Ajout des fichiers au projet

$ git add .

Supprimer des fichiers de l'index (ne plus les suivre)

$ git rm --cached fichier_a_ne_plus_suivre.pm

Attention à ne pas oublier l'option --cached ! Si vous omettez ce commutateur, la commande supprimera aussi le fichier du système de fichier :-)

Commit initial

$ git commit -m "Mon premier commit"
[master (commit racine) 6337a68] Commit initial
 89 files changed, 61074 insertions(+)
 create mode 100644 MANIFEST
 create mode 100644 MANIFEST.SKIP
 ...

Retirer des éléments de la synchronisation

Certains fichiers n'ayant pas besoin d'être synchronisés (fichiers temporaires, fichiers de swap, répertoire de sessions, etc.), on crée un fichier .gitignore contenant la liste des fichiers et répertoires à ignorer.

$ vi .gitignore

Contenu de .gitignore :

# Commentaire
# Ignorer les fichiers journaux
logs/
# Ignorer les fichiers temporaires
tmp/
# Ignorer les fichiers en cours d'edition
*.swp
...

Ajout du fichier au repository

$ git add .gitignore
$ git commit -m "Ajout du fichier .gitignore"
[master 8896d55] Ajout du fichier .gitignore
 1 file changed, 6 insertions(+)
 create mode 100644 .gitignore

Ignorer des fichiers déjà commités

Dans le cas où on ne veut plus synchroniser des fichiers déjà commités, ni avoir un retour lors d'un git status, il est préférable de réindexer l'ensemble des fichiers à synchroniser.

Pour cela, le moyen radical est de supprimer l'index existant, rajouter les fichiers puis faire un commit.

Attention : penser à commiter les dernieres modifications de code avant de lancer les commandes ci-dessous

$ git rm -r --cached
$ git add .
$ git commit -m "Suppression de tous les fichiers de l'index puis re-ajout pour bonne prise en compte du fichier .gitignore"

Vérification

$ git status
Sur la branche master
rien à valider, la copie de travail est propre

Historique des commits

$ git log

Création d'un dépôt distant

Sur le serveur distant

$ cd /opt/git
$ mkdir projet.git
$ cd projet.git/
$ git --bare init
Dépôt Git vide initialisé dans /opt/git/projet.git/

Sur le poste hébergeant le dépôt local

$ cd projet
$ git init
$ git add .
$ git commit -m "Mon premier commit"
$ git remote add nom_depot user@serveur:/opt/git/projet.git
$ git push nom_depot master

Clonage du dépôt sur un autre poste

$ git clone user@serveur:/opt/git/projet.git

Pousser ses modifications

$ git push nom_depot master

Gestion des dépôts

Afficher les dépôts enregistrés

$ git remote
$ git remote -v

Ajouter un dépôt

$ git remote add nom_depot url

Modifier un dépôt

$ git remote set-url nom_depot url

Supprimer un dépôt

$ git remote rm nom_depot

Références