nous sommes récemment passés de SVN à Git et, simultanément, avons mis nos systèmes en direct sous contrôle de version (au lieu de la sortie locale et de la copie de fichier en direct).
Sur le projet auquel je suis affecté, nous accédons tous au même référentiel et, pour que les modifications soient prises en charge, git pull
Là. Cela pose des problèmes car nos concepteurs Web insèrent dans le VCS des modifications qui ne devraient pas encore être actives, mais devraient se trouver dans l'environnement de test Web.
Lorsque l'un des développeurs entre en direct, il reçoit tous les changements (éventuellement inachevés).
J'ai pensé changer en direct pour une branche supplémentaire et fusionner ce qui a changé, mais en raison de mon manque de connaissances géniales, je ne sais pas du tout comment.
Mon idée est:
- Créer une nouvelle branche en direct (
git branch live
). - Chaque fois que quelque chose doit aller vivre
- Tirer les changements dans le maître (comme:
git checkout master; git pull; git checkout live
) git merge master
- Tirer les changements dans le maître (comme:
Le problème est que passer à master ou tirer tout directement dans le système live poserait des problèmes, je préférerais donc éviter cela.
Existe-t-il un moyen de le faire ou existe-t-il un meilleur moyen de gérer le système Live (à l'exception de la formation des webbies pour qu'ils ne poussent pas les choses non finies).
git pull --all
sera par défaut ne pas tirer master en live, il tirera master et le fusionnera avec master, et (s'il existe sur le serveur) tire live pour fusionner en live. Est-ce que tu l'as essayé?git checkout -f
ignorer le problème - mais faites une sauvegarde!Réponses:
Vous pouvez utiliser
git stash
avant de vérifier master et pulling, et après avoir vérifié live again, utilisezgit stash pop
(ou si votre git est plus vieux,git stash apply
etgit stash clear
en supposant que vous n'avez rien caché d'autre)la source
git pull --all
va chercher toutes les télécommandes, mais il va quand même essayer de fusionner une branche (ou la branche par défaut) dans la branche actuelle.git fetch --all
aurait pu être une meilleure réponse--all
L'option vous donnera une fusion de pieuvre des différentes versions de la branche dans le courant! Donc, mon conseil est de rester loin de--all
à moins que ce ne soit ce que vous recherchez, car dans la plupart des autres cas, cela ne vous donnera rien.J'ai pu tirer des changements de
origin/master
dansmaster
en travaillant dans une autre branche en utilisant cette commande:la source
Résoudre le problème en premier. Ils ne devraient pas pousser vers une branche dans laquelle ils n'ont aucune activité.
Ce que vous semblez demander serait quelque chose comme
Cela tentera une fusion du maître distant et de votre branche active.
la source
Je vous recommande de créer un référentiel de test pour que tout le monde puisse s’engager. Tous les dépôts, y compris votre site Web en direct, seront des clones du dépôt de test. De cette manière, n'importe qui peut pousser à tester sans toucher au site Web actif. Lorsque quelqu'un a besoin de mettre à jour le site actif, vous pouvez extraire ce dernier du référentiel git testing. Ce flux de travail est assez similaire à SVN. Pour plus de flexibilité, je vous recommande d’utiliser la branche "live" que vous décrivez.
Pour résumer, le repo git de tout le monde est un clone du repo de test. Le site de production en direct n’est qu’un clone du rapport de test. Alternativement, le test pourrait être un clone de production en direct, de sorte qu'une "impulsion folle" se dirige toujours vers la production.
D'autres options incluent l'ajout de la branche "active" à cet arrangement ou l'inclusion d'un dépôt "intermédiaire" entre les tests et la production. Pour plus de sécurité, je vous recommande de limiter l’accès au dépôt git en direct et d’obliger les utilisateurs à utiliser un script sécurisé qui facilite la production en direct.
la source