Cela peut sembler un peu étrange, mais je m'interroge sur un bon moyen de travailler en git de plusieurs machines en réseau, ensemble d'une manière ou d'une autre. Cela me semble que j'ai deux options et je peux voir des avantages des deux côtés:
Mon intuition dit que tout le monde va généralement avec la première option. Mais l'inconvénient que je vois, c'est que vous ne pourriez peut-être pas toujours accéder au code de vos autres machines, et je ne veux certainement pas pousser toutes mes branches de WIP à Github à la fin de chaque jour. Je ne veux pas non plus avoir à quitter mes ordinateurs tout le temps afin que je puisse les récupérer directement. Enfin, un point mineur est que toutes les commandes GIT pour conserver plusieurs branches à jour peuvent être fastidieuses.
Y a-t-il une troisième manche sur cette situation? Peut-être que certains outils tiers sont disponibles pour faciliter ce processus? Si vous traitez de cette situation régulièrement, que suggérez-vous?
Je traite quotidiennement avec vos deux solutions proposées. Il y a deux concepts clés pour bien les traiter.
production
Historique de la succursale logique, reproductible et déburgible. Lorsque vous utilisez plusieurs machines, vous devez occasionnellement vous engager de travailler en cours. Utilisez une succursale. Vous pouvez pull
et Push
cette branche des deux machines avec peu d'effort, et quand il est prêt à fusionner dans master
ou production
Rebase It créer une histoire plus maintenable.scripts
référentiel. Au début, cela semblait une bonne idée car le repo ne change pas souvent, mais au fil du temps, il est devenu un cauchemar. Il est facile de remplacer le travail des uns des autres et vous finissez par dépenser autant de temps à contrôler le trafic aérien qui déploie le référentiel comme vous y travaillez.La meilleure solution consiste à maintenir un référentiel local sur chaque machine et à partager des succursales entre eux via une télécommande. Commettre le travail dans ces succursales aussi souvent que vous le souhaitez. Tant que vous êtes prêt à rebase
les dans une histoire plus intelligible, c'est assez efficace dans la pratique.
Si vous vous trouvez travailler sur plus d'une succursale tout au long de la journée mais que vous ne voulez pas pousser chacun individuellement à la télécommande, git Push <remote>
volonté par défaut, poussez toutes les branches correspondantes à <remote>
. Ceci Par défaut changera dans une version ultérieure de GIT , mais peut être remplacé par réglage Push.default
Dans un fichier de configuration ou en spécifiant la correspondance refspec
:
git Push <remote> :
Si toutes les machines ne sont pas debout tout le temps, il n'y a pas de balle d'argent: avant de fermer la machine, vous devez pousser les changements ailleurs. J'appuie sur un serveur privé, mais il pourrait aussi bien être Dropbox ou une clé USB que vous transportez partout.
Oui, poussant plusieurs branches à un endroit central peut devenir fastidieux, mais cela ne devrait pas être trop difficile pour le script. J'utilise un Push.sh
Script pour cela, que je cours à chaque fois que j'ai fini de travailler sur une machine.
Je suis venu à cela d'une direction légèrement différente (et j'utilise mercurial, mais philosophiquement c'est la même). Ce n'est pas mon idée, je viens de l'utiliser et ça marche pour mes trucs personnels.
J'ai créé un clone de mes référentiels dans un dossier SkyDrive (cela pourrait également être DropBox ou un autre outil de synchronisation magique de votre choix), j'ai ensuite configuré les instances sur mes deux machines pour appuyer automatiquement au référentiel SkyDrive sur Engage.
Lorsque je change de boîtes, il suffit d'effectuer une traction et une mise à jour - en théorie, vous travaillerez toujours de manière linéaire, même si c'est dans plusieurs référentiels.
La clé ici est que le SkyDrive Repo existe principalement pour fournir un moyen de veiller à ce que j'ai accès à plus ou moins la dernière version du code sur mes deux machines - bien que cela fonctionnerait également pour plus de détails. Sauvegarde supplémentaire. Tout ce qui est "fait" est poussé au four (si j'utilisais Git et je comprends correctement la façon dont le jeu est joué alors ce serait point auquel je fais une boîte de rebas).
Ce que je ne voudrais vraiment pas faire est d'exécuter un dossier partagé ... Si vous utilisez un DVCS, vous pouvez également profiter de l'avantage.