161 votes

Vous avez une branche privée d'un dépôt public sur GitHub ?

J'ai un projet PHP public dans un repo GitHub, qui contient une seule branche (master).

Je veux avoir une branche/fourchette séparée qui me soit privée (j'ai payé pour des dépôts GitHub privés). J'aimerais pouvoir fusionner les modifications de la branche privée vers le dépôt public, et vice versa.

Dans cette optique, voici mes questions :

  1. Puis-je avoir une branche privée sur un repo public ?
  2. Puis-je bifurquer de mon propre dépôt public vers ma propre branche privée ?
  3. Si les deux cas de figure ci-dessus sont possibles, quelle est la meilleure solution ? Si aucun des deux n'est possible, comment dois-je procéder ?

2 votes

La meilleure idée n'est-elle pas de bifurquer votre dépôt public comme un dépôt privé, où vous créez plusieurs branches que vous ne repoussez pas vers le dépôt public (et vice versa) ?

2 votes

C'est ce que je demande, je veux pouvoir créer une copie du dépôt public mais que mes mises à jour soient privées (sauf si je veux pousser des choses spécifiques vers le dépôt public).

1 votes

111voto

Est-il possible d'avoir une branche privée sur un repo public ?

Sur GitHub, votre dépôt est soit public, soit privé ; vous ne pouvez pas "privatiser" sélectivement une branche seulement.

Puis-je bifurquer de mon propre dépôt public vers ma propre branche privée ?

Vous pouvez cloner votre dépôt public sur votre machine locale, faire des branches si nécessaire, et simplement ne pas pousser vos branches "privées" en amont (en spécifiant dont branche pour pousser vers l'origine : git push origin master o git push origin branch-i-want-to-be-public:master ).

Quelle est la meilleure façon de procéder/comment dois-je procéder ?

Afin de tirer parti de GitHub pour vos développements publics et privés, je vous suggère de bifurquer votre branche publique dans GitHub, de modifier les paramètres de la nouvelle bifurcation en "Privé", puis de cloner la version privée sur votre machine locale. Lorsque vous êtes prêt à rendre les changements publics, poussez tout vers votre branche privée sur GitHub, puis utilisez la fonction demandes de téléchargement pour copier sélectivement des branches vers le dépôt public.

Pour rendre un dépôt privé sur GitHub, vous devez disposer d'une version mise à jour de l'application. (payé) compte. Si vous n'avez qu'un compte gratuit, vous pouvez toujours utiliser le premier processus que j'ai suggéré clone public sur la machine locale, branche, et pousse les branches "publiques" spécifiques vers l'origine - sans avoir besoin d'un dépôt privé.

Si vous disposez d'un compte GitHub payant, ou si vous utilisez un autre service qui propose des fourches et des demandes de retrait publiques et privées (tel que BitBucket ), vous pouvez alors utiliser l'une ou l'autre des approches ci-dessus pour rendre votre code public.

37 votes

GitHub ne permet pas de rendre privé un fork d'un repo public. Il faut dupliquer le repo pour le rendre privé, et on perd alors la connexion au repo public. Je me demande si vous pouvez ajouter le repo public comme un remote séparé à votre clone local du repo privé. Puis pousser les branches vers ce distant.

3 votes

L'implication de ceci est malheureusement qu'il n'est pas possible d'utiliser les demandes de retrait pour transférer les changements d'un "fork" privé vers une copie publique du dépôt.

11 votes

GitHub offre désormais des dépôts privés illimités aux comptes gratuits.

103voto

mj1531 Points 741
  1. Dupliquer votre repo .
  2. Faites du repo dupliqué un repo privé sur GitHub.
  3. Clonez le dépôt privé sur votre machine
  4. Ajouter un remote à votre repo public (git remote add public git@github.com :...)
  5. Poussez les branches avec les commits destinés à votre repo public vers ce nouveau remote public. (assurez-vous que vous ne commettez pas accidentellement du code privé uniquement)
  6. Vous pouvez apporter des modifications à votre dépôt public en utilisant 'git fetch public', puis les fusionner localement et les pousser vers votre dépôt privé (origin remote).

1 votes

La duplication fonctionne bien pour moi, bien que j'aie dû le faire dans l'ordre inverse, en créant d'abord un repo privé, puis en dupliquant le repo public à partir de la ligne de commande. Merci !

16voto

Arthur Bowers Points 311

Il existe une autre solution que je trouve meilleure car elle n'entraîne pas de duplication des dépôts sur la même machine.

  • Créez une branche avec les éléments que vous voulez rendre privés.
  • Créez un nouveau dépôt sur GitHub, définissez-le comme privé.
  • Ajoutez le nouveau repo GitHub en tant que second repo distant de votre repo sur votre machine.
  • Pousser la branche privée vers le second site distant.

Le résultat final est un référentiel avec deux télécommandes. 1 public, 1 privé.
Il faut juste faire attention à ce que l'on pousse, donc nommer en conséquence.

0voto

hakre Points 102271

1.) Est-il possible d'avoir une branche privée sur un dépôt public ?

D'après ce que je sais, non.

2.) Puis-je bifurquer de mon propre dépôt public vers ma propre branche privée ?

Non, vous ne pouvez pas forker un repo complet (1-n branches) en une seule branche. En fait, vous pouvez le faire, si vous ne bifurquez qu'une seule branche de la version complète. Il suffit de l'ajouter en tant que branche distante ou de partir d'un clone.

Vous pourriez également être intéressé par Des caisses éparses .

3.) Si les deux options ci-dessus sont possibles, quelle est la meilleure façon de procéder ?

s/o

4.) Si aucun des deux n'est possible, comment dois-je procéder ?

s/o

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X