Archives pour la catégorie ‘Outils’

Git : nettoyer les branches locales déjà mergés et supprimées sur le serveur distant

# git branch -r | awk '{print $1}' | \
  egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | \
  awk '{print $1}' | xargs git branch -d

Git : supprimer un fichier sensible d’un dépôt

# git filter-branch --force \
   --index-filter 'git rm --cached --ignore-unmatch my/path/to/file.txt' \
   --prune-empty --tag-name-filter cat -- --all

Git : annuler le dernier commit « amend »

# git reset --soft HEAD@{1}

Git : appliquer une stratégie de merge différente

# git checkout master
# git merge --no-ff release -X theirs

Git : prompt bash

Un prompt bash spécialisé pour l’utilisation de Git :

https://github.com/magicmonty/bash-git-prompt

Git : ajouter un second serveur origin pour les push

Une astuce utile si vous travaillez avec un serveur git privé et que vous souhaitez aussi publier votre code sur un serveur public (et inversement) :

# git remote set-url --add --push origin git@gitlab.my.domain:mygroup/project.git

GitLab-CI : nettoyer l’historique des builds

$ RAILS_ENV=production bundle exec rails console
Loading production environment (Rails 4.0.10)
> Build.delete_all

Git : intégration d’un dépôt externe par subtree

Intégrer un dépôt externe par subtree

# git remote add extern git@git.my.domain:group/extern.git
# git subtree add --prefix subdir/ --squash extern develop
# cd subdir
# ls

Modifier le dépôt local

# cd subdir/
# touch file
# git add file
# git commit -s -m "add file to project" file
# git push origin develop

Aucune modification n’est appliquée au dépôt externe ; les fichiers sont ajoutés uniquement au dépôt courant.

Comparer les différences avec le dépôt externe

# git diff extern/develop develop:subdir/

Mettre à jour le dépôt externe

# git subtree push --prefix subdir/ extern develop

Les modifications locales sont répercutées au dépôt externe, sachant que seuls les fichiers présents dans subdir/ sont pris en compte lors de la comparaison.

Récupérer les dernières modifications du dépôt externe

# git subtree pull --prefix subdir/ extern develop

GitLab-CI : effectuer une tâche pour une branche spécifique

echo "Starting runner on branch '$CI_BUILD_REF_NAME'"

bower install
npm install

grunt lint
grunt test

[[ "$CI_BUILD_REF_NAME" = "master" ]] && grunt build

exit 0

Git : renommer une branche distante

$ git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>
Haut de page