09:14 <grenoya> bonjour
        09:27 <encolpe_> bonjour
        09:33 <misc> coin
        21:43 <gvall> salut
        21:44 <gvall> est ce qu'il y aurait un gourou de git de dispo ? J'ai un petit gros soucis ....
        21:47 <serge_sans_paill> gvall: on est tous le noob de quelqu'un, raconte !
        21:49 <gvall> je code dans un gros projet python et je n'avais pas fait git pull depuis longtemps... entre temps j'ai fait des modifs dans une branche. J'ai voulu mettre à jour et là j'ai 11000 comité de retard et une liste interminable de conflits sur des choses que je n'ai pas touchées
        21:49 <gvall> le problème c'est que je ne peux plus retourner sur ma branche et j'ai peur de perdre ce que j'ai fait
        21:51 <serge_sans_paill> le problème c'est que je ne peux plus retourner sur ma branche  << pkoa ?
        21:52 <gvall> quand je fait un checkout il me dit que je dois d'abord gérer les conflits
        21:53 <serge_sans_paill> tu est en plein dans un merge c'est ça ?
        21:54 <gvall> j'ai fait git pull et il me dit que je dois faire merge
        21:54 <serge_sans_paill> si c'est le cas un git reset --hard HEAD te remettra dans un état pre-merge (si tu as peut, fait un cp -r de ton dossier avant)
        21:54 <serge_sans_paill> oui, git pull ça fait git fetch puis git merge
        21:55 <serge_sans_paill> dans ton cas, ce que je ferais (après avoir annulé le merge, c'est)
        21:55 <serge_sans_paill> 1. passer sur ta branche en retard
        21:55 <serge_sans_paill> 2. en faire une copie (git checkout -b my-working-branch)
        21:55 <serge_sans_paill> 3. tenter un git rebase origin/master
        21:56 <haypo> serge_sans_paill: +1 pour le (3), j'allais proposer ça, rebase ;)
        21:56 <serge_sans_paill> salut haypo
        21:56 <haypo> et pour le (2) : j'ai mis longtemps à comprendre qu'une création de branche en git a un coût "nul", donc il faut en abuser :)
        21:56 <haypo> et c'est carrément plus simple de revenir en arrière suite à une boulette quand on a des branches locales nommées
        21:57 <haypo> git checkout -b ca_va_chier
        21:57 <haypo> git rebase
        21:57 <haypo> ... gros bordel ...
        21:57 <haypo> git checkout ancienne_branche
        21:57 <gvall> git rebase ça fait quoi en gros ?
        21:57 <haypo> git branch -D ca_va_chier # on oublie ça, on va se coucher
        21:57 <gvall> :)
        21:57 <haypo> gvall: ça réapplique chacune de tes modifs par dessous la branche à jour
        21:57 <haypo> git checkout -b ... revient un peu à un cp -R
        21:58 <haypo> et git branch -D à un rm -rf
        21:58 <feth> par dessus, pas par dessous :)
        21:58 <serge_sans_paill> gvall, dans la page de man de git rebase, y a de jolis dessins qui expliquent ça
        21:58 <haypo> sauf que c'est plus rapide
        21:58 <haypo> feth: eh oui
        21:59 <gvall> ok ok merci, bon là on est 100 niveaux au dessus de ce que je sais faire avec git ...
        21:59 <gvall> pour l'instant je suis sur master, j'ai fait mon git reset --hard HEAD
        21:59 <serge_sans_paill> ok
        22:00 <serge_sans_paill> alors git checkout comment_vas_tu_vieille_branche
        22:00 <serge_sans_paill> pour aller sur ta vieiile branche
        22:00 <gvall> yes j'y suis :)
        22:00 <serge_sans_paill> ensuite git checkout -b comme_tu_vois_ture_a_bras
        22:00 <serge_sans_paill> ça c'est ta branche de sauvergarde
        22:00 <serge_sans_paill> sauvegarde
        22:01 <serge_sans_paill> ensuite git rebase origin/master
        22:01 <gvall> je retourne dans master avant de faire le rebase ? car master n'est pas à jour non plus
        22:02 <serge_sans_paill> non non
        22:02 <serge_sans_paill> tu as des modifs perso sur master ?
        22:02 <gvall> non
        22:02 <gvall> je fais les modifs dans une branche à part pour éviter les conneries
        22:02 <serge_sans_paill> ok
        22:02 <gvall> ... ou presque
        22:02 <serge_sans_paill> alors on va commencer par le plus simple
        22:02 <serge_sans_paill> git checkout master
        22:02 <serge_sans_paill> git pull origin master
        22:03 <serge_sans_paill> ça doit passer crème
        22:04 <gvall> non ... j'ai quantité de conflit. Ils on peut être fait une connerie ou alors il faudrait que je fasse le pull version par version ?
        22:04 <alain_afpy> WARNING !!! YAKAFOKON DETECTED !!!!
        22:05 <serge_sans_paill> si tu as des conflits, c'est soit 1/ que tu as des commits à toi
        22:05 <serge_sans_paill> 2/ que le dépot a subit un push --force
        22:06 <serge_sans_paill> esperons pour toi que le cas 1/ est vrai
        22:06 <serge_sans_paill> le pull version par version va pas chager grand chose
        22:07 <gvall> normalement non malheureusement
        22:08 <gvall> comment je peux avoir l'historique des commits ? un git history ? ou autre ?
        22:08 <serge_sans_paill> git log
        22:09 <gvall> non les derniers commits ne sont pas de moi
        22:09 <serge_sans_paill> git rev-list HEAD -n1
        22:09 <serge_sans_paill> tu notes le sha1
        22:10 <serge_sans_paill> puis
        22:10 <serge_sans_paill> git rev-list origin/master | grep le-sha1
        22:10 <serge_sans_paill> si ça te renvoie qqchose c'est bon signe
        22:10 <serge_sans_paill> si ça affiche rien c'est mauvais signe
        22:10 <gvall> ... rien
        22:11 <gvall> quand je fait git status j'ai une série de "new file" en vert puis une série de "both added" en rouge
        22:11 <feth> smells like reset
        22:12 <serge_sans_paill> si git rev-list origin/master | grep le-sha1 te renvoie rien, c'est que ton dernier commit local est pas présent sur origin, et ça c'est pas bon signe
        22:12 <serge_sans_paill> si au lieu de prendre le dernier, tu prends l'avant dernier, ça te donne quoi ?
        22:13 <gvall> comment ça ?
        22:14 <gvall> le grep devais tous me les donner non ?
        22:14 <gvall> devait 
        22:14 <serge_sans_paill> for i in `seq 1 10`; do echo "=== $i ==="; git rev-list origin/master | grep `git rev-list HEAD -n$i | tail -n1` ; done
        22:14 <serge_sans_paill> pour les 1à dernières révisions en local, regarde si elles apparaissent sur origin
        22:16 <gvall> non ça renvoi rien, juste la liste de 1 à 10. En même temps j'ai jamais fais de commit sur origin. Je fais les modifs et commit dans ma branche puis je fais un push sur mon fork et je fais un pull roquets depuis mon fork du projet.
        22:17 <serge_sans_paill> alors p'tet qu'ils ont fait un push --force
        22:17 <serge_sans_paill> si tu changes 10 en 100 ?
        22:18 <gvall> non tjs rien. 
        22:19 <gvall> Ceci dit avec en faisant le revert je peux retourner dans les branches récupérer mes modifs donc c'est pas perdu.
        22:19 <gvall> En conclusion je n'ai plus qu'à supprimer et refaire un git clone pour repartir du début ?
        22:20 <serge_sans_paill> gvall, dernière solution
        22:20 <serge_sans_paill> on va repartir de leur répo et réappliquer tes commits dessus
        22:20 <serge_sans_paill> on tente ça ?
        22:20 <gvall> ok !
        22:21 <serge_sans_paill> 1) git branch fresh origin/master
        22:21 <serge_sans_paill> git checkout fresh
        22:21 <serge_sans_paill> comme ça fresh est une copie clean de origin master
        22:21 <serge_sans_paill> ensuite fait un git log ma_branche_perso # celle où tu as tes commits
        22:22 <serge_sans_paill> et note le sha1 du premier commit qui ets pas de toi (je suppose ici que l'historique de cette branche c'est
        22:22 <serge_sans_paill> des commits  d'origin ... des commits d'orin ... des commits à toi
        22:22 <gvall> ok mais je dois faire le reset d'abord alors ? Car si j'essaye d'aller sur fresh il me donne la liste de merge et il me dit "error: you need to resolve your current index first"
        22:22 <serge_sans_paill> oui git reset --hard HEAD
        22:24 <gvall> après le reset j'ai des fichiers CHANGES_BACKUP_16996.rst qu'il connait pas (untracked)
        22:24 <serge_sans_paill> c'est pas grave
        22:26 <gvall> ok donc j'ai créé la branch fresh et le git log me donne mes commits
        22:26 <gvall> git log mabranche
        22:26 <serge_sans_paill> ok
        22:26 <serge_sans_paill> tu as le premier commit qui est pas de toi (son commit -id) ?
        22:26 <gvall> les 2 premiers sont de moi ensuite non
        22:27 <serge_sans_paill> ok, alors là j'ouvre ma page de man
        22:27 <gvall> :)
        22:28 <serge_sans_paill> git rebase --onto fresh premier-id-pas-a-toi mabranche ?
        22:30 <gvall> il a appliqué les modifs je crois
        22:30 <serge_sans_paill> \o/
        22:30 <serge_sans_paill> git log pour vérifier ça
        22:31 <gvall> oui les deux premier commit sont de moi
        22:31 <serge_sans_paill> et bien, problème résolu
        22:32 <gvall> du coup maintenant je fais git pull ?
        22:32 <gvall> dans fresh
        22:32 <serge_sans_paill> bah non, maintenant
        22:32 <serge_sans_paill> tu as dans fresh l'équivalent de origin/master + tes deux commits, c'est ça ?
        22:33 <feth> sinon, si le pb est d'être l'auteur du dernier commit : git commit --amend --author="mon nom <mon@email.com>"
        22:33 <serge_sans_paill> si oui, git branch -D master; git branch master origin/master
        22:33 <serge_sans_paill> puis git branch -D mabranche; git branch -m mabranche
        22:33 <serge_sans_paill> git branch -D master va détruire ton master pourri
        22:34 <serge_sans_paill> git branch master origin/master va faire pointer ton master local sur celui d'origin
        22:34 <serge_sans_paill> git branch -D mabranche va détruire ta branche
        22:34 <serge_sans_paill> git branch -m mabranche
        22:34 <serge_sans_paill> va renommer fresh sur laquelle tu te trouves en mabranche
        22:34 <serge_sans_paill> et tu auras
        22:34 <serge_sans_paill> 1/ dans master une copie de master
        22:34 <serge_sans_paill> 1/ dans master une copie de origin.master
        22:35 <serge_sans_paill> 2/ dans mabranche origin/master + tes deux commits
        22:36 <gvall> "it's a kind of magic!"
        22:37 <serge_sans_paill> la magie, c'est l'explication qu'on trouve quand on comprend pas
        22:44 <gvall> une question avant de tenter d'effacer les branches, tu dis que je suis dans fresh mais après avoir fait le rebase --onto ... je suis dans mabranche
        22:44 <gvall> du coup je reviens dans fresh avant ?
        22:44 <serge_sans_paill> oui
        22:45 <serge_sans_paill> git log fresh pour être sur que tu as bien tout ce qu'il faut sur fresh (tes deux commits, suivis du dernier commit de origin/master)
        22:46 <gvall> hum non
        22:46 <gvall> il n'y a pas mes commis
        22:47 <serge_sans_paill> ils sont dans mabranche, suivi du dernier commit d eorigin/master ?
        22:47 <gvall> tout à l'heure en fait je les ai vu car après le rebase j'était dans mëabranche et non dans fresh
        22:47 <gvall> non plus, dans mabranche j'ai mes commit puis des vieux commit du moi d'aout
        22:48 <gvall> non pardon j'ai mes commits puis le dernier commit date du 15 novembre
        22:49 <gvall> donc c'est dans gau que j'ai ce qu'il faut
        22:50 <serge_sans_paill> gau ?
        22:50 <gvall> mabranche = gau :) 
        22:50 <serge_sans_paill> donc dans gau y a ce que tu veux, c'est ça ?
        22:50 <gvall> oui
        22:50 <serge_sans_paill> alors git checkout gau
        22:50 <serge_sans_paill> git branch -D master
        22:51 <serge_sans_paill> git branch master origin/master
        22:51 <serge_sans_paill> et ce sera bon
        22:51 <gvall> ok c'est fait
        22:51 <gvall> et je peux virer fresh ?
        22:53 <gvall> rrroh master et gau sont au vert :)
        22:54 <serge_sans_paill> oui tu peux dégager fresh
        22:56 <gvall> et là master et mabranche sont identiques en fait 
        22:57 <gvall> du coup master est "en avance" sur le master du repo origin ?
        22:59 <serge_sans_paill> non, c'est la même
        23:00 <serge_sans_paill> git diff master origin/master
        23:00 <serge_sans_paill> git branch master origin/master
        23:00 <serge_sans_paill> te granatit que c'est les même normalement
        23:00 <gvall> mais mes commits ne sont  pas sur le repo origin
        23:01 <gvall> je les ai jamais envoyé
        23:02 <serge_sans_paill> tu as bien détruit (git branch -D master) master puis git branch master origin/master ?
        23:02 <gvall> oui
        23:05 <gvall> quand je fait git log mes commits ne sont que dans la branche mabranche
        23:06 <serge_sans_paill> faut que j'aille je pieuter
        23:06 <serge_sans_paill> mais j'ai l'impression qu'on est pas loin
        23:06 <gvall> :)
        23:06 <gvall> oui merci beaucoup !!!
        23:06 <gvall> repos bien mérité
        23:06 <serge_sans_paill> ++
        23:06 <serge_sans_paill> j'espère que tu as un peu compris ce qui s'est passé aussi :-)
        23:07 <gvall> je peux pas dire tout, le rebase est un peu mystérieux