« Git/Synchroniser le dépôt local avec le dépôt distant » : différence entre les versions

Contenu supprimé Contenu ajouté
déplacement de sections vers d'autres parties du livre
on ne peut pas travailler sur le dépôt donné en exemple, je fais un tuto pour travailler avec un faux dépôt distant (en local) ; {{en travaux}} car j'ai beaucoup de sections à ajouter
Ligne 1 :
{{en travaux}}
 
{{git}}
 
Dans le chapitre précédent, nous avons vu comment vous pouviez travailler seul dans votre dépôt local. Nous allons maintenant nous penché sur l'aspect '''distribué''' de git et voir comment travailler de façon collaborative en communiquant avec d'autres dépôts. Nous allons voir comment publier vos modifications et recevoir les modifications des autres développeurs.
== Vérifier les dépôts distants ==
 
Pour télécharger un dépôt distant :
== Simulons un environnement de travail distribué ==
$ git clone ssh://utilisateur@serveur.com:port/remote/chemin/du/depot
 
Nous allons faire travailler ensemble deux personnages, dont la réputation n'est plus à faire, Alice et Bob. Nous allons supposer que Alice et Bob vont chacun [[Git/Création de votre dépôt local|créer leur dépôt local]] sur leur machine avec git clone. Bien évidemment, ils vont utiliser ''clone'' en indiquant l'adresse https:// ou git:// du dépôt principal du projet.
 
=== Créons un faux dépôt distant pour nos tests ===
 
Il serait prématuré d'expliquer ici comment créer un dépôt sur le réseau. Aussi, pour travailler, nous allons créer un faux dépôt distant en local.
 
Placez-vous dans un dossier qui ne risque rien (par exemple <tt>/tmp</tt>), nous allons créer le faux dépôt distant.
 
<source lang="bash">
mkdir tests-avec-git
cd tests-avec-git
git init faux-depot-distant --bare
</source>
<pre>
Initialized empty Git repository in /tmp/tests-avec-git/faux-depot-distant/
</pre>
 
=== Simulons deux utilisateurs utilisant le dépôt distant ===
 
Le faux dépôt distant est créé. Maintenant, Alice et Bob vont [[Git/Création de votre dépôt local|créer leur copie locale avec clone]].
 
<source lang="bash">
git clone faux-depot-distant depot-local-alice
cd depot-local-alice
git config user.email "alice@fr.wikibooks.org"
git config user.name "Alice"
 
# Idem pour Bob
cd ..
git clone faux-depot-distant depot-local-bob
cd depot-local-bob
git config user.email "bob@fr.wikibooks.org"
git config user.name "Bob"
</source>
 
=== Alice commence à travailler ===
 
En tant qu'Alice, créons quelques modifications.
Ensuite les commandes des chapitres précédents deviennent disponibles.
 
<source lang="bash">
Après un certain temps il peut s'avérer nécessaire de revérifier si ce dépôt distant s'est mis à jour. Un <code>git pull</code> permet de le savoir en le fusionnant du même coup dans son dépôt local. Pour mettre à jour le dépôt distant avec cette fusion, utiliser <code>git push</code> :
cd depot-local-alice
$ git pull /chemin/distant/du/depot
echo "Ceci est un test de git" > mon_nouveau_fichier.txt
ou préférablement
git add mon_nouveau_fichier.txt
$ cd depot
git commit -m "ajout d'un fichier"
$ git pull
echo "Une seconde ligne" >> mon_nouveau_fichier.txt
puis
git add mon_nouveau_fichier.txt
$ git push
git commit -m "ajout d'une seconde ligne dans le fichier"
echo "Une troisième ligne" >> mon_nouveau_fichier.txt
git add mon_nouveau_fichier.txt
git commit -m "ajout d'une troisième ligne dans le fichier"
</source>
 
Alice à maintenant quelques modifications dans son dépôt local, nous allons voir comment elle peut échanger avec Bob.
=== Vérifier les dépôts locaux ===
<code>git clone</code> fonctionne aussi pour les dépôts locaux :
$ git clone /chemin/local/du/depot
 
== Commencer à travailler avec un dépôt distant ==
=== Vérifier les branches distantes ===
Pour lister les branches disponibles du dépôt distant :
$ git branch -r
origin/HEAD -> origin/master
origin/master
 
Dès que vous voulez faire une opération qui concerne le dépôt distant (publication ou récupération d'informations), commencez toujours par
Regarder celle qui s'appelle "origin" :
$ git remote show origin
* remote origin
Fetch URL: https://gerrit.wikimedia.org/r/p/test/mediawiki/extensions/examples
.git
Push URL: https://gerrit.wikimedia.org/r/p/test/mediawiki/extensions/examples
.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
 
<source lang="bash">
Récupérer cette branche distante :
git fetch
$ git pull origin BrancheLocale:BrancheDistante
</source>
 
Cela met les informations sur les dépôts distants auxquels sont rattachés votre dépôt local, si vous oubliez de le faire, vous risquez d'être faussé par le fait que l'historique des modifications que vous voyez (par exemple) n'est pas complet.
Envoyer dans cette branche distante :
$ git push origin BrancheLocale:BrancheDistante
 
== Publier les modifications locales sur le dépôt distant ==
Créer une branche locale à partir de la distante :
$ git checkout -b BrancheLocale origin/maint
 
Alice a fait plusieurs modifications sur ''master'', elle voudrait les partager avec Bob, elle doit donc publier ses derniers ''commits'' sur le dépôt distant.
Effacer cette branche distante :
$ git push origin :BrancheDistante
 
<source lang="bash">
Synchroniser les branches appelées "origin" :
$ git fetchpush origin master
</source>