Comment partager un git fonction (ou le sujet) branche avec plusieurs développeurs
Je suis en suivant le processus décrit ici, que j'ai trouvé de nombreuses références pointant vers cette page comme un bon flux de travail. Comme mentionné dans l'article, "fonction", les branches sont partagés entre les développeurs, mais ne pas aller vers le dépôt central.
Disons qu'un développeur "A" commence une nouvelle branche avec git checkout -b newfeature develop
. Maintenant, disons que le développeur "B" doit également travailler sur cette fonctionnalité. C'est mon problème.
Ce que j'ai fait:
- développeur "B", ajoute développeur d'Une machine à distance
- développeur "B" s'exécute
git branch remoteA/newfeature
- développeur "B" travaille sur cette branche, engager son travail et pousse les modifications à remoteA.
L'étape 3 n'est pas de travail, droit maintenant. Je reçois un message:
à distance: erreur: Par défaut, la mise à jour de la branche courante dans un non-nus
le dépôt est refusé, car il va faire l'index et le travail de l'arbre
incohérent avec ce qui vous a poussé, et nécessitera de git reset --hard'
pour faire correspondre le travail de l'arbre de la TÊTE.à distance: erreur: Vous pouvez définir le " recevoir.denyCurrentBranch de configuration
variable à "ignorer" ou "prévenir" dans le dépôt distant pour permettre
en poussant sur sa branche courante; cependant, ce n'est pas recommandé
sauf si vous avez convenu de mettre à jour ses travaux arbre pour correspondre à ce qui vous a poussé
d'une autre façon.à distance: erreur: Pour silencieux ce message et encore conserver la valeur par défaut
comportement, mettre.denyCurrentBranch' variable de configuration pour
'refuser'.
J'ai déjà sharedRepository = true
, mais il n'a pas aidé.
J'ai 2 questions:
- quelle est la bonne façon de partager des branches entre les développeurs?
- comment puis-je repousser les changements dans les développeur B du référentiel à Un développeur de l'original?
OriginalL'auteur duduklein | 2011-12-13
Vous devez vous connecter pour publier un commentaire.
Vous pouvez pousser à non à nu des pensions. Ce que vous ne pouvez pas faire est de pousser à un non-nue repo qui a la branche qui vous poussent à vérifié. La raison pour cela doit faire sens. Changer les fichiers que quelqu'un d'autre est peut-être à travailler sur serait incorrect.
En général, vous voulez pousser à maître ou une autre commune et partagée de la branche. Afin d'éviter ce conflit, le propriétaire de la télécommande non-nus des pensions de travailler sur une branche locale ou au moins une autre direction. Ensuite, vous pouvez pousser à la direction générale.
Pour utiliser votre exemple:
git branch remoteA/newfeature
git checkout -b work-newfeature
git rebase newfeature
OriginalL'auteur Bill Door
La façon la plus simple de partager des branches est tout simplement de pousser vers le dépôt central de sorte que vous pouvez tirer d'eux. De cette façon, vous pouvez simplement utiliser l'infrastructure que vous avez déjà pour votre dépôt principal et vous pouvez facilement partager du code.
La fois une fonction de direction sur la télécommande n'est plus nécessaire, vous pouvez simplement le supprimer en faisant un
Je vous le déconseille partage directement entre le développeur de machines qui est sujette à des problèmes comme les utilisateurs sur des réseaux différents (pas connectés les uns aux autres).
Si possible, vous pouvez également utiliser le GitHub modèle où il y a un référentiel central sur le serveur (la sainte principal repo).
Et d'ailleurs, que les principaux référentiel chaque développeur a une "fourchette" de ce référentiel dans lequel il a plein de commettre d'accès et peut pousser les branches à son goût.
Dans ce cas, vous pouvez ajouter à vos collègues de travail fourche comme les télécommandes de votre référentiel, tout en conservant un accès facile à un serveur centralisé (vous épargnant les tracas de la mise en place des clés SSH sur chaque machine etc etc)..
Une description sur le GitHub modèle peut être trouvé ici:
http://www.eqqon.com/index.php/Collaborative_Github_Workflow
Mise à jour: Comme l'un des auteurs de l'a souligné, c'est un bon lien pour commencer avec la centralisation de la-fonction-direction des flux de travail: http://nvie.com/posts/a-successful-git-branching-model/
Update2: Pour prolonger votre deuxième question:
Ce que vous essayez de faire est de pousser à un non-dépôt nu d'un autre développeur.
Git en place dans certaines version précédente (je pense 1.6), le concept d'un dépôt nu - c'est un référentiel qui a pas vérifié l'état, mais ne contient que la base de données qui se passe normalement dans
.git
.Le raisonnement derrière ce changement est que chaque fois que vous pousser à vos collègues de travail référentiel (qui est actuellement en train de travailler sur quelque chose) - la manipulation du référentiel juste sous son nez. Donc, il vérifie la version featureA-1 .. commence à travailler .. vous poussez ensuite featureA-2 sur son repo et quand il veut s'engager, il s'exécute en difficulté, car la branche, il a été dans les a avancé par un commit il n'a pas vu au cours du développement.
Parce que c'est très perturbateurs - la Plupart des gens ont adopté la notion de " local dépôts git (ceux où vous faire activement du travail) doivent être privé alors que vous avez un public git-repo (le fourche) où vous recevoir et de partager des changements. De cette façon, vous ne jamais être interrompu par quelqu'un d'autre au cours de votre travail (c'est l'idée derrière le modèle décentralisé de toute façon) et ne peut intégrer les changements que vous voulez avoir. (Personne ne peut pousser quelque chose sur votre travail en cours).
Grand lien.. je vais le modifier dans
Le lien que vous avez indiqué est le même que j'ai inclus dans ma question (dans la première phrase: "je suis en suivant le processus décrit ici" Le mot "ici" est un lien qui pointe vers le même endroit. Dans ce lien (qui je suis d'accord, c'est super), Ils disent: "Mais, outre le centralisée push-pull relations, chaque développeur peut également tirer des modifications d'autres pairs pour former des sous-équipes." C'est ce que j'essaie de reproduire, sans succès.
J'essayais d'expliquer exactement ce que le GitHub modèle - mais je suppose que je n'ai pas fait moi-même assez clair. J'ai mis à jour la réponse une fois de plus, avec des informations sur votre problème spécifique (non-nue pensions ne peut pas être poussé à l')
OriginalL'auteur Tigraine