Synchronisation du repository git entre les ordinateurs, lors des déplacements?

Disons que j’ai un ordinateur de bureau et un ordinateur portable, et parfois je travaille sur le bureau et parfois je travaille sur l’ordinateur portable.

Quel est le moyen le plus simple de déplacer un repository Git dans les deux sens?

Je veux que les repositorys git soient identiques, de sorte que je puisse continuer là où je suis parti de l’autre ordinateur.

Je voudrais m’assurer que j’ai les mêmes twigs et balises sur les deux ordinateurs.

Merci Johan

Note: Je sais comment faire avec SubVersion, mais je suis curieux de savoir comment cela fonctionnerait avec git. Si c’est plus facile, je peux utiliser un troisième PC en tant que serveur classique que les deux PC peuvent synchroniser.

Remarque: les deux ordinateurs exécutent Linux.


Mise à jour :

Essayons donc l’idée de XANI: s avec un repository git nu sur un serveur et la syntaxe de commande push de KingCrunch. Dans cet exemple, il y a deux clients et un serveur.

Créons donc d’abord la partie serveur.

ssh user@server mkdir -p ~/git_test/workspace cd ~/git_test/workspace git --bare init 

Alors, depuis l’un des autres ordinateurs, j’essaie d’obtenir une copie du repository avec clone:

 git clone user@server:~/git_test/workspace/ Initialized empty Git repository in /home/user/git_test/repo1/workspace/.git/ warning: You appear to have cloned an empty repository. 

Ensuite, allez dans ce repository et ajoutez un fichier:

 cd workspace/ echo "test1" > testfile1.txt git add testfile1.txt git commit testfile1.txt -m "Added file testfile1.txt" git push origin master 

Maintenant, le serveur est mis à jour avec testfile1.txt.

Quoi qu’il en soit, voyons si nous pouvons obtenir ce fichier à partir de l’autre ordinateur.

 mkdir -p ~/git_test/repo2 cd ~/git_test/repo2 git clone user@server:~/git_test/workspace/ cd workspace/ git pull 

Et maintenant, nous pouvons voir le fichier de test.

À ce stade, nous pouvons le modifier avec un peu plus de contenu et mettre à jour le serveur à nouveau.

 echo "test2" >> testfile1.txt git add testfile1.txt git commit -m "Test2" git push origin master 

Ensuite, nous retournons au premier client et faisons un git pull pour voir le fichier mis à jour. Et maintenant je peux aller et venir entre les deux ordinateurs et en append un troisième si je le souhaite.

Je pense que les approches sont multiples. Je vais juste décrire, comment je gère cela

J’ai un netbook en tant que serveur 24/7, qui contient plusieurs repositorys git. De / à là, je pousse et tire les modifications via SSH. Pour l’access de l’extérieur, j’utilise dyndns.org. Cela fonctionne très bien, surtout parce que j’ai plus de deux systèmes, qui ont besoin d’accéder à certains des référentiels.

Mise à jour: Un petit exemple. Disons que mon netbook s’appelle “netbook”. Je crée un repository là-bas

 $ ssh username@netbook.local $ cd ~/git $ mkdir newThing $ cd newThing $ git init --bare 

Sur mon bureau, je vais créer un clone. Peut-être que je vais append des fichiers aussi

 $ git clone username@netbook.local:/home/username/git/newThing $ git add . $ git commit -m "Initial" $ git push origin master 

Sur mes portables, je ferai (d’abord) la même chose, mais pour l’access à distance (de l’extérieur de mon LAN), j’appendai également l’adresse externe.

 $ git clone username@netbook.local:/home/username/git/newThing $ git remote add externalName username@mydyndns.home-ip.org:/home/username/git/newThing $ git pull externalName master 

C’est juste la façon dont git (/ git workflows) fonctionne. Vous pouvez append autant de repositorys distants que vous le souhaitez. Cela n’a pas d’importance si deux ou plus se réfèrent aux mêmes référentiels “physiques”. Vous n’avez pas besoin d’un “serveur” local, vous pouvez utiliser n’importe quel serveur public auquel vous avez access ssh. Et bien sûr, vous n’avez pas besoin d’un serveur public, si vous n’avez pas besoin d’access depuis l’extérieur. Le repository nu peut également se trouver sur le système de bureau et vous pouvez ensuite créer un référentiel de travail dans le système de fichiers local.

 $ mkdir myRepo; cd myRepo $ git init --bare $ cd /path/to/myProject $ git remote add origin /path/to/myRepo $ git add .; git commit -m "Initial"; git push origin master 

C’est comme ça que je gère ça et pour moi ça marche plutôt bien (sinon parfait)

Quelque chose à lire: http://progit.org/ Vraiment un bon livre.-

Je clonerais le repository d’une boîte à l’autre, puis je mettrais en place les deux repo pour que je puisse simplement git fetch l’autre boîte.

Renommer la télécommande d’ origin au nom de l’autre boîte rend les twigs distantes plus faciles à lire.

Notez qu’en utilisant simplement git fetch (et non git push ), cela fonctionne bien avec les référentiels non nus:

 [user@foo repo]$ git fetch -v bar [user@bar repo]$ git fetch -v foo 

Manière la plus simple: repo central créé avec --bare (donc pas de fichiers extraits, uniquement des fichiers .git) ou github

“Dissortingbué” ressemblera à ceci:

Installer:

  1. Sur un ordinateur portable: git remote add desktop ssh://user@desktop/home/user/repo/path
  2. Sur le bureau: git remote add laptop ssh://user@laptop/home/user/repo/path

Synchronisation:

git pull laptop/desktop (le push ne fonctionnera pas très bien sur les repos non-nus car git ne modifiera pas les fichiers extraits lors de l’envoi au repo distant)

Ou faire un repository sur la clé USB;)

Que diriez-vous de simplement utiliser rsync ?

Ne pourriez-vous pas simplement créer un référentiel distant sur GitHub, BitBucket ou GitLab? (Les deux dernières sociétés offrent des référentiels privés gratuits illimités). Lorsque vous terminez la journée au travail, utilisez simplement git push pour transmettre vos modifications au repo distant. Lorsque vous rentrez chez vous, il vous suffit de tirer sur vos machines pour les modifier. De même, lorsque vous finissez à la maison, faites une git push puis, lorsque vous retournez au travail, faites un git pull .

Eh bien, vous pouvez pousser et tirer (via Git) vers le serveur que vous pourriez éventuellement configurer. Ou vous pouvez stocker vos mises en pension chez GitHub et les utiliser comme pont de synchronisation.

Vous pouvez créer le référentiel sur n’importe lequel de vos ordinateurs, probablement celui de votre ordinateur de bureau et y accéder par ordinateur ou par ordinateur.