Skip to content

Latest commit

 

History

History
156 lines (87 loc) · 6.01 KB

git.md

File metadata and controls

156 lines (87 loc) · 6.01 KB

Astuces Git


Ajouter ses clefs de connexion Git SSH

Pour ajouter ses clefs, il faut normalement faire la démarche suivante :

ssh-agent /bin/bash
ssh-add ~/.ssh/id_rsa

Au redémarrage de votre machine, les clefs seront bien ajoutées, mais ce n’est pas le cas si vous vous loguez de nouveau.

Pour éviter cela, il faut les ajouter dans le fichier #/.ssh/config file :

IdentityFile ~/.ssh/id_rsa

La configuration ne s’applique qu’à l'utilisateur concerné.
Pour que tous les utilisateurs soient concernés, il suffit de mettre la configuration dans le fichier /etc/ssh/ssh_config.

Petit bonus : actuellement la clef ajoutée sera testée pour toute connexion, quel que soit l’hôte. Pour restreindre la clef à un hôte spécifique :

Host domain.tld
	HostName domain.tld
	User git
	IdentityFile ~/.ssh/id_rsa

Astuces tirées de Add private key permanently with ssh-add on Ubuntu.

Pour ajouter une clef de déploiement à un utilisateur virtuel, voir deployment_key.sh


Faire un remisage

Pour récupérer un espace de travail propre sans perdre ses modifications et sans commiter, on peut remiser son travail actuel et le récupérer plus tard, grâce à la commande

git stash

Récupérer son remisage

On parcourt la liste des remisages effectués avec

git stash list

Pour appliquer le dernier remisage effectué (le plus récent) :

git stash apply

Si vous souhaitez récupérer le remisage numéro x en particulier, il suffit de le préciser :

git stash apply stash@{x}

On peut maintenant reprendre la suite.


Cloner un repository avec seulement les derniers commits

Lorsque l’on clone un dépôt Git, tout l’historique est récupéré. Il n’est pas toujours nécessaire de les récupérer tous, il est possible en précisant la profondeur de ne récupérer qu’un certain nombre de commits depuis la dernière version :

git clone --depth=5 https://github.com/Devenet/Memo.git memo

Cela permet de ne récupérer que les 5 derniers commits par exemple.


Créer une branche vide

Si pour une certaine raison vous souhaitez créer une branche "vide", c’est-à-dire sans historique des précédentes commits, il suffit de préciser que vous souhaiter une branche « orpheline » :

git checkout --orphan nouvelle-branche

Il peut être utile de supprimer les fichiers présents dans le répetoire avec :

git rm -rf .

pour ne pas être polluer des fichiers de la branche principale.

Supprimer tous les anciens commits d’un historique Git

Il faut commencer par récupérer le hash correspondant au dernier commit, par exemple a089db6.

Ensuite, en passant par une branche orpheline on peut réécrire la branche master :

git checkout --orphan temp a089db6
git commit -m "Truncated history"
git rebase --onto temp a089db6 master
git branch -D temp

Pour que les modifications soient prises en compte sur le serveur distant de référence, il faut forcer la mise à jour avec

git push --force

Ce genre d’opération est à réserver pour un dépôt privé !

Source et inspiration.


Annuler son dernier commit non poussé

Si besoin d’annuler le dernier commit, qui n’a pas encore été poussé, il suffit de faire :

git reset HEAD~1

Le commit sera alors annulé, et les modifications associées reviendront dans les changements.

Source

Modifier le message de son dernier commit

Une faute de frappe impardonnable dans le message de votre dernier commit ? Pas de souci :

git commit --amend -m "Nouveau message"

Si vous souhaitez forcer la mise à jour sur la branche distance — attention c'est le mal, et ne pas faire sur un dépôt public ! —, il faut en plus exécuter la commande :

git push <remote> <branch> -f

Source

Antidater son dernier commit

Si pour d’obscures raisons vous avez besoin d’antidater votre dernier commit, voici la méthode.

On commence par définir la date souhaitée en respectant le format

Tue, 16 Dec 2014 23:27:42 +0100

On ouvre ensuite une console en se placant dans le répertoire correspondant au dépôt Git :

GIT_AUTHOR_DATE='Tue, 16 Dec 2014 23:27:42 +0100'
GIT_COMMITTER_DATE='Tue, 16 Dec 2014 23:27:42 +0100'
git commit —amend --date "Tue, 16 Dec 2014 23:27:42 +0100"

Il est possible qu’il soit nécessaire, en fonction de votre environnement, de remplacer les deux premières instructions par

export GIT_AUTHOR_DATE='Tue, 16 Dec 2014 23:27:42 +0100'
export GIT_COMMITTER_DATE='Tue, 16 Dec 2014 23:27:42 +0100'

Si vous utilisez Github, si la synchronization a déjà été effectuée, il faudra forcer la synchronisation (le fait de faire un Sync depuis l’application Github ne réécrira pas le commit) :

git push --force

Voici le commit devrait maintenant avoir été effectué à la date souhaitée.