technique:git:git_avancees

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
technique:git:git_avancees [2019/04/13 15:23] – créée francoisatechnique:git:git_avancees [2020/04/26 02:50] francoisa
Ligne 7: Ligne 7:
 On crée une nouvelle branche au projet, à partir de la branche master On crée une nouvelle branche au projet, à partir de la branche master
  
-git branche nouvellebranche+<code> 
 +git branch nouvellebranche 
 + 
 +</code>
  
 On passe sur la branche nouvellebranche On passe sur la branche nouvellebranche
  
 +<code>
 git checkout nouvellebranche git checkout nouvellebranche
 +
 +</code>
 +
 +ou plus directement :
 +
 +<code>
 +git checkout -b nouvellebranche
 +
 +</code>
  
 On peut faire des commits (git add & git commit) sur cette branche. On peut aussi repasser sur la branche principale et en faire d'autres. On peut faire des commits (git add & git commit) sur cette branche. On peut aussi repasser sur la branche principale et en faire d'autres.
  
 +<code>
 git checkout master git checkout master
 +
 +</code>
 +
 +Il est aussi possible de venir se placer sur un commit, une branche ou un tag précédent :
 +
 +<code>
 +git checkout nomcommit
 +git checkout vieillebranche
 +git checkout nomtag
 +
 +</code>
 +
 +(Voir git checkout -h)
  
 ===== 2. Fusion de branche (merge) ===== ===== 2. Fusion de branche (merge) =====
Ligne 23: Ligne 50:
 <code> <code>
 git checkout master git checkout master
 +
 </code> </code>
  
Ligne 29: Ligne 57:
 <code> <code>
 git merge nouvellebranche git merge nouvellebranche
 +
 </code> </code>
  
Ligne 34: Ligne 63:
  
 <code> <code>
-git branch -d nouvellebranche+git branch -d nouvellebranche # Si status est à jour 
 +ou 
 +git branch -D nouvellebranche # si pas fusionnée 
 </code> </code>
 +
 +===== Gestion de conflits =====
 +
 +En cas de merge conflictuel, il faut résoudre le confilt en éditant les fichiers fusionnés qui contiennent les diff.
 +
 +Il faut éditer les fichiers en conflit et finir avec un :
 +
 +<code>
 +git add fichiers_en_conflit
 +git commit
 +
 +</code>
 +
 +Il est possible d'utiliser des outils comme :
 +
 +<code>
 +git mergetool fichier_en_conflit
 +
 +</code>
 +
 +Il est possible de merger sans créer de nouveau commit :
 +
 +<code>
 +git merge --no-commit nouvellebranche
 +
 +</code>
 +
 +Puis modifier/corriger les fichiers et enfin d'ajouter et de commiter les changements manuellement
 +
 +Il est alors aussi possible d'annuler un merge avec un :
 +
 +<code>
 +git merge --abort
 +
 +</code>
 +
 +===== Travail collaboratif =====
 +
 +Récupérer un dépot distant avec :
 +
 +<code>
 +git clone url_distant
 +
 +</code>
 +
 +Dans ce cas, l'origine du dépot distant est mémorisé dans "origin".
 +
 +git fetch permet de récupérer les branches distantes. Attention, git pull <⇒ git fetch
 +
 +<code>
 +git pull # récupère les sources et merge les différences
 +git fetch # récupère les sources sans fusionner
 +
 +</code>
 +
 +git pull = git fetch + git merge FETCH_HEAD
 +
 +Pour voir les différences avec le dépot distant :
 +
 +<code>
 +git remote -v
 +git branch -r # pour voir les branches distantes connues localement
 +git branch -vv # si la branche loclae est trackée
 +
 +</code>
 +
 +===== Ajout d'un dépot supplémentaire distant =====
 +
 +<code>
 +git remote add nomchoisi urldepot.git
 +
 +git fetch nomchoisi
 +
 +</code>
 +
 +Et pour mettre à jour le dépot local vers ce dépot distant :
 +
 +<code>
 +git push -u nomchoisi master
 +
 +</code>
 +
 +Attention, il faudra metre à jour les 2 dépots de manière manuelle. Par exemple :
 +
 +<code>
 +git push heroku master
 +
 +git push -u nomchoisi master
 +
 +</code>
 +===== Gestion d'un dépot avec authentification par clef SSH =====
 +
 +1) Ajouter sa clef SSH publique dans son profil du dépot distant (github, framagit...)
 +
 +2) Définir par défaut l'utilisation de sa clef pour ce type de dépot dans ''~/.ssh/config'' :
 +<code>
 +Host github.com
 + IdentityFile ~/.ssh/id_rsa
 +
 +</code>
 +
 +3) définir pour le dépot git local que l'accès se fait en ssh dans ''dossiergit/.git/config'' et changer l'adresse du dépot distant :
 +<code>
 +[remote "origin"]
 +        url = ssh://git@github.com/depotperso/monprojet.git
 +
 +</code>
 +
 +Et c'est tout. Au prochain ''git push'', la passphrase de la clef sera demandée (sauf si elle est mémorisée dans le ssh-agent).
 +
  
  • technique/git/git_avancees.txt
  • Dernière modification : 2024/04/02 15:08
  • de 127.0.0.1