Ajouter la commande git tree à votre terminal

Pour ceux qui utilisent l’outils de versioning Git uniquement en ligne de commande, il est parfois pratique d’avoir l’historique des commits sous forme d’arbre un peu comme c’est présenté dans les outils graphiques comme Git Extensions, SourceTree etc… Il existe la commande “git log” bien sur mais beaucoup trop verbeuse et les commits ne sont pas assez succinct, on ne voit pas les différentes branches etc… bref, c’est pas top.

Un petit “git tree” ça serait pas mal non ?

Pas de soucis, cette commande va ajouter un alias au fichier .gitignore pour qu’il utilise la commande “git tree” à bon escient.

Ouvrez votre terminal et tapez :

[javascript]
git config –global alias.tree "log –oneline –decorate –all –graph"
[/javascript]

Et maintenant tapez :

[javascript]git tree[/javascript]

C’est prêt.

Hacker le graph des contributions de Github

A quoi ça sert ?

Si vous voulez faire le record du monde de la plus longue série de commits, combler les trous du graph ou tout simplement pour faire passer un message… J’ai créé un petit repo qui contient le script qu’il vous faut : https://github.com/joeybronner/script-hack-github-commit-graph

Instructions step by step

Pour accompagner le tout, j’ai hébergé une petite page web qui montre step by step comment faire.
Les 10 étapes sont très faciles : en 2 minutes chrono vous pouvez compléter les 365 commits de votre graph de contributions.

LIEN

Preview

hack_it_github
687474703a2f2f6a6f657962726f6e6e65722e66722f6861636b2d6769746875622d636f6d6d69742d67726170682f696d672f322e4a5047687474703a2f2f6a6f657962726f6e6e65722e66722f6861636b2d6769746875622d636f6d6d69742d67726170682f696d672f332e4a5047687474703a2f2f6a6f657962726f6e6e65722e66722f6861636b2d6769746875622d636f6d6d69742d67726170682f696d672f342e4a5047

Fusionner plusieurs commits d’une feature branche vers master

Quand on travaille sur une branche de développement en parallèle et qu’on souhaite déporter son travail sur la branche master on a deux manières de le faire. La première, -plus simple-, consiste à faire un merge à partir de master alors que la seconde, -plus difficile-, consiste à faire un rebase (en renommant, fusionnant les commits au passage).

Méthode 1 : Facile

On se place sur la branche master et on met à jour les données

[shell]
git checkout master
git fetch
git pull
[/shell]

On merge la branche dérivée depuis master

[shell]git merge feature_branch[/shell]

On annule toutes les modifications faites sur la branche dérivée (de manière soft/mixed)

[shell]git reset origin/master[/shell]

Toutes les modifications annulées se mettent ‘fichiers modifiés’
A partir de la on peut créer un nouveau commit et pusher le tout
On a donc toutes les modifications faites dans la branche dérivée en un seul commit dans master.

[shell]
git add –all
git commit
[/shell]

Méthode 2 : Difficile

Le squash commit n’est pas toujours simple, c’est pour ça qu’on va commencer par dériver une branche spécialement pour cette manipulation (on ne sait jamais!…). Pour squasher tous les commits depuis le dernier commit en commun avec master :

[shell]
git checkout -b squashed_feature
git rebase -i master
[/shell]

L’éditeur s’ouvre avec les liste des commits

[shell]
pick fda59df commit 1
pick x536897 commit 2
pick c01a668 commit 3
[/shell]

Les commits sont classés par ordre d’ancienneté (le plus ancien se trouve tout en bas de la liste). On va donc garder commit 1 (qui représente la dernière version du code), dans lequel on va squasher les autres, on ajoute donc le mot-clé “squash” devant chacun d’eux :

[shell]
pick fda59df commit 1
squash x536897 commit 2
squash c01a668 commit 3
[/shell]

Si on supprime une ligne, le commit sera ignoré, et perdu. Après avoir enregistré, l’éditeur s’ouvre à nouveau et demande un message pour le nouveau squash commit.

Voilà, il ne reste plus qu’à merger l’unique commit de la branche squashed_feature vers master.

[shell]
git checkout master
git merge squashed_feature
[/shell]

Connaitre les technologies et frameworks utilisés par un site web

Vous voyez un site sympa et vous vous demandez quelles technos se cachent derrière ? Tous les développeurs (et autres) se sont déjà posés cette question!…

L’outil magique

wappalyzer_chrome_download

Pour ça, il y a Wappalyzer! Cette superbe extension pour Google Chrome et Mozilla Firefox permet de vous donner la réponse sans avoir à aller fouiller dans le code source!

Elle permet de détecter :

  • le type de serveur web
  • les frameworks Javascript utilisés
  • les outils analytiques etc…

L’exemple avec Github.com

Si on prend par exemple Github, après avoir installé l’extension sur Chrome, on peut voir apparaître un petit logo “Rails” à droit dans la barre d’adresse (voir ci-dessous)

github_wappalyzer_rails

En cliquant sur l’icône, on peut voir l’ensemble des frameworks et des technos qui sont utilisées par Github sur son site.

all_frameworks_wappalyzer

On peut donc voir qu’il y a du Ruby on Rails, Google Analytics et puis du jQuery!

Sur certains autres sites on obtient une liste beaucoup plus longue de frameworks et ça peut orienter les développeurs dans les choix donc c’est plutôt sympa!

Quelques liens

Ajouter la configuration de votre proxy sur votre terminal Git

Si vous avez le message d’erreur “fatal: unable to access … Could not resolve host: github.com lors de l’utilisation de Git, le réseau requiert surement un Proxy…

eror_proxy_git

Dans ce petit post je résume les deux-trois commandes qui permettent de setter un proxy, mais aussi d’afficher les paramètres actuels et des supprimer.

Les principales commandes

1 – Ajouter la configuration de votre proxy

[syntax type=”js”]git config –global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
git config –global https.proxy https://proxyuser:proxypwd@proxy.server.com:8080[/syntax]

2 – Afficher la configuration actuelle

[syntax type=”js”]git config –global –get http.proxy
git config –global –get https.proxy[/syntax]

3 – Supprimer la configuration de votre proxy

[syntax type=”js”]git config –global –unset http.proxy
git config –global –unset https.proxy[/syntax]