W04Y17 – Git, create a new repository from a current branch, disable HTTP logs in Express, Android mass storage and kill process on specific port

Create a new repo from an existing branch

As you know, it’s strongly recommended to create a new repository if a branch depends to another branch in your project… Basically, if you need to clone a repo twice and checkout each to a different branch to launch your project, it’es very bad!

So, the simplest method in three steps to create a new repo from a current branch is to:

> create your **new_repo** in GitHub
> cd to your local branch 
> git push git@github.com:youraccountname/new_repo +old_branch:master

Now, your new GitHub repository is up to date. The master branch corresponds to the branch in your old repo with all history preserved which is a very good point!

How to disable HTTP request logs in Node/Express.js

When you launch your application built on Node/Express, you’ll probably see a lot of logs for each resources (css, images, js, etc…)

GET /resources/styles.css 200 0ms
GET /js/lib/jmyawesomelib.js 200 0ms
etc...

The solution is to move the logging plugin below the resource plugin in the app init! or comment your morgan module (works on Express.js 4)

//app.use(morgan('dev'));

No more logs!

Mass storage troubleshooting

I figured some problems lorsque je branchais my Google Nexus 5X to my Macbook (also on a Windows machine too). It was impossible to do a mass storage to retrieve the phone content (photos, videos, downloaded files, etc…). I tried all the solutions found on forums and the only software that saved my life is Android File Transfer by Google for OSX.

Download Android File Transfer

Kill process running on a specific port

To kill a port that is running on a specific port, you need to execute the following commands. First, get the list of process running with corresponding ports and info:

netstat -a -o -n

Now, you get a list of process running on your machine, you only have to pick the PID corresponding the port you are looking to kill and replace 8080 below.

taskkill /F /PID 8080

Successfully killed, bye bye 🙂

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.

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]

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]