Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
technique:git:git_avancees [2020/04/26 00:30] – francoisa | technique:git:git_avancees [2024/04/02 15:08] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Git : fonctionnalités avancées ====== | + | **Cette page est obsolète. Veuillez accéder |
- | + | ||
- | Pour pouvoir utiliser pleinement Git, il peut être utile de s' | + | |
- | + | ||
- | ===== 1. Création de branches ===== | + | |
- | + | ||
- | On crée une nouvelle branche | + | |
- | + | ||
- | < | + | |
- | git branch nouvellebranche | + | |
- | + | ||
- | </code> | + | |
- | + | ||
- | On passe sur la branche nouvellebranche | + | |
- | + | ||
- | < | + | |
- | git checkout nouvellebranche | + | |
- | + | ||
- | </code> | + | |
- | + | ||
- | ou plus directement : | + | |
- | + | ||
- | < | + | |
- | git checkout -b nouvellebranche | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | On peut faire des commits (git add & git commit) sur cette branche. On peut aussi repasser sur la branche principale et en faire d' | + | |
- | + | ||
- | < | + | |
- | git checkout master | + | |
- | + | ||
- | </code> | + | |
- | + | ||
- | Il est aussi possible de venir se placer sur un commit, une branche ou un tag précédent : | + | |
- | + | ||
- | < | + | |
- | git checkout nomcommit | + | |
- | git checkout vieillebranche | + | |
- | git checkout nomtag | + | |
- | + | ||
- | </code> | + | |
- | + | ||
- | (Voir git checkout -h) | + | |
- | + | ||
- | ===== 2. Fusion de branche (merge) ===== | + | |
- | + | ||
- | On repasse sur la branche master | + | |
- | + | ||
- | < | + | |
- | git checkout master | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Et on fusionne la branche souhaitée vers la branche en cours (master) | + | |
- | + | ||
- | < | + | |
- | git merge nouvellebranche | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Puis on peut supprimer la branche en cours : | + | |
- | + | ||
- | < | + | |
- | git branch -d nouvellebranche # Si status est à jour | + | |
- | ou | + | |
- | git branch -D nouvellebranche # si pas fusionnée | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | ===== Gestion de conflits ===== | + | |
- | + | ||
- | En cas de merge conflictuel, | + | |
- | + | ||
- | Il faut éditer les fichiers en conflit et finir avec un : | + | |
- | + | ||
- | < | + | |
- | git add fichiers_en_conflit | + | |
- | git commit | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Il est possible d' | + | |
- | + | ||
- | < | + | |
- | git mergetool fichier_en_conflit | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Il est possible de merger sans créer de nouveau commit : | + | |
- | + | ||
- | < | + | |
- | git merge --no-commit nouvellebranche | + | |
- | + | ||
- | </code> | + | |
- | + | ||
- | Puis modifier/corriger les fichiers et enfin d' | + | |
- | + | ||
- | Il est alors aussi possible d' | + | |
- | + | ||
- | < | + | |
- | git merge --abort | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | ===== Travail collaboratif ===== | + | |
- | + | ||
- | Récupérer un dépot distant avec : | + | |
- | + | ||
- | < | + | |
- | git clone url_distant | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Dans ce cas, l' | + | |
- | + | ||
- | git fetch permet de récupérer les branches distantes. Attention, git pull <⇒ git fetch | + | |
- | + | ||
- | < | + | |
- | git pull # récupère les sources et merge les différences | + | |
- | git fetch # récupère les sources sans fusionner | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | git pull = git fetch + git merge FETCH_HEAD | + | |
- | + | ||
- | Pour voir les différences avec le dépot distant : | + | |
- | + | ||
- | < | + | |
- | git remote | + | |
- | git branch -r # pour voir les branches distantes connues localement | + | |
- | git branch -vv # si la branche loclae est trackée | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | ===== Ajout d'un dépot supplémentaire distant ===== | + | |
- | + | ||
- | < | + | |
- | git remote add nomchoisi urldepot.git | + | |
- | + | ||
- | git fetch nomchoisi | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Et pour mettre à jour le dépot local vers ce dépot distant : | + | |
- | + | ||
- | < | + | |
- | git push -u nomchoisi master | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | Attention, il faudra metre à jour les 2 dépots de manière manuelle. Par exemple : | + | |
- | + | ||
- | < | + | |
- | git push heroku master | + | |
- | + | ||
- | git push -u nomchoisi master | + | |
- | + | ||
- | </ | + | |
- | + |