<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux Attitude&#187; versioning</title>
	<atom:link href="http://linux-attitude.fr/tag/versioning/feed" rel="self" type="application/rss+xml" />
	<link>http://linux-attitude.fr</link>
	<description>Le libre est un état d&#039;esprit</description>
	<lastBuildDate>Mon, 06 Feb 2012 08:01:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Git à tous les étages</title>
		<link>http://linux-attitude.fr/post/git-a-tous-les-etages?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=git-a-tous-les-etages</link>
		<comments>http://linux-attitude.fr/post/git-a-tous-les-etages#comments</comments>
		<pubDate>Tue, 07 Apr 2009 19:06:00 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[versioning]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/post/git-a-tous-les-etages</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: git Git est un système de suivi de version. Git est beau, git est simple, git a été fait par Linus Torvalds. Tout seul Dans une utilisation de premier niveau, git peut fonctionner comme RCS, c'est-à-dire en local. Créons un dépôt local dans le répertoire que nous voulons versioniser&#160;: $ git init [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: git</p>



<p>Git est un système de suivi de version. Git est beau, git est simple, git a été fait par Linus Torvalds.</p>


<h3>Tout seul</h3>

<p>Dans une utilisation de premier niveau, git peut fonctionner comme RCS, c'est-à-dire en local.</p>


<p>Créons un dépôt local dans le répertoire que nous voulons versioniser&nbsp;:</p>
<pre>
$ git init
</pre>

<p>Fini&nbsp;!</p>


<p>Ajoutons un fichier au suivi des versions&nbsp;:</p>
<pre>
# add est récursif par défaut
$ git add monfichier
$ git commit -a
</pre>


<p>Bon je pense que vous avez compris, donc je vous la fais courte. Pour avoir la documentation d'une commande il suffit d'ajouter un tiret après git. Exemple le manuel de "git add" est dans "man git-add" ou dans "git add --help".
Voyons les commandes de base utilisées le plus fréquemment, vous y reconnaîtrez celles qu'on trouve dans la plupart des systèmes de suivi de version (CVS, RCS, SVN ...)&nbsp;:</p>
<ul>
<li><strong>git add</strong>&nbsp;: Ajouter un fichier au suivi de version</li>
<li><strong>git commit</strong>&nbsp;: Valider les modifications</li>
<li><strong>git log</strong>&nbsp;: Pour voir les modification récentes</li>
<li><strong>git diff</strong>&nbsp;: Voir ce qui a changé pour un fichier depuis une certaine version</li>
<li><strong>git revert</strong>&nbsp;: Annule une unique modification (il est possible d'annuler une modification passée sans annuler tout depuis ce moment)</li>
<li><strong>git status</strong>&nbsp;: Savoir tout ce qui n'a pas encore été validé</li>
</ul>

<p>Vous remarquerez que git utilise des sommes sha1 pour identifier les différentes versions. Cela permet d'être universel et de ne pas avoir de problème de collision. Il vous faudra juste un peu de temps pour vous adapter à lire les logs avec des numéros aussi longs et non incrémentaux.</p>


<p><span id="more-304"></span></p>


<h3>A plusieurs</h3>


<p>Ensuite, un autre intérêt du suivi de version est aussi de travailler à plusieurs.
Git est un système de version distribué, ce qui veut dire qu'il n'y a pas de dépôt centralisé qui fait autorité. Il y a autant de dépôt que de personne créant un dépôt et chacun peut aller piocher dans un ou plusieurs dépôts de ses voisins. C'est un peu anarchique, mais ça correspond bien au développement opensource. Et si vous voulez un dépôt d'autorité, vous pouvez toujours créer un dépôt que déclarez comme l'unique dépôt officiel et tout le monde doit se synchroniser dessus.</p>


<p>Un autre avantage de ce système est que chacun peut avoir ses propres commit fréquents pour suivre ce qu'il fait, et aggréger tous ces commits en une seule fois lorsque ce qu'il a fait fonctionne vraiment pour le valider sur un dépôt commun.</p>


<p>Voyons les commandes utiles&nbsp;:</p>
<ul>
<li><strong>git clone</strong>&nbsp;: Créer un nouveau dépôt de travail basé sur un autre dépôt (public pour le partage)</li>
<li><strong>git pull</strong>&nbsp;: Récupère les nouveautés sur un dépôt parent</li>
<li><strong>git push</strong>&nbsp;: Déposer ses modifications sur un autre dépôt (public pour le partage)</li>
</ul>

<h3>Tags et branches</h3>


<p>Bien sûr, comme dans tout bon système de suivi de version, git gère les tags et les branches.</p>

<ul>
<li><strong>git branch</strong>&nbsp;: Pour gérer les branches</li>
<li><strong>git checkout</strong>&nbsp;: Change la branche de travail</li>
<li><strong>git show-branch</strong>&nbsp;: Affiche la branche en cours</li>
<li><strong>git merge</strong>&nbsp;: Pour merger des branches</li>
<li><strong>git tag</strong>&nbsp;: Gère les tags</li>
</ul>


<h3>Fin</h3>


<p>Bien sûr je n'ai pas tout dit. Il existe plus de 100 commandes git, à vous de les découvrir si vous en avez besoin. Pensez à des choses bien sympathiques comme&nbsp;:</p>
<ul>
<li><strong>git bisect</strong>&nbsp;: Parcourir tous les changements (avec recompilation et exécution si besoin) à la recherche de la source d'un problème (par recherche binaire)</li>
<li><strong>git rebase</strong>&nbsp;: Change le dépôt parent permettant de calculer les patchs</li>
<li><strong>git format-patch</strong>&nbsp;: Formate un mail pour envoyer un patch</li>
<li><strong>git am</strong>&nbsp;: Applique des patch directement en lisant une boîte mail</li>
</ul>
<p>Et que dire des extensions comme git-svn qui permettent de s'interfacer avec la plupart des projets existant développés avec d'autres systèmes de suivi de version (ou ceux qui veulent utiliser git dans une entrprise qui ne jure que par svn).</p>


<p>Vous trouverez un peu plus de documentation sur l'usage courant de git sur <a href="http://www.kernel.org/pub/software/scm/git/docs/everyday.html" title="http://www.kernel.org/pub/software/scm/git/docs/everyday.html">http://www.kernel.org/pub/software/...</a>. Une fiche de travail sur <a href="http://jonas.nitro.dk/git/quick-reference.html" title="http://jonas.nitro.dk/git/quick-reference.html">http://jonas.nitro.dk/git/quick-ref...</a> et une fiche bien plus détaillée sur <a href="http://cheat.errtheblog.com/s/git" title="http://cheat.errtheblog.com/s/git">http://cheat.errtheblog.com/s/git</a></p>



<p>Commencez à vous y mettre, vous verrez que c'est rapidement pratique. D'ailleurs dès le prochain article je vais commencer des choses intéressantes avec git.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/git-pour-tous' rel='bookmark' title='Permanent Link: Git pour tous'>Git pour tous</a></li>
<li><a href='http://linux-attitude.fr/post/propager-son-home' rel='bookmark' title='Permanent Link: Propager son home'>Propager son home</a></li>
<li><a href='http://linux-attitude.fr/post/la-flexibilite-pour-tous' rel='bookmark' title='Permanent Link: La flexibilité pour tous'>La flexibilité pour tous</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/versioning" title="versioning" rel="tag">versioning</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/git-a-tous-les-etages/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)
Database Caching 4/17 queries in 0.055 seconds using apc
Object Caching 450/461 objects using apc
Content Delivery Network via N/A

Served from: linux-attitude.fr @ 2012-02-09 00:51:04 -->
