2010-05-14 7 views
17

Donc, je ne suis pas un expert en contrôle de source, j'ai déjà utilisé Subversion pour des projets dans le passé. Je dois utiliser Git pour un projet particulier (client Git repo). Mon flux de travail est tel que je vais travailler sur les fichiers de deux ordinateurs différents, et souvent j'ai besoin de vérifier les changements qui sont instables lorsque je me déplace d'un endroit à l'autre afin que je puisse continuer mon travail. Ce qui se produit ensuite, c'est quand, par exemple, le client va obtenir la dernière version, ils vont également télécharger le code instable.Comment est-ce que je peux traduire des concepts de tronc/branche de Subversion à Git?

Dans SVN, vous pouvez résoudre ce problème en créant une jonction et en utilisant des branches actives, ou utiliser le joncteur comme version de travail et créer des branches stables.

Quel est le concept équivalent dans Git, et existe-t-il un moyen simple de le faire via GitHub?

Répondre

17

Il y a plusieurs façons de procéder. Si vous devez passer d'un ordinateur à l'autre, vous allez basculer vers un référentiel différent, ce qui signifie que vous appuieriez vos modifications sur le repo distant. C'est très bien, mais cela signifie aussi que vous

Un exemple très simple est d'effectuer seulement votre travail instable sur une branche privée, et de le nommer quelque chose d'évident, par exemple. unstable-development. Voici comment faire à partir de zéro. D'abord, faisons un nouveau repo à partir du site de votre client, que j'appellerai "secret-sauce".

$ git clone git://example.com/repositories/secret-sauce.git 

Vous êtes toujours sur la branche master, la valeur par défaut. Faisons une nouvelle branche afin que vous puissiez commettre des choses là-bas au lieu de master.

$ git branch unstable 
$ git checkout unstable 
Switched to branch 'unstable' 

OK. Maintenant, nous allons ajouter un code instable:

$ touch kablammo.txt 
$ git add * 
$ git commit -m "Added unstable code." 
[master (root-commit) 9428aef] Initial checkin. 
0 files changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 kablammo.txt 

En ce moment, unstable existe que de votre côté. Notez que lorsque nous avons cloné, nous avons un référentiel distant appelé origin, qui a une branche master correspondante. Lorsque votre référentiel local connaît les branches d'un référentiel distant, nous appelons cela une "branche de suivi". Vous pouvez voir toutes vos branches de suivi à distance avec git branch -r:

$ git branch -r 
    origin/HEAD -> origin/master 
    origin/master 

D'accord. Revenons à nos changements!

$ git push origin unstable 

Ca y est - nos changements vivent maintenant dans la branche unstable sur la prise en pension à distance. Si nous voulons voir à nouveau ce que font les gens sur la branche master, nous pouvons revenir à git checkout master.

+0

mieux que x nombre de "tutoriels" qui prennent un processus simple et le rendent complexe. – Thufir

9

Je trouve cela une ressource précieuse: A Successful Git Branching Model

Contrairement SVN, git est décentralisée. Vous ne devriez jamais avoir besoin de pousser du code instable dans le dépôt de votre client. Vous pouvez simplement tirer le code instable sur votre 2ème ordinateur à partir du 1er. Cela dit, les poignées git se ramifient bien et devraient faire partie intégrante de la méthodologie que vous finirez par utiliser.

Questions connexes