Table des matières

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 :

Pull request

Il existe 3 méthodes pour merger un pull request.

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

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.

git merge --no-ff branch

La bifurcation est conservée.

L'historique n'est pas pollué par le commit de fusion.

Squash merge

Tous les commits de la pull vont être fusionnés dans un nouveau commit dans la branche principale.

git merge --squash branch
git commit -m "message"

Les deux branches restent indépendantes

Il y a deux noms : celui qui fait la pull request et celui qui l'a mergée.

Rebase merge

Tous les commits de la pull vont être dupliqués / rebasés dans la branche principale.

Attention, hash1 n'est pas inclus.

git cherry-pick hash1..hash2

Les deux branches restent indépendantes.

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.

API

Forks

Cloner tous les forks pour les lire dans un logiciel graphique.

#!/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