{"id":844,"date":"2013-04-06T15:53:20","date_gmt":"2013-04-06T20:53:20","guid":{"rendered":"http:\/\/gruson.name\/weblog\/?p=844"},"modified":"2013-04-17T12:14:54","modified_gmt":"2013-04-17T17:14:54","slug":"git-pense-bete-pour-debuter","status":"publish","type":"post","link":"http:\/\/gruson.name\/weblog\/2013\/04\/06\/git-pense-bete-pour-debuter\/","title":{"rendered":"Git, pense-b\u00eate pour d\u00e9buter"},"content":{"rendered":"<p>\u00c7a y est!<\/p>\n<p>Apr\u00e8s plusiuers mois de reagrds en coin, d&#8217;oeillades et de tentatives d&#8217;approche avort\u00e9es je sors enfin avec git :-)<\/p>\n<p>C&#8217;est finalement assez simple et puissant.<\/p>\n<p>&nbsp;<\/p>\n<p>Le but est de synchroniser des versions d&#8217;applications ruby on rails entre un serveur central et plusieurs ordinateurs p\u00e9riph\u00e9riques. Un peu bizarre vu que git est promu pour le c\u00f4t\u00e9 d\u00e9centralis\u00e9, mais dans mon cas cela risquait d&#8217;\u00eatre un sacr\u00e9 bazaar :-)<\/p>\n<p>Donc j&#8217;ai une application en d\u00e9veloppement sur un ordinateur<br \/>\net je souhaite faire un d\u00e9pot (repository en anglais) sur le serveur central et se synchroniser via ssh.<\/p>\n<h2>Serveur distant centralis\u00e9 servant de d\u00e9pot git principal<\/h2>\n<blockquote><p><span style=\"color: #99cc00;\">git init &#8211;bare depotapplicationtest.git<\/span><\/p><\/blockquote>\n<p><span style=\"color: #99cc00;\">git<\/span> d\u00e9but d&#8217;ordre donn\u00e9 \u00e0 git<\/p>\n<p><span style=\"color: #99cc00;\">init<\/span> cr\u00e9ation d&#8217;un d\u00e9pot<\/p>\n<p><span style=\"color: #99cc00;\">&#8211;bare<\/span> qui ne contiendra pas les fichiers en clair mais servira de r\u00e9f\u00e9rence<\/p>\n<p><span style=\"color: #99cc00;\">depotapplication.git<\/span> le dossier qui servira de d\u00e9pot. Finir par .git est une convention.<\/p>\n<p>La configuration du serveur est finie. C&#8217;est pas long hein?<\/p>\n<h2>Git en local<\/h2>\n<p>Sur\u00a0 l&#8217;ordinateur distant qui a une application Rails \u00e0 synchroniser avec le d\u00e9pot:<\/p>\n<p><span style=\"color: #99cc00;\">cd applicationtest\/\u00a0<\/span> je vais dans le dossier;<\/p>\n<p><span style=\"color: #99cc00;\">git init<\/span> je d\u00e9clare ce dossier comme \u00e9tant un d\u00e9pot git;<\/p>\n<p><span style=\"color: #99cc00;\">git add .<\/span> (attention ne pas publier le point, j&#8217;additionne tous les dossiers, documents \u00e0 la future synchronisation;<\/p>\n<p><span style=\"color: #99cc00;\">git commit -m &#8220;premier commit et autre commentaire&#8221;<\/span> j&#8217;enregistre les changements.<\/p>\n<p>Maintenant on a un d\u00e9pot personnel git que l&#8217;on peut synchroniser avec d&#8217;autres ordinateurs p\u00e9riph\u00e9riques, un autre dossier sur le m\u00eame ordinateur, etc.<\/p>\n<p>Mais le but est de le synchroniser avec le serveur centralis\u00e9.<\/p>\n<blockquote><p><span style=\"color: #99cc00;\">git remote add origin ssh:\/\/utilisateurdistant@adresse_de_mon_serveur_centralise\/chemin\/du\/dossier\/dossierapplicationtest.git<\/span><\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #99cc00;\">remote add<\/span> ajout d&#8217;un d\u00e9pot distant;<\/p>\n<p><span style=\"color: #99cc00;\">origin<\/span> nom du d\u00e9pot;<\/p>\n<p><span style=\"color: #99cc00;\">ssh:\/\/<\/span> d\u00e9pot avec lequel la connexion se fera en ssh avec l&#8217;adresse qui suit.<\/p>\n<p>&nbsp;<\/p>\n<p>On a donc cr\u00e9\u00e9 une relation entre le d\u00e9pot sur l&#8217;ordinateur local et le d\u00e9pot centralis\u00e9 sur le serveur distant.<\/p>\n<p>Maintenant on veut &#8220;remplir&#8221; le d\u00e9pot central :<\/p>\n<blockquote><p><span style=\"color: #99cc00;\">git push origin master<\/span><\/p><\/blockquote>\n<p><span style=\"color: #99cc00;\">git push<\/span> envoie les modifications des fichiers et dossiers;<\/p>\n<p><span style=\"color: #99cc00;\">origin<\/span> nom du d\u00e9pot<\/p>\n<p><span style=\"color: #99cc00;\">master<\/span> branche du projet.<\/p>\n<p>Dans mon cas vu que la cl\u00e9 ssh n&#8217;est pas encore d\u00e9finie la connexion n\u00e9cessite l&#8217;entr\u00e9e du mot de passe sur demande, et voil\u00e0 !<\/p>\n<p>J&#8217;ai maintenant un d\u00e9pot centralis\u00e9 sur lequel les modifications effectu\u00e9es sur un ordinateur local seront mises \u00e0 jour (apr\u00e8s un <span style=\"color: #99cc00;\">git add .<\/span> et un <span style=\"color: #99cc00;\">git commit -m&#8221;commentaire&#8221;<\/span>).<\/p>\n<h2>Associer un autre d\u00e9pot git.<\/h2>\n<p>Suposons que maintenant je veuille travailler sur le m\u00eame projet \u00e0 partir d&#8217;un autre ordinateur.<\/p>\n<p>Sur celui-ci, git install\u00e9 \u00e9videmment, je tape la commande<\/p>\n<blockquote><p><span style=\"color: #99cc00;\">git clone ssh:\/\/utilisateurdistant@adresse_de_mon_serveur_centralise\/chemin\/du\/dossier\/dossierapplicationtest.git<\/span><\/p><\/blockquote>\n<p>qui va rapatrier en local les fichiers de l&#8217;application gr\u00e2ce \u00e0 <span style=\"color: #99cc00;\">git clone<\/span> suivi de l&#8217;adresse.<\/p>\n<p>Une modification, un <span style=\"color: #99cc00;\">git add .<\/span>, <span style=\"color: #99cc00;\">git commit -m &#8220;commentaire&#8221;<\/span> et un <span style=\"color: #99cc00;\">git push origin master<\/span> plus tard, le serveur est mis \u00e0 jour.<\/p>\n<p>Et de retour sur mon premier ordinateur p\u00e9riph\u00e9rique. Je veux rapatrier les modifications effectu\u00e9es. Je tape alors <span style=\"color: #99cc00;\">git pull origin master.<\/span>.<\/p>\n<p><span style=\"color: #99cc00;\">git pull<\/span> ramenant les modifications du serveur vers le local.<\/p>\n<p>C&#8217;est tout.<\/p>\n<p>Pas mal non ?<\/p>\n<h3>\u00a0Mise \u00e0 jour 20 avril 2013<\/h3>\n<p>A l&#8217;occasion d&#8217;un d\u00e9placement j&#8217;ai du modifier l&#8217;adresse locale de mon d\u00e9pot git en adresse internet (la redirection des ports ssh \u00e9tant automatique via la box).<\/p>\n<p>Comment faire ?\u00a0Tout simplement dans le dossier de mon projet en \u00e9ditant via <span style=\"color: #99cc00;\">vim .git.\/config<\/span> l&#8217;adresse du serveur. On sauvegarde et cela fonctionne \u00e0 nouveau.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c7a y est! Apr\u00e8s plusiuers mois de reagrds en coin, d&#8217;oeillades et de tentatives d&#8217;approche avort\u00e9es je sors enfin avec git :-) C&#8217;est finalement assez simple et puissant. &nbsp; Le but est de synchroniser des versions d&#8217;applications ruby on rails entre un serveur central et plusieurs ordinateurs p\u00e9riph\u00e9riques. Un peu bizarre vu que git est &hellip; <a href=\"http:\/\/gruson.name\/weblog\/2013\/04\/06\/git-pense-bete-pour-debuter\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Git, pense-b\u00eate pour d\u00e9buter<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,3,4],"tags":[],"class_list":["post-844","post","type-post","status-publish","format-standard","hentry","category-application","category-linux","category-technologies"],"_links":{"self":[{"href":"http:\/\/gruson.name\/weblog\/wp-json\/wp\/v2\/posts\/844","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/gruson.name\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/gruson.name\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/gruson.name\/weblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/gruson.name\/weblog\/wp-json\/wp\/v2\/comments?post=844"}],"version-history":[{"count":23,"href":"http:\/\/gruson.name\/weblog\/wp-json\/wp\/v2\/posts\/844\/revisions"}],"predecessor-version":[{"id":867,"href":"http:\/\/gruson.name\/weblog\/wp-json\/wp\/v2\/posts\/844\/revisions\/867"}],"wp:attachment":[{"href":"http:\/\/gruson.name\/weblog\/wp-json\/wp\/v2\/media?parent=844"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/gruson.name\/weblog\/wp-json\/wp\/v2\/categories?post=844"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/gruson.name\/weblog\/wp-json\/wp\/v2\/tags?post=844"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}