Outils pour utilisateurs

Outils du site


prog:github

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édentesRévision précédente
Prochaine révision
Révision précédente
prog:github [2021/07/03 10:38] – [Merge commit] : ajout d'une image pour montrer qu'on ne perd pas l'historique après le merge rootprog:github [2025/11/21 13:25] (Version actuelle) – Ajout de "Personal access token" root
Ligne 1: Ligne 1:
 +=====Fonctionnalités=====
 +
 +====Personal access token====
 +
 +Pour pouvoir pousser sur un dépôt en utilisant un token plutôt que le mot de passe du site, il faut :
 +
 +  * Générer le token dans les [[https://github.com/settings/tokens|settings]] de l'utilisateur,
 +  * Créer un nouveau token avec les droits : ''read:org'', ''repo'', ''user:email'', ''workflow '' (si le dépôt contient un dossier ''.workflow''),
 +  * Noter la clé,
 +  * Puis, au moment de faire un ''push'', mettre le nom d'utilisateur puis le token (pas le mot de passe de connexion de github). Il faut aussi faire attention que l'adresse de ''push'' est bien en ''https:%%//%%'' et pas en ''git:%%//%%''.
 +
 ====Pull request==== ====Pull request====
  
Ligne 5: Ligne 16:
 Dans les exemples ci-dessous, il y a deux commits dans la pull request et la pull request est en tard d'un commit sur la branche principale. Dans les exemples ci-dessous, il y a deux commits dans la pull request et la pull request est en tard d'un commit sur la branche principale.
  
-  * Merge commit+===Merge commit===
  
 Le merge commit va garder tous les commits dans la branche externe (même si elle est supprimée) et simplement créer un commit pour réunir la branche de la pull request et la branche principale. Le merge commit va garder tous les commits dans la branche externe (même si elle est supprimée) et simplement créer un commit pour réunir la branche de la pull request et la branche principale.
  
-Interface de sélection :+  * Commande git 
 + 
 +  git merge --no-ff branch 
 + 
 +  * Interface de sélection
  
 {{:prog:github:merge_commit_1.png|}} {{:prog:github:merge_commit_1.png|}}
  
-Personnalisation du commit de merge :+  * Personnalisation du commit de merge
  
 {{:prog:github:merge_commit_2.png|}} {{:prog:github:merge_commit_2.png|}}
  
-Graphique des commits avant la suppression de la branche de pull request :+  * Graphique des commits après la suppression de la branche de pull request
  
-{{:prog:github:merge_commit_3.png|}} +La bifurcation est conservée.
- +
-Graphique des commits après la suppression de la branche de pull request :+
  
 {{:prog:github:merge_commit_4.png|}} {{:prog:github:merge_commit_4.png|}}
  
-Graphique des commits de la branche principale par GitHub :+  * Graphique des commits de la branche principale par GitHub
  
 {{:prog:github:merge_commit_5.png|}} {{:prog:github:merge_commit_5.png|}}
  
-Et l'historique n'est pas pollué par le commit de fusion.+  * Blame d'un fichier après fusion 
 + 
 +L'historique n'est pas pollué par le commit de fusion.
  
 {{:prog:github:merge_commit_6.png|}} {{:prog:github:merge_commit_6.png|}}
  
-  * Squash merge+===Squash merge===
  
 Tous les commits de la pull vont être fusionnés dans un nouveau commit dans la branche principale. Tous les commits de la pull vont être fusionnés dans un nouveau commit dans la branche principale.
  
-Interface de sélection :+  * Commande git 
 + 
 +  git merge --squash branch 
 +  git commit -m "message" 
 + 
 +  * Interface de sélection
  
 {{:prog:github:squash_merge_1.png|}} {{:prog:github:squash_merge_1.png|}}
  
-Personnalisation du commit équivalent :+  * Personnalisation du commit équivalent
  
 {{:prog:github:squash_merge_2.png|}} {{:prog:github:squash_merge_2.png|}}
  
-Graphique des commits après le mergeLes deux branches restent indépendantes.+  * Graphique des commits après le merge 
 + 
 +Les deux branches restent indépendantes
  
 {{:prog:github:squash_merge_3.png|}} {{:prog:github:squash_merge_3.png|}}
  
-Graphique des commits dans la branche principaleIl y a deux noms : celui qui fait la pull request et celui qui l'a mergée.+  * Graphique des commits dans la branche principale 
 + 
 +Il y a deux noms : celui qui fait la pull request et celui qui l'a mergée.
  
 {{:prog:github:squash_merge_4.png|}} {{:prog:github:squash_merge_4.png|}}
  
-Graphique des commits dans la pull request.+  * Graphique des commits dans la pull request
  
 {{:prog:github:squash_merge_5.png|}} {{:prog:github:squash_merge_5.png|}}
  
-  * Rebase merge+===Rebase merge===
  
 Tous les commits de la pull vont être dupliqués / rebasés dans la branche principale. Tous les commits de la pull vont être dupliqués / rebasés dans la branche principale.
  
-Interface de sélection :+  * Commande git 
 + 
 +Attention, ''hash1'' n'est pas inclus. 
 + 
 +  git cherry-pick hash1..hash2 
 + 
 +  * Interface de sélection
  
 {{:prog:github:rebase_merge_1.png|}} {{:prog:github:rebase_merge_1.png|}}
  
-Validation de la fusion :+  * Validation de la fusion
  
 {{:prog:github:rebase_merge_2.png|}} {{:prog:github:rebase_merge_2.png|}}
  
-Graphique des commits après le mergeLes deux branches restent indépendantes.+  * Graphique des commits après le merge 
 + 
 +Les deux branches restent indépendantes.
  
 {{:prog:github:rebase_merge_3.png|}} {{:prog:github:rebase_merge_3.png|}}
  
-Graphique des commits dans la branche principaleIl y a deux noms dans les commits importés depuis la pull request : celui qui fait la pull request et celui qui l'a mergée.+  * Graphique des commits dans la branche principale 
 + 
 +Il y a deux noms dans les commits importés depuis la pull request : celui qui fait la pull request et celui qui l'a mergée.
  
 {{:prog:github:rebase_merge_4.png|}} {{:prog:github:rebase_merge_4.png|}}
  
-Graphique des commits dans la pull request.+  * Graphique des commits dans la pull request.
  
 {{:prog:github:rebase_merge_5.png|}} {{:prog:github:rebase_merge_5.png|}}
  
 +=====API=====
 +
 +====Forks====
 +
 +Cloner tous les forks pour les lire dans un logiciel graphique.
 +
 +<code bash>
 +#!/usr/bin/env bash
 +
 +OWNER="githubuser0xFFFF"
 +REPO="Qt-Advanced-Docking-System"
 +
 +PAGE=1
 +PER_PAGE=100
 +
 +mkdir -p $REPO
 +cd $REPO || exit
 +git init -q
 +
 +while true; do
 +  DATA=$(curl -s "https://api.github.com/repos/$OWNER/$REPO/forks?per_page=$PER_PAGE&page=$PAGE")
 +  COUNT=$(echo "$DATA" | jq 'length')
 +  [ "$COUNT" -eq 0 ] && break
  
 +  echo "$DATA" | jq -r '.[].url' | while read -r APIURL; do
 +    USER=$(echo "$APIURL" | cut -d'/' -f5)
 +    GITURL="https://github.com/${USER}/${REPO}.git"
 +    git remote add "$USER" "$GITURL" 2>/dev/null || continue
 +    GIT_TERMINAL_PROMPT=0 git fetch "$USER" -q
 +  done
  
 +  PAGE=$((PAGE+1))
 +done
 +</code>
prog/github.1625301501.txt.gz · Dernière modification : de root