Mon antisèche GIT


Soyez conscients qu'il ne s'agit pas d'une liste exhaustive.

Permalien pour la section Git concepts Git concepts

Les concepts sont plus importants que les commandes (en). Je ne cherche pas à apprendre par coeur toutes les commandes. Au lieu de ça, j’en fais des alias et j’essaie de focaliser sur la manière dont GIT fonctionne.

3 arbres
  1. le répertoire courant: les fichiers que vous modifiez
  2. l'index: les changement que vous enregistrez avec un git add pour le prochain git commit
  3. le HEAD: une référence qui pointe vers le dernier commit sur la branche en cours et qui se déplace quand vous passez sur une autre branche
Local vs. Distant Le répertoire local c'est grosso modo votre machine. Le dépot distant vous permet d'héberger le code et centraliser les modifications, par exemple, sur GitHub, GitLab, Bitbucket, etc. Chaque membre de l'équipe travaille sur son dépôt local et pousse les modifications vers le dépôt distant lorsqu'il a terminé.
Clone, status, pull et push
  • git clone est la première commande qu'on apprend. Elle permet de copier le dépôt distant où vous le souhaitez sur votre machine.
  • git status permet de savoir l'état GIT courant. À utiliser sans modération.
  • git pull incorpore les changements depuis le dépôt distant dans la branche courrante alors que git push met à jour le dépôt distant avec les référence locales.
    Branches La branche par défaut est main ou master. Vous pouvez créer de nouvelles branches pour dériver en toute sécurité de la branche principale. Lorsque vous avez terminé, vous pouvez fusionner la nouvelle branche dans la branche principale.
    Tags Les tags sont des versions pour une branche à un moment précis.
    Fork Copier un dépôt pour l'utiliser, expérimenter ou même y contribuer.
    Le merge vs. le rebase Le but est le même : incorporer les modifications d'un côté vers l'autre. Le merge est relativement sûr car tout l'historique est conservé mais pmus verbeux. Le rebase est plus "propre" mais plus risqué car il linéarise les changements.

    Permalien pour la section Advanced commands Advanced commands

    Utilisez les lignes de commandes pour les opérations complexes et je recommande d’en faire des alias pour éviter de s’encombrer l’esprit:

    Amender une mauvais commit (BEFORE git push) git add {file} && git commit --amend et si le message n'a pas besoin d'être modifié git add {file} && git commit --amend --no-edit.
    Sélectionner les modifications à ajouter ou enlever dans un même fichier pour le prochain commit git add -p {file} et git reset -p {file}
    Incorporer des modifications depuis une autre branche sans merge ni rebase git cherry-pick {commit_sha}
    Annuler toutes les modifications en cours dans l'index (~ unadd) git reset HEAD
    Changer l'adresse du dépôt distant Ne faîte pas git remote rm origin && git remote add origin {URL}. Lancez plutôt git remote set-url origin {URL}.
    Lister les fichiers ignorés git ls-files --others -i --exclude-standard
    Fusionner toutes les modifications mais les regrouper en un seul commit git merge --squash {branch} && git commit
    Éliminer à 100% un fichier dans l'historique GIT git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch .env" HEAD

    Permalien pour la section Interfaces graphiques pour GIT Interfaces graphiques pour GIT

    Soyez efficaces, ne gaspillez pas votre temps à taper les mêmes commandes sans arrêt dans le terminal. Les interfaces GIT ont vraiment du sens pour les opérations simples comme le clonage, le pull et le push, ou créer des nouvelles branches.

    De plus, il n’est pas rare d’avoir à gérer des conflits, et vous ne devriez pas gérer des conflits sans interface graphiques à mon sens, car c’est source d’erreurs.

    GitKraken Un client simplement beau! Télécharger GitKraken
    SmartGit Un client moins graphique mais efficace Télécharger SmartGit

    Permalien pour la section Sous-modules Sous-modules

    Les sous-modules permettent d’inclure d’autres dépots GIT dans votre dépôt en tant que références. Lorsque vous ajoutez des sous-modules, un fichier .gitmodules est créé à la racine.

    Ajouter un sous-module git submodule add {submodule_address} && git add {submodule_folder_path} && git commit
    Cloner un projet avec ses sous-modules Rien de plus que git clone qui le gère déjà. Toutefois, la première installation nécessitera un git submodule update --init --recursive.
    Mettre à jour les sous-modules Lancez git submodule update --remote --recursive.
    Supprimer un sous-module Ne le faites pas manuellement! Lancez: git submodule deinit {submodule} && git rm {submodule_folder_path} && git commit

    Permalien pour la section Configurations Configurations

    GIT fonctionne avec une cascade de fichiers de configuration. Vous pouvez définir des configurations globales et écraser certains réglages localement pour un projet en particulier ou un groupe de projets.

    Configuration globale Vous pouvez éditer ~/.gitconfig ou lancer: git config --global --edit. Il est possible d'avoir des .gitconfig locaux, par projet.
    Liste globale des fichiers à ignorer Modifiez ~/.gitignore_global. Vous pouvez aussi ajouter un fichier .gitignore par projet qui écrase la configuration globale.
    Git aliases Les alias sont des raccourcis pour des commandes GIT. Vous pouvez modifier ~/.gitconfig ou lancer: git config --global --edit, ou même les ajouter directement git config --global alias.st status.
    Utiliser ohmyzsh et les extensons GIT Vous pouvez ajouter l'extension GIT dans votre configuration. Vous aurez d'excellents alias.
    Cette page est aussi disponible dans d'autres langues :