2017-09-11 2 views
4

Légèrement lié à this question Je voudrais travailler avec une branche temporaire dans un script shell.créer un nom de branche temporaire avec git

quelque peu le long des lignes de:

cd $(git rev-parse --show-toplevel) && 
git subtree split --prefix=some_subfolder -b temp && 
git push my_remote temp:publication_branch -f 

Maintenant, je ne sais pas ce que cela va faire si la branche temp existe déjà, en tout cas, je ne veux pas le résultat sur my_remote/publication_branch dépendre cette. Et je ne veux pas non plus modifier la branche temp (en supposant que je l'ai pour quelque chose sans rapport). Au mieux, je voudrais aussi faire un nettoyage à la fin

cd $(git rev-parse --show-toplevel) && 
git subtree split --prefix=some_subfolder -b temp && 
git push my_remote temp:publication_branch -f 
git branch -D temp 

Ce que je cherche est un moyen de créer un nom de branche temporaire qui n'existe pas encore, semblable à mktemp? Y at-il une commande git qui peut créer un nom de branche temporaire?

+1

Je pense que vous allez avoir utilisé un UUID de quelque sorte si vous êtes vraiment paranoïaque des collisions de nom, mais +1 pour une bonne question. –

+1

Je ne pense pas que git ait un moyen de le faire, mais vous pouvez utiliser votre ligne de commande env pour générer une branche temp unique comme cet exemple bash: 'git branche temp_'date +% H-% M-% S- % N'' (notez, c'est censé revenir en arrière autour de la partie 'date ...' –

+0

J'utiliserais la réponse de max630, et je veux juste noter dans un commentaire que vous avez rencontré un modèle commun en informatique : la question de comment nommer les choses Nous voulons souvent un nom unique et mémorable pour une chose, et cela devient très difficile à gérer jusqu'à ce que nous ajoutions * nom des espaces * .Un moyen de garantir un nom unique est d'avoir * non * nom , comme dans la réponse de max630! – torek

Répondre

3

Pour cette tâche spécifique, vous pouvez utiliser sans séparation -b, en utilisant ce (de son manuel):

Après avoir partagé avec succès, un identifiant unique de validation est imprimé à stdout. Cela correspond à la tête de l'arbre nouvellement créé, que vous pouvez manipuler comme vous le souhaitez.

Alors

split_head=`git subtree split --prefix=some_subfolder` 
git push my_remote "$split_head":publication_branch -f 
+0

Je pense qu'il peut y avoir d'autres cas d'utilisation où l'on veut écrire un script avec un nom de branche qui ne provient pas de 'git subtree split', mais il résout très bien mon problème actuel. – pseyfert