git

Rédigé par Paulo Aucun commentaire
Classé dans : Divers Mots clés : git


 

Git fonctionne avec 3 repertoires :

  • votre répertoire de travail, ou Working Directory
  • zone spéciale que l'on appelle l'index, ou la zone de staging
  • zone 'git repository' (sur le serveur éventuellement) est la base de données de votre projet telle qu'elle était lors de votre dernier commit.

source : https://www.miximum.fr/blog/enfin-comprendre-git/
 

Git rebase :

Dans la branche 'new-branch', après le git rebase master :

  • git rebase -i HEAD~5 :fusionner certains commit dans sa branche (non pushée) pour faciliter la lecture du suivi...
    source : https://www.miximum.fr/blog/enfin-comprendre-git/

    # création/positionnement dans une branche 'test_rebase'
    git checkout -b  test_testrebase
    # création de 5 fichiers commités dans sa branche
    for i in $(seq 1 5);do touch "fichier-$i" && git add . && git commit -am "fichier-$i";done
    # git log retourne un tas de commit inutile...
    # on peut réorganiser les 5 derniers commit avec la commande :
    git rebase -i HEAD~5
        dans le rebase, sur chaque ligne "pick ...." :
        - p (pick) pour ne rien faire (utiliser le commit)
        - r (reword) reformulation du commit
        - f (ficup) fusionne avec le précédent en supprimant le message
        - s (squash) pareil en laissant le message d'origine
        - d (drop) supprimer le commit
     

Gestion des retour arrière :
source : https://learngitbranching.js.org/?locale=fr_FR

  • en local : git reset HEAD~1
    - fait remonter une branche en arrière
    - ne fonctionne pas sur les branches distantes
  • depot partagé : git revert HEAD
    - création d'un nouveau commit qui annule le précédent
    - necessite un push pour actualiser le dépot


Copie d'une série de commit en dessous de l'emplacement actuel (HEAD)

  • git cherry-pick commit1 commit2 commit5
    - copie les commit dans HEAD
    - le commit ne doit bien sur pas être dans la branche...



Utilisation de Meld pour gérer les différences/conflits :

  • installer meld :     $sudo dnf install meld
  • modif .gitconfig pour prise en compte de l'utilitaire

Git création d'un dépot :
source : https://git-scm.com/book/fr/v1/Git-sur-le-serveur-Mise-en-place-du-serveur

Sur le serveur

  • ajouter un user git (c'est mieux que bosser sous root...)
  • création d'un dépot (vide) :
    cd /opt/git
    mkdir monProj.git
    cd monProj.git
    git --bare init
    
  • c'est tout pour le serveur  smiley

Sur le client

  • copier ou pas les fichiers de votre projet  dans un repertoire
  • dans le repertoire ci-dessus
    # initialisation du depot
    git init 
    
    # pec des fichiers/repertoires (sinon .gitignore)
    git add <fichiers et/ou repertoires>
    
    # premier commit
    git comm -m 'premire commit'
    # on peut aussi commter directement tous les fichiers
    git commit -a -m 'premier commit'
    
    # ajout du dépot distant
    git remote add origin git@gitserveur:/opt/git/monProj.git
    
    # push de la branche courante (master) sur le serveur
    git push origin master

    Git : branche et stash
    - création d'une branche <predator> et modification code à l'interieur
       # git checkout -b predator
    - sv provisoire pour se positionner dans une autre branche
       # git stash save 'sauve providoire de mes modif'
    - on se positionne dans une autre branche et appliquer/sauvegarder des modif
       # git co autreBranche
       ...
    - retour sur la branche <predator> et application des modif précédentes
       # git co predator
       # git stash apply


    Git : la remise ...
    Changer de branche sans comitter les modif faites dans la branche courante.

    # remiser la branche courante
    git stash
    
    # lister les différents 'stash'
    git stash list
    
    # restaurer un stash après être revenu dana la branche
    # dernier stash
    git stash pop
    
    Source : https://git-scm.com/book/fr/v1/Utilitaires-Git-Le-remisage

Git reset vs git checkout ( a lire absoluement !)
    source : https://delicious-insights.com/fr/articles/git-reset/
                   http://ndpsoftware.com/git-cheatsheet.html#loc=workspace;


Annuler le dernier push :

git reset --keep HEAD@{1}


Annuler le derner commit non propagé (non pushé)

git reset HEAD^1
ps : conserve les modifications


Modifier adresse mail ou nom auteur de tous les commit

# adresse mail
git filter-branch -f --env-filter "GIT_AUTHOR_EMAIL='jean.valjean@gmail.com;'" HEAD
# auteur
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Paulo;'" HEAD

Les commentaires sont fermés.