{"id":971,"date":"2012-03-16T17:11:52","date_gmt":"2012-03-16T16:11:52","guid":{"rendered":"http:\/\/blog.kodono.info\/wordpress\/?page_id=971"},"modified":"2012-08-23T15:34:31","modified_gmt":"2012-08-23T13:34:31","slug":"howto-github","status":"publish","type":"page","link":"https:\/\/blog.kodono.info\/wordpress\/howto-github\/","title":{"rendered":"HowTo GitHub"},"content":{"rendered":"<p>L&#8217;utilisation de <a href=\"http:\/\/github.com\">GitHub<\/a> n&#8217;\u00e9tant pas triviale, j&#8217;ai d\u00e9cid\u00e9 de r\u00e9unir ici mes d\u00e9couvertes quant \u00e0 ce service et la fa\u00e7on de l&#8217;utiliser (<em>ce document sera mis \u00e0 jour au fur et \u00e0 mesure donc<\/em>).<\/p>\n<p><strong>Remarque<\/strong>: GitHub a sorti un petit test grandeur nature pour mieux connaitre GitHub&#8230; Et c&#8217;est \u00e0 essayer sur <a href=\"http:\/\/try.github.com\/\">http:\/\/try.github.com\/<\/a><\/p>\n<h1>Commencer<\/h1>\n<p>Il faut d&#8217;abord vous cr\u00e9er un compte, puis suivez le tutoriel qui est simple: <a href=\"http:\/\/help.github.com\/set-up-git-redirect\" title=\"Lien vers le tutoriel de GitHub\">http:\/\/help.github.com\/set-up-git-redirect<\/a>.<\/p>\n<div class=\"alert alert-info\">\n<strong>A savoir<\/strong> &#8211; Git est sensible \u00e0 la case, cela signifie que les majuscules\/minuscules sont importantes dans votre <strong>pseudo<\/strong>.\n<\/div>\n<div class=\"alert alert-info\">\n<strong>A savoir<\/strong> &#8211; Il vous est demander de cr\u00e9er une <strong>passphrase<\/strong> : il faudra vous en rappeler car vous l&#8217;utiliserez \u00e0 chaque <code>push<\/code> et autres commandes.\n<\/div>\n<h1>Cr\u00e9er un d\u00e9p\u00f4t (<i>repository<\/i>)<\/h1>\n<p>Vous pouvez commencer par lire le <a href=\"http:\/\/help.github.com\/create-a-repo\/\">guide de GitHub<\/a> mais il devient vite confus&#8230;<\/p>\n<div class=\"alert alert-info\">\n<strong>A savoir<\/strong> &#8211; Git est sensible \u00e0 la case, cela signifie que les majuscules\/minuscules sont importantes dans votre nom de <strong>repository<\/strong>.\n<\/div>\n<p>Par d\u00e9faut vous allez cr\u00e9er une branche appel\u00e9e <b>master<\/b>. Typiquement c&#8217;est l\u00e0 o\u00f9 vous allez mettre vos sources.<br \/>\nMais sachez qu&#8217;il est possible de faire h\u00e9berger des pages par GitHub. Cela peut \u00eatre la documentation de l&#8217;API que vous avez mis dans <b>master<\/b>, ou un site de pr\u00e9sentation du projet que vous proposez (exemples avec <a href=\"http:\/\/twitter.github.com\/bootstrap\/\">http:\/\/twitter.github.com\/bootstrap\/<\/a> ou encore <a href=\"http:\/\/aymkdn.github.com\/SharepointPlus\/\">http:\/\/aymkdn.github.com\/SharepointPlus\/<\/a>).<\/p>\n<p>De fait, avant de lancer la commande <code>git init<\/code> comme indiqu\u00e9 dans le <a href=\"http:\/\/help.github.com\/create-a-repo\/\">tutoriel<\/a> (<em>1. Create the README file<\/em>), il va falloir vous assurer que vous \u00eates dans le bon r\u00e9pertoire !<br \/>\nPrenons l&#8217;exemple de <a href=\"https:\/\/github.com\/Aymkdn\/SharepointPlus\">SharepointPlus<\/a> :<\/p>\n<blockquote><p>Actuellement sur mon ordinateur j&#8217;ai deux r\u00e9pertoires :<br \/>\n&rarr; disons <code>D:\/Dev\/API\/SharepointPlus\/<\/code> o\u00f9 est stock\u00e9 mon fichier <code>sharepointplus-x.x.js<\/code> et mon fichier <code>changelog<\/code>;<br \/>\n&rarr; et un autre r\u00e9pertoire <code>D:\/Doc\/Auto Generate\/SharepointPlus\/<\/code> avec <code>index.html<\/code> et toute ma documentation.<\/p><\/blockquote>\n<p>Tout ce qui concerne les fichiers API JavaScript seront stock\u00e9s dans ma branche par d\u00e9faut (<em>master<\/em>).<\/p>\n<p>Donc la commande <code>git init<\/code> doit \u00eatre faite dans le r\u00e9pertoire <code>D:\/Dev\/API\/SharepointPlus\/<\/code>. Vous pouvez maintenant continuer \u00e0 suivre le <a href=\"http:\/\/help.github.com\/create-a-repo\/\">tutoriel de GitHub<\/a>.<\/p>\n<div class=\"alert alert-info\">\n<strong>A savoir<\/strong> &#8211; Le fichier <code>README<\/code> sera lu directement par GitHub lorsqu&#8217;on visualisera votre repo. Si vous voulez le mettre en forme, alors il faut lui rajouter l&#8217;extension <code>.md<\/code> (<em>MarkDown<\/em>). Vous pouvez cr\u00e9er d&#8217;autres fichiers avec l&#8217;extension <code>.md<\/code> (<a href=\"https:\/\/github.com\/Aymkdn\/SharepointPlus\/blob\/master\/changelog.md\">example<\/a>) : tous ces fichiers utilisent une syntaxe qui leur est propre et qui est d\u00e9crite dans <a href=\"http:\/\/github.github.com\/github-flavored-markdown\/\" title=\"Lien vers GitHub pour la syntaxe des fichiers .md\">http:\/\/github.github.com\/github-flavored-markdown\/<\/a> et sur <a href=\"http:\/\/daringfireball.net\/projects\/markdown\/basics\" title=\"Lien vers DaringFireBall pour la documentation sur le markdown\">http:\/\/daringfireball.net\/projects\/markdown\/basics<\/a>.\n<\/div>\n<h2>Cr\u00e9er des pages h\u00e9berg\u00e9es par GitHub<\/h2>\n<p>On a donc cr\u00e9\u00e9 notre d\u00e9p\u00f4t et on a cr\u00e9\u00e9 une branche <em>master<\/em> pour nos scripts.<br \/>\nMaintenant on souhaite h\u00e9berger quelques pages, et pour cela je vous invite \u00e0 lire le <a href=\"http:\/\/pages.github.com\/\">guide de GitHub<\/a>.<\/p>\n<p>Comme vous allez le d\u00e9couvrir, il faut cr\u00e9er une nouvelle branche, qui se nomme <em>gh-pages<\/em> et qui contiendra nos fichiers HTML (avec un <code>index.html<\/code> \u00e0 la racine).<\/p>\n<p>Dans mon exemple pr\u00e9c\u00e9dent, je vais donc devoir me mettre cette fois dans le r\u00e9pertoire <code>D:\/Doc\/Auto Generate\/SharepointPlus\/<\/code> avant de lancer la commande <code>git symbolic-ref HEAD refs\/heads\/gh-pages<\/code><\/p>\n<p>L\u00e0 encore le site n&#8217;est pas forc\u00e9ment tr\u00e8s clair, donc voici les commandes qu&#8217;il faudra taper :<\/p>\n<pre class=\"code:bash\">\r\ngit init\r\ngit symbolic-ref HEAD refs\/heads\/gh-pages\r\ngit add .\r\ngit commit -m 'first commit'\r\ngit remote add origin git@github.com:VOTRE_USERNAME\/NOM_DU_REPOSITORY.git\r\ngit push origin gh-pages\r\n<\/pre>\n<div class=\"alert alert-info\">\nVous remarquerez que dans le bash de Git, lorsqu&#8217;on est dans une r\u00e9pertoire li\u00e9 \u00e0 un compte GitHub, on va voir entre parenth\u00e8se le nom de la branche. Par exemple pour <em>gh-pages<\/em> je verrai <code>D:\/Doc\/Auto Generate\/SharepointPlus\/ (gh-pages)<\/code>\n<\/div>\n<h1>Envoyer des fichiers dans le d\u00e9p\u00f4t<\/h1>\n<p>Il y a trois commandes \u00e0 retenir.<\/p>\n<ol>\n<li><code>git add file1 file2 ...<\/code> : ajouter tous les fichiers que vous souhaitez envoyer<\/li>\n<li><code>git commit -m \"description\"<\/code> : indiquer gr\u00e2ce \u00e0 &#8220;description&#8221; les modifications que vous avez effectu\u00e9s<\/li>\n<li><code>git push origin master<\/code> : &#8220;master&#8221; est le nom de la branche (\u00e7a peut donc \u00eatre aussi &#8220;gh-pages&#8221; ou autre)<\/li>\n<\/ol>\n<div class=\"alert alert-info\">\n<strong>Astuce<\/strong> &#8211; vous pouvez utiliser le point (.) avec la commande <code>add<\/code> pour ajouter tous les fichiers du r\u00e9pertoire courant.\n<\/div>\n<p>A noter que tous les commandes Git sont disponibles dans cette <a href=\"http:\/\/help.github.com\/git-cheat-sheets\/\" title=\"Lien vers toutes les commandes git\">cheat sheet<\/a>.<\/p>\n<h1>Modifications distantes<\/h1>\n<h2>\u00c9diter en ligne<\/h2>\n<p>Saviez-vous qu&#8217;il est possible d&#8217;\u00e9diter directement en ligne ses fichiers ? Il suffit d&#8217;aller dans son d\u00e9p\u00f4t et de visualiser un fichier. Vous verrez un &#8220;Edit&#8221; dans les menus. <\/p>\n<h2>R\u00e9cup\u00e9rer localement les modifications distantes<\/h2>\n<p>Si des fichiers de votre d\u00e9p\u00f4t ont \u00e9t\u00e9 modifi\u00e9s (par vous ou quelqu&#8217;un d&#8217;autre), vous pouvez simplement r\u00e9cup\u00e9rer simplement ceux-ci en local gr\u00e2ce \u00e0 la commande <code>git pull<\/code> (qui est l&#8217;\u00e9quivalent de la commande <code>git fetch<\/code> suivie par un <code>git merge origin\/master<\/code>). Cela va avoir pour effet de fusionner vos fichiers locaux avec ceux qui sont dans le d\u00e9p\u00f4t distant (branche master).<\/p>\n<p>Si jamais le syst\u00e8me n&#8217;est pas capable de fusionner (merge) deux fichiers ensembles (par exemple dans le cas o\u00f9 vous avez modifi\u00e9 la m\u00eame ligne dans les deux fichiers), alors il va y avoir un conflit et vous devez le g\u00e9rer manuellement :<\/p>\n<blockquote><p>CONFLICT (content): Merge conflict in xxxxx<br \/>\nAutomatic merge failed; fix conflicts and then commit the result.<\/p><\/blockquote>\n<p>Pour g\u00e9rer ce conflit, vous devez d&#8217;abord installer <a href=\"http:\/\/www.scootersoftware.com\/download.php\" title=\"Lien vers le site pour Beyond Compare 3\">Beyond Compare 3 (bc3)<\/a>. Je pr\u00e9cise que le programme est gratuit en mode standard (mais, une fois install\u00e9, vous pouvez d\u00e9bloquer des fonctionnalit\u00e9s en l&#8217;achetant et en passant alors en PRO). Selon l\u00e0 o\u00f9 vous l&#8217;installez vous devrez peut-\u00eatre configurer le chemin d&#8217;acc\u00e8s (path). Si vous ne faites pas cela, alors \u00e0 la commande <code>git mergetool<\/code> vous aurez l&#8217;erreur suivante :<\/p>\n<blockquote><p>libexec\/git-core\/mergetools\/bc3: line 9: bcompare: command not found<\/p><\/blockquote>\n<p>Pour r\u00e9soudre ce probl\u00e8me, vous devez <a href=\"http:\/\/www.scootersoftware.com\/support.php?zz=kb_vcs#gitlinux\" title=\"Lien vers la documentation de Beyond Compare\">configurer le path vers le fichier bcompare<\/a>; tapez dans la console git les commandes suivantes (pensez \u00e0 mettre votre path vers le fichier) :<br \/>\n<code>git config --global merge.tool bc3<\/code><br \/>\n<code>git config --global mergetool.bc3.path \"c:\/program files\/beyond compare 3\/bcomp.exe\"<\/code><\/p>\n<p>Une fois &#8220;Beyond Compare&#8221; install\u00e9 et configur\u00e9, alors retapez la commande <code>git mergetool<\/code> qui va vous ouvrir le programme et vous pourrez parcourir votre fichier et faire les modifications n\u00e9cessaires.<\/p>\n<h1>Autres ressources<\/h1>\n<p><a href=\"http:\/\/www.blog-nouvelles-technologies.fr\/archives\/13114\/comprendre-github-fork-branch-track-squash-et-pull-request\/\">Comprendre GitHub<\/a><br \/>\n<a href=\"http:\/\/gitimmersion.fr\/\">Toutes les commandes Git en fran\u00e7ais<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;utilisation de GitHub n&#8217;\u00e9tant pas triviale, j&#8217;ai d\u00e9cid\u00e9 de r\u00e9unir ici mes d\u00e9couvertes quant \u00e0 ce service et la fa\u00e7on de l&#8217;utiliser (ce document sera mis \u00e0 jour au fur et \u00e0 mesure donc). Remarque: GitHub a sorti un petit test grandeur nature pour mieux connaitre GitHub&#8230; Et c&#8217;est \u00e0 essayer sur http:\/\/try.github.com\/ Commencer Il [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","hide_page_title":"","footnotes":""},"class_list":["post-971","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/pages\/971","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/comments?post=971"}],"version-history":[{"count":17,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/pages\/971\/revisions"}],"predecessor-version":[{"id":1000,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/pages\/971\/revisions\/1000"}],"wp:attachment":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/media?parent=971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}