2009-12-22 7 views
32

Je travaille à déployer une application Django. L'application construite sur un projet Github OS. J'ai ceci stocké localement comme la branche principale.Comment puis-je pousser une branche spécifique de Git sur mon serveur?

$ git branch 
* master 
    customized - customized with local dev settings 
    webfaction_customized - with production server settings 

Les personnalisations pour ce projet sont stockées dans 2 branches distinctes.

Mon plan était d'effectuer localement ma personnalisation « sur mesure », puis fusionner ces changements dans « webfaction_customized »

ensuite pousser ces changements à un dépôt nu sur le production_server: Je puis cloner ce dépôt nu sur serveur_production, modifiez les paramètres dans le référentiel cloné et redémarrez le processus fcgi.

Le premier problème était que je l'ai trouvé si j'essayais de pousser une branche vers le serveur qui n'était pas le maître, je ne pouvais pas cloner à partir du dépôt nu. J'ai donc essayé de pousser la branche master vers le serveur. Mais maintenant, je constate qu'aucune de mes branches n'est téléchargée sur le site.

Existe-t-il un moyen de pousser une branche spécifique vers un référentiel nu et de pouvoir cloner cette branche?

OU

Ai-je besoin de restructurer mon projet afin que la branche principale est mes personnalisations et le projet Github serait dans une branche github?

+1

Y at-il des messages d'erreur? Vous avez dit que vous ne pouviez pas cloner le référentiel nu lorsque vous aviez poussé une branche non maîtresse. Quelle était l'erreur? Et y a-t-il une erreur lorsque vous appuyez sur la branche principale? – jonescb

+0

Est-ce que 'webfaction_server' est configuré en tant que remote? Que dit 'git remote show'? – ebneter

+0

Ceci est l'erreur lorsque vous essayez de cloner une branche non-maître avertissement: à distance HEAD se réfère à réf inexistant, impossible à la caisse. – BryanWheelock

Répondre

1

Votre commande push semble correcte, en supposant que webfaction_server est le nom d'un distant et pas seulement l'adresse du serveur. Exécutez git help remote pour en savoir plus sur le fait de pousser et de tirer vers/depuis plusieurs télécommandes.

0

vous devrez peut-être mettre à jour les informations du serveur avec git-update-server-info. Cet outil mettra à jour les informations HEAD sur le serveur avec les hachages de commit récents, en mettant à jour les anciennes branches et en rendant les nouvelles branches visibles. En particulier, il mettra à jour le fichier info/refs dans votre dépôt git. Vous devez exécuter sur le serveur, donc, peut-être quelque chose comme ce qui suit pourrait être utile:

ssh webserver "cd /path/to/your/repository.git/ && git-update-server-info" 

Il pourrait être possible de déclencher cette mise à jour, peut-être avec un crochet post-commit, mais n'ont pas essayé encore.

+0

Salut Egon. Que fait réellement update-server-info? Pouvez-vous s'il vous plaît expliquer un peu? –

1

Le message Warning: Remote HEAD refers to nonexistent ref, unable to checkout. indique seulement que le lien HEAD n'existe pas et donc Git ne sait pas quelle révision vérifier dans votre répertoire de travail local.

Les chances sont que les branches sur production_server elles-mêmes sont créées correctement. Il suffit de faire un git checkout <whatever-branch-you-want> et commencer à pirater.

Si cela ne résout pas le problème, collez ici la sortie de git branch -a et cat .git/config exécutez les deux repos.

+0

Je suppose que 'git br' est une commande spécifique de https://github.com/larsbrinkhoff/git-scripts/blob/master/git-br – tashuhka

+0

@tashuhka fixé, merci. Non, pour moi, c'est juste un alias de 'git branch'. –

62

Vous serait simplement faire:

git push origin webfaction_customized 

Où est l'origine de votre nom à distance et webfaction_customized est votre branche sur mesure.

Par conséquent, lorsque vous travaillez sur la branche principale, vous poussent via:

git push origin master 
Questions connexes