Config

Commandes Git utiles

Forcer la mise à jour d’un dépôt de origin/main vers sa copie locale

git fetch --all ; git reset --hard origin/main ; git checkout -- .

Supprimer le dernier commit (de force)

git reset --hard HEAD^
git push --force

Se connecter à git

git config --global user.name "<nom>"
git config --global user.email "<email>"
git config --global credential.helper store
git config --global credential.helper 'cache --timeout=3600'

Changer l’emplacement de la “HEAD”

git log

git checkout <sha1 du commit>

Importer un dépôt

Par exemple pour faire un fork public d’un dépot privé

Source : GitHub: How to make a fork of public repository private?

Une solution en ligne de commande est possible et est donnée dans la source.

Mettre à jour le .gitignore et supprimer les anciens fichiers

Source : How do I make Git forget about a file that was tracked, but is now in .gitignore?

Trouver de bons .gitignore : github.com/github/gitignore

Une fois le .gitignore créé, avant de push utilisez cette commande : cela supprimera les fichiers maintenant ignorés sur le serveur Git

git rm -r --cached .
git add .

Et enfin

git commit -am "Suppression des fichiers ignorés"

Changer le nom d’un ancien commit

Source : [How to Change a Git Commit Message Linuxize](https://linuxize.com/post/change-git-commit-message/)
git rebase -i HEAD~<nombre de commits a remonter>

Il doit être affiché un éditeur de texte avec les commits à modifier. Il faut remplacer pick par reword pour le commit à modifier.

Exemple :

pick <sha du commit> mon commit à modifier

Changement de pick en reword :

reword <sha du commit> mon commit à modifier

Pour chaque commit noté reword, il faut modifier le message de commit, puis sauvegarder et quitter l’éditeur de texte.

Enfin, il faut forcer le commit :

git push --force

Cloner un très gros dépôt

Source

Erreur que j’ai eu :

error: RPC failed; curl ...
error: ... bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

Solution :

git clone http://github.com/large-repository --depth 1
cd large-repository
git fetch --unshallow

Comment utiliser les submodules Git

Sources :

Ajouter un submodule à un dépôt

Dans le dossier git du dépôt parent, lancer la commande :

git submodule add <url>

Cette commande va créer un nouveau dossier avec le nom du dépôt

ou

git submodule add <url> <nom du dossier>

Cloner un dépôt avec des submodules

git clone --recurse-submodules <url>

Commits

Push

git push --recurse-submodules=on-demand

Pull

git pull --recurse-submodules

Si vous utilisez l’application GitHub Desktop, n’oubliez pas de push les submodules puis de push le dépôt parent.