Je suis en contribuant à un assez petit projet open source hébergé sur Github. De sorte que d'autres personnes puissent profiter de mon travail, j'ai créé ma propre fork sur Github. Malgré Github est le choix de la terminologie, je ne souhaite pas totalement écarter de l'objectif principal du projet. Cependant, je ne m'attends pas, ou le désir, que l'ensemble de mon travail est accepté dans le dépôt principal. Certains de il cependant, a déjà été fusionnées dans le dépôt principal et je m'attends à continuer. Le problème, je suis en cours d'exécution en est la meilleure façon de garder nos deux arbres dans un état où le code peut être partagé entre eux facilement.
Certaines situations que j'ai ou seront rencontrés comprennent:
- Je remets le code qui est ensuite accepté dans le référentiel principal. Quand je tire à partir de ce référentiel dans l'avenir, mon commit est dupliqué dans mon référentiel.
- Je remets le code qui n'est jamais accepté dans le dépôt principal. Quand je tire de ce référentiel dans l'avenir, les deux arbres ont divergé et de fixation, il est difficile.
- Une autre personne arrive et les bases de leur travail sur mon référentiel. Donc, je devrais évitez si possible de les changer s'engage à ce que j'ai poussé, par exemple par l'utilisation de git rebase.
- Je désire transmettre des code le référentiel maître. Idéalement, mes changements devraient facilement être transformé en plaques (idéalement à l'aide de git format-patch) qui peuvent directement et proprement appliquer le référentiel maître.
Aussi loin que je peux voir, il y a deux, ou peut-être trois façons de gérer cette situation, mais aucun qui fonctionnent particulièrement bien:
- Souvent lancez la commande git rebase pour garder mes modifications en fonction de la tête amont du dépôt. De cette façon, je peux éliminer le dédoublement s'engage mais souvent à réécrire l'histoire, à l'origine des problèmes pour les gens qui veulent tirer leur travail de la mine.
- Souvent de fusion en amont des changements de référentiel dans la mienne. Ceci fonctionne bien sur ma fin, mais ne semble pas pour le rendre facile pour soumettre mon code à l'amont du référentiel.
- Utiliser une combinaison de ces éléments et, éventuellement, git cherry-pick de garder les choses en ordre.
Ce qu'ont d'autres gens faire dans cette situation? Je sais que ma situation est analogue à la relation entre les différents contributeurs du noyau et Linus principal du référentiel, donc j'espère que il ya de bonnes façons de gérer cette situation. Je suis assez nouveau dans git, donc ne maîtrisez pas toutes ses nuances. Enfin, surtout en raison de Github, ma terminologie peut ne pas être totalement compatible ou de corriger. Hésitez pas à me corriger.