2009-08-26 5 views
3

J'ai démarré un référentiel git local. Maintenant, à ce stade, je veux le publier, disons à github, mais je ne veux pas publier toute l'histoire du projet, juste la dernière révision.Publication du HEAD d'une branche sans tous les objets commit précédents

En particulier, je voudrais créer une branche "pub" locale, y apporter des modifications (éventuellement cacher des informations sensibles), et publier la branche "pub". Si je devais faire ce que j'ai dit en utilisant un simple push, je me verrais avoir toute l'histoire de "pub" publiée dans le dépôt distant, quelque chose que je ne veux pas car les informations sensibles seraient également publiées.

Comment cela peut-il être réalisé?

Merci!

Répondre

2

Jetez un oeil à this question.

Vous pouvez également remplacer le dossier .git dans votre arborescence source par un autre, et vérifier votre code dans celui-ci lorsque vous souhaitez publier.

Vous ne pouvez pas, cependant, configurer une branche dans le même référentiel Git sans partager l'historique, à cause du fonctionnement de Git. Un référentiel a une validation racine de l'état initial, et tous les autres commits sont simplement deltas contre ce commit.

Mais pendant que nous y sommes, si vous ne voulez pas exposer l'histoire de contrôle de version, pourquoi publie pas simplement le code comme tarball avec un numéro de version, aucune raison de glisser Git dedans :)

+0

+1 pour la solution alternative –

+0

Je dirais aussi un pour l'autre, sauf qu'il semble vouloir publier sur github ou similaire ce qui rendrait une archive moins utile. –

+0

Merci pour votre réponse. Je voudrais publier mon code à travers un dépôt git principalement pour deux raisons: 1 - Je veux suivre l'histoire du code publié. 2 - C'est bien d'avoir d'autres personnes pour collaborer. Merci encore. –

2

Une branche doit avoir toute son histoire exportée pour être poussée.

La solution, dans mon esprit, est de créer un nouveau dépôt git avec votre dernier paiement. Ensuite, ajoutez ce référentiel en tant que distant de votre référentiel actuel. Faites votre propre travail de synchronisation de la production au développement, et en utilisant git patch apply ou git rebase -i pour déplacer les choses à la production.

Cela permettra de garder votre historique de développement privé que vous ne voulez pas exposé à chaque apparition.

0

Je pense que je suis en train de plier git pour faire des choses, il est pas censé gérer :)

La solution la plus simple, je suis venu avec est:

1 - Créer une branche « projet public » de maître. 2 - Effectuez toutes les modifications afin de rendre votre code publiable, c'est-à-dire en masquant les mots de passe et autres choses de ce genre. Les fusions ultérieures géreront bien ces modifications. 3 - Une fois prêt, rsync le brouillon public avec le maître d'un autre dépôt git qui suit le dépôt distant. 4 - Validez toutes les modifications et déposez-les dans le référentiel distant. Je me demande si l'autre référentiel pourrait être remplacé par une branche nommée "public" qui ne fusionne jamais avec les autres branches mais qui est seulement fusionnée avec les branches "public-draft". Cela permet de fusionner les modifications introduites par d'autres personnes sur le référentiel public.

Merci à tous.

+0

En ce qui concerne la correction publique et la fusion à d'autres branches, oui, vous pouvez faire exactement cela. C'est dans ma réponse d'hier. –

Questions connexes