informatique:scm:git

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
informatique:scm:git [2011/06/21 12:48] – modification externe 127.0.0.1informatique:scm:git [2022/06/14 09:08] (Version actuelle) bn8
Ligne 1: Ligne 1:
-====== Serveur Git ======+====== Git ======
  
-===== Installation =====+ 
 +===== Un serveur Git ===== 
 + 
 +==== Installation ====
  
   aptitude install git-core   aptitude install git-core
  
-===== Création/Initialisation d'un dépôt =====+==== Création/Initialisation d'un dépôt ====
 Il y a certainement mieux pour initialiser mais bon. Voilà une méthode de A-Z d'initialisation d'un nouveau repos : Il y a certainement mieux pour initialiser mais bon. Voilà une méthode de A-Z d'initialisation d'un nouveau repos :
   * En local sur un client :   * En local sur un client :
Ligne 38: Ligne 41:
  
  
-===== Mise en place d'un accès via git-daemon =====+==== Mise en place d'un accès via git-daemon ====
   * Éditer le fichier ///etc/inetd.conf// et ajouter la ligne suivante :   * Éditer le fichier ///etc/inetd.conf// et ajouter la ligne suivante :
  
Ligne 55: Ligne 58:
   * Restart openbsd-inetd : ///etc/init.d/openbsd-inetd restart//   * Restart openbsd-inetd : ///etc/init.d/openbsd-inetd restart//
  
-====== Accès au serveur ====== +=== Avec git-daemon-run  ===
-===== Renseigner son profil git ===== +
-  git config --global user.email "user@email.com" +
-  git config --global user.name "User Name"+
  
-**Remarque : ** Les infos sont stockées dans //˜/.gitconfig//+  Installer le paquet //git-daemon-run// : <code>apt-get install git-daemon-run</code> 
 +  Editer le fichier de lancement du daemon ///etc/sv/git-daemon/run// 
 +  Exemple d'une configuration avec un utilisateur //git// : <code>#!/bin/sh 
 +exec 2>&
 +echo 'git-daemon starting.
 +exec chpst -ugit \ 
 +  "$(git --exec-path)"/git-daemon --verbose --reuseaddr --export-all --enable=receive-pack \ 
 +    --base-path=/home/git /home/git</code>
  
-===== Clone ===== +Pour contrôler le service :
-  * Via Git (Lecture~)+
  
-  git clone git://srv/~toto/monprojet monprojet_local +  * Démarrage : <code>sv start git-daemon</code> 
-  +  * Arrêt <code>sv stop git-daemon</code> 
-  * Via SSH (Lecture/Écriture)+  * Redémarrage : <code>sv restart git-daemon</code>
  
-  git clone ssh://toto@srv/home/toto/public_git/monprojet monprojet_local+Suivie des logs dans le fichier : ///var/log/git-daemon/current//
  
-**monprojet_local** : Chemin local du repo 
  
-===== Utilisation courante ===== 
-  * Connaitre le statut des fichiers modifié/ajouté/supprimé 
  
-  git status+===== Accès au serveur ===== 
 +==== Renseigner son profil git ==== 
 +<code bash>git config --global user.email "user@email.com" 
 +git config --global user.name "User Name"</code>
  
-  Ajouter un nouveau fichier+**Remarque : ** Les infos sont stockées dans //˜/.gitconfig//
  
-  git add file1 file2 ...+==== Clone ==== 
 +  * Via protocole Git : <code bash>git clone git://srv/~toto/monprojet monprojet_local</code> 
 +  
 +  * Via SSH : <code bash>git clone ssh://toto@srv/home/toto/public_git/monprojet monprojet_local</code>
  
-  Supprimer un fichier+**monprojet_local** : Chemin local du repo
  
-  git rm file1+==== Track d'une branche distante ====
  
-  * Bouger/renomer un fichier+<code bash>git checkout -b prod origin/prod</code>
  
-  git mv file-old file-new 
  
-  Commiter (local)+==== Utilisation courante ==== 
 +  Connaitre le statut des fichiers modifié/ajouté/supprimé : <code bash>git status</code>
  
-  git commit [-a]+  * Ajouter un nouveau fichier : <code bash>git add file1 file2 ...</code>
  
-  * Envoyer ses commits sur le serveur remote+  * Supprimer un fichier : <code bash>git rm file1</code>
  
-  git push+  * Bouger/renomer un fichier : <code bash>git mv file-old file-new</code>
  
-  * Récupérer les derniers commits des autres dans son repos+  * Commiter (local) : <code bash>git commit [-a]</code>
  
-  git pull+  * Envoyer ses commits sur le serveur remote : <code bash>git push</code>
  
-**Remarque :** C'est la même chose qu'un //git fetch// puis un //git merge//+  Récupérer les derniers commits des autres dans son repos : <code bash>git pull</code> 
 +   
 +  Modifier le dernier commit (non propagé) : 
 +    - Faire les modifications souhaitées et les ajouter avec la commande //git add// 
 +    - Commiter en modifiant le dernier commit : <code bash>git commit --amend</code>
  
-  * Voir la liste des commits :+  * Modifier un commit spécifique (non propagé) : 
 +    * **Via //"fixup"// :** 
 +      - commiter vos modifications à fusionner dans le précédent commit via la commande suivante en indiquant l'ID du commit à modifier <code bash>git commit --fixup=38b184620e5d0da47de4c6d7ed81e807af479fb2</code> 
 +      - exécuter ensuite la commande suivante en indiquant l'ID du commit à modifier (attention au ''^'' à la fin de l'ID du commit) :<code bash>git rebase --interactive '38b184620e5d0da47de4c6d7ed81e807af479fb2^' --autostash --autosquash</code> 
 +    * **Via une édition manuelle :** 
 +      - exécuter la commande suivante en indiquant l'ID du commit à modifier (attention au ''^'' à la fin de l'ID du commit) : <code bash>git rebase --interactive '38b184620e5d0da47de4c6d7ed81e807af479fb2^' --autostash</code> 
 +      - Dans l'éditeur s'ouvrant, repérer la ligne spécifiant le commit à modifier et remplacer ''pick'' par ''edit''. Enregistrer et quitter l'éditeur. 
 +      - Effectuer la modification souhaitez puis commiter à l'aide de la commande suivante : <code bash>git commit --all --amend --no-edit</code> 
 +      - Vous pouvez constater que votre commit à bien été modifié à l'aide de la commande ''git show'' 
 +      - Pour revenir à votre //working tree// intégrant vos commits suivants, exécuter la commande suivante <code bash>git rebase --continue</code>
  
-  git log+  * Supprimer le dernier commit (en conservant les modifications) : <code bash>git reset HEAD^</code> 
 + 
 +**Remarque :** C'est la même chose qu'un //git fetch// puis un //git merge// 
 + 
 +  * Voir la liste des commits : <code bash>git log</code>
  
 **Remarque : ** On peut rajouter un nom de fichier pour voir seulement les commits impactant ce fichier. **Remarque : ** On peut rajouter un nom de fichier pour voir seulement les commits impactant ce fichier.
 +
 +  * Générer des patchs à partir de vos commits :
 +    * repérer dans ''git log'' l'ID du commit précédent le(s) commit(s) pour lesquel vous souhaitez générer les patchs
 +    * lancer la commande suivante : <code bash>git format-patch [ID commit précédent]</code>
 +  * Appliquer un patch sans comiter : <code bash>git apply [patch]</code>
 +  * Appliquer un patch et le comiter avec les informations fournis dans celui-ci : <code bash>git am --signoff -k < [patch]</code>
 +**Remarques :**
 +  * le paramètre ''--signoff'' permet d'ajouter une ligne //Signed-off-by:// dans le message du commit avec vos informations.
 +  * le paramètre ''-k'' permet de conserver les éventuels flag présent dans le message de commit (infos entre crochets)
  • informatique/scm/git.1308660485.txt.gz
  • Dernière modification : 2011/10/28 14:02
  • (modification externe)