web-dev-qa-db-fra.com

git - alias de branche?

Je recherche le passage de starteam à git.

Actuellement, dans starteam, nous utilisons des "vues flottantes" avec des noms spéciaux. Ces vues flottantes fonctionnent essentiellement comme des alias. Par conséquent, nous pouvons spécifier un alias spécifique à partir duquel extraire et nous obtiendrons la branche sur laquelle nous testons actuellement le modèle.

Comment cela se ferait-il dans git? Voici essentiellement comment nos succursales sont organisées:

Ce sont toutes des branches

master (stable view)
   |  - Branch 2012.05.01
   |          | - Project 1
   |          | - Project 2
   |          | - model [floating view / alias to Branch 2012.05.01]
   |
   |  - Branch 2012.07.11   (these would also have various child views for projects)
   |  - Branch 2012.10.17

(La branche 2012.05.01 serait fusionnée pour devenir maître une fois les tests du modèle terminés)

Dans nos scripts automatisés (ant) pour exécuter notre déploiement de modèle, nous passons simplement à la caisse de notre branche appelée "modèle". De cette façon, nous n'avons jamais à changer nos scripts car nous changeons quelle branche nous testons le modèle, et trouver quelle vue nous testons le modèle est aussi simple que de déterminer quelle branche les références de branche "modèle".

Existe-t-il une telle façon de faire quelque chose de similaire dans git?

Edit: les gens deviennent confus ici.

  1. Je veux un alias d'une branche. Une branche, pas un commit.
  2. "Branche 2012.05.01" signifie la succursale destinée à être expédiée le 2012.05.01, cela ne signifie pas un moment dans le temps 2012.05.01
  3. Je veux un alias pour Branch 2012.05.01. La branche 2012.05.01 est une branche d'intégration, elle est constamment modifiée. Mais je ne veux pas le référencer comme Branch 2012.05.01, je veux le référencer comme "modèle". De cette façon, je peux changer mon alias en "Branch 2012.07.11" et il obtiendra le code le plus récent de cette branche sans changer le script de code de paiement.
39
user606723

Veuillez voir ici: https://stackoverflow.com/a/549949/60672

Vous pouvez renommer le tronc de branche principale comme Greg l'a suggéré, ou vous pouvez également créer un tronc qui est une référence symbolique à la branche principale afin que les utilisateurs git et svn aient la branche `` principale '' à laquelle ils sont habitués.

git symbolic-ref refs/heads/trunk refs/heads/master

Notez que le coffre n'est pas un citoyen de première classe. Si vous extrayez le tronc et effectuez un statut git, vous serez en réalité maître, mais vous pouvez utiliser la commande trunk dans tous les endroits où vous utilisez le nom de la branche (journal, fusion, etc.).

46
user606723

Git ne prend pas en charge les alias pour les branches.

Cela signifie que vous devrez vous fier aux variables de votre script pour créer model = "branch.2012.10.17" ou quelque chose du genre. Votre script ferait alors quelque chose comme ceci:

git checkout $model

Je laisse le reste de cette réponse ici pour d'où nous venons dans cette discussion:

Une discussion très impliquée sur la stratégie de branchement peut être trouvée ici: http://dymitruk.com/blog/2012/02/05/branch-per-feature/

Plus précisément, jetez un œil au rôle de la branche d'intégration et de la branche candidate à la libération. C'est peut-être ce que vous recherchez.

Regardez git comme quelque chose qui prend un instantané de votre répertoire de travail, pas comme des historiques de dossiers.

progit.org/book explique le graphique acyclique dirigé qui stocke l'historique. Toutes les références ne sont que des éléments qui pointent vers des nœuds. Cela devrait clarifier la façon dont vous souhaitez construire votre flux de travail.

créer une balise de démarrage - version2.1. à partir de là, faites votre int-version2.1 (en utilisant des nubmers au lieu de dates pour plus de brièveté). Tout travail que vous démarrez, commencez à partir de la balise version 2.1. fusionner le travail dans l'int-version2.1. D'autres feront de même.

3
Adam Dymitruk

Dans le cas où vous avez besoin d'une branche par fonctionnalité - la réponse d'Adam Dymitruk est correcte, mais dans le cas où vous avez besoin d'enregistrer l'état spécifique à la branche des liens (en fonction du temps), sans les changer, vous pouvez utiliser des balises git.

J'ai utilisé des balises pour les états de magasin de chaque version de prod.

0
iMysak