Aller au contenu

Github

De Banane Atomic

Contribuer à un projet : workflow

Fork et Push

Créer un fork du dépot en cliquant sur le bouton Fork de la page web du projet

# Clonez votre fork, son nom est origin par défaut
git clone https://github.com/mon_nom/projet.git

# Ajoutez le dépôt du mainteneur du projet
git remote add upstream https://github.com/mainteneur/projet.git

# Créez une branche locale pour chaque développement et basculer dans cette branche pour effectuer les modifications
git checkout -b NouveauDev

# Commiter les modification sur la branche locale NouveauDev

# Pousser les modifications de la branche locale NouveauDev vers le dépôt origin
# ce qui aura pour effet de créer une branche origin/NouveauDev sur le dépôt distant origin
git push origin NouveauDev

Pull request

Notifiez le mainteneur du projet d'une modification pour qu'il la fusionne :
Allez sur la page web du fork du projet → branches → New pull request

Une seule pull request par branche.
C'est pourquoi il est utile de faire une branche pour chaque développement.

Utiliser les modifications des Pull requests

Chaque nouvelle fonctionnalité a été développée sur une nouvelle branche, car chaque Pull request est associé à une branche.
En attendant que les Pull requests soit acceptées, on aimerait profiter de ces nouvelles fonctionnalités fraîchement développées.

# création d'une nouvelle branche à partir de master qui contiendra toutes les modifications des Pull requests
git checkout -b AllDevPullRequest master

# fusionner les branches des Pull requests dans AllDevPullRequest
git merge BranchPullRequest1

# astuce: fusion en avance rapide (fast-forward merge) de BranchPullRequest1 dans AllDevPullRequest
# on a pas besoin de basculer sur AllDevPullRequest pour faire cette fusion
git fetch . BranchPullRequest1:AllDevPullRequest

# mettre à jour AllDevPullRequest par rapport à upstream/master
git fetch upstream
git rebase upstream/master AllDevPullRequest

Pull request acceptée

Une fois la Pull request fusionnée dans le dépôt mainteneur/master

# se positionner sur le dépôt local (branche master)
git checkout master

# mettre à jour le dépôt local (branche master) avec les modification du dépôt du mainteneur (branche upstream)
git pull upstream master

# mettre à jour le dépôt fork (branche origin) avec les modification du dépôt local (branche master)
git push --tags origin master

# supprimer la branche locale NouveauDev
git branch -d NouveauDev

# supprimer la branche NouveauDev du dépôt origin
git push origin :NouveauDev

Mettre à jour origin par rapport à upstream

# bascule sur la branche master
git checkout master

# rebase de upstream/master dans la branche courante (master)
git rebase upstream/master

# push les changements de la branche courante (master) vers origin/master
git push origin master

Créez un dépôt

Cliquez sur le bouton Create a new repo situé en haut à droite de la page de votre compte GitHub.

# Liez un dossier Git à un dépôt distant
git remote add origin https://github.com/Utilisateur/Projet.git

Supprimer un dépôt

Se rendre sur la page du dépôt → Settings → Delete this repository

GitHub Flavored Markdown pour les fichiers md

# Titre 1
## Titre 2

Titre 1
========
Titre 2
--------

[Texte du lien](http://url.fr)
![alt text](http://url.gif "Tooltip text")
<user@email.fr>

* puce 1
    * puce 1.1 avec tabulation
* puce 2

*Texte italique*
**Texte gras**

`code`

```python
    code python
```

Authentication and Configuration

  1. Generate a PAT: Github → top-right icon → Settings → bottom left Developer settings → Personal access tokens → Fine-grained tokens
  2. Edit the git config to add the username and PAT in the remote url
.git/config
; local git config

[remote "origin"]
	url = https://USERNAME:PAT@github.com/ACCOUNT/REPOSITORY

; usefull only for the author commit
[user]
	name = nicolas
	email = nicolas@bananeatomic.fr

Cache

Credentials are stored in cache:

  • on Windows, they are stored in the Credential Manager → Windows Credentials

Maybe deprecated

# Mise en cache du mot de passe pour 15 mn pour éviter de le retaper à chaque échange avec le serveur
git config --global credential.helper cache

Ne plus autoriser l'accès à une OAuth Apps

Menu déroulant en haut à droite à côté de l’icône de profile → Settings → Authorized OAuth Apps

Configuration

Changing the default branch

  • Settings → General → Default branch

Default reviewers / CODEOWNERS

.github/CODEOWNERS
*       @Team1 @User1

When a pull request is ready for review, code owners are automatically notified.

Branch protection rules

  • Require a pull request before merging
    • Require approvals (define the number of approvals required)
    • Dismiss stale pull request approvals when new commits are pushed
    • Require review from Code Owners
    • Allow specified actors to bypass required pull requests
    • Require approval of the most recent reviewable push
  • Require conversation resolution before merging

Automatically delete head branches

After pull requests are merged, you can have head branches deleted automatically.

  • General → Pull Requests

Personal Access Token

  • Personal Icon (top-right) → Settings
  • Developer Settings (left side menu) → Personal Access Tokens (left side menu)