2014-01-16 2 views
19

Ich muss eine Git-Verzweigung mit Shell-Skript erstellen, aber da die Verzweigung vorhanden sein kann, muss ich mir dessen bewusst sein. Derzeit verwende ich:Shell-Skript, um zu überprüfen, ob der angegebene Git-Zweig existiert?

if [ `git branch | grep $branch_name` ] 
then 
    echo "Branch named $branch_name already exists" 
else 
    echo "Branch named $branch_name does not exist" 
fi 

Aber das Problem ist der grep Befehl Zweignamen findet, ohne die genauen Namen übereinstimmen, das heißt, wenn ich grep name dann mit einem Namen verzweigen branch-name angepasst werden würde.

Gibt es einen besseren Weg, dies zu tun?

Danke!

+0

Bereits beantwortet? http://stackoverflow.com/questions/5167957/is-there-a-better-way-to-find-out-if-a-local-git-branch-exists – grebneke

+0

Sie können Grep zwingen, um die gesamte Linie zu entsprechen: Git Zweig | grep -E "^ \ $ branch_name $" ... oder etwas .. – stellarhopper

Antwort

34

Man konnte immer Wortgrenzen um den Namen wie \< und \>, sondern lassen Git tun, um die Arbeit für Sie verwenden:

if [ `git branch --list $branch_name `] 
then 
    echo "Branch name $branch_name already exists." 
fi 
+3

wenn ["' git branch --list $ {BRANCHNAME} '"] – JeffCharter

+1

@JeffCharter wird das nicht immer als wahr gewertet? –

+1

Es war ein automatisches Formatierungsproblem (Backtic wurde in Codemarker konvertiert) 'if [" \ 'git branch --list master \' "]; dann echo hallo; Wenn die Antwort tatsächlich immer wahr ist ... ist es im Grunde das Gleiche wie mein Fehlbuchstab. – JeffCharter

4

I Heath Lösung mögen, aber wenn Sie wollen immer noch Rohr grep, können Sie regex Anker, ähnlich die folgenden, zu verhindern verwenden einen Teil passend:

if [ `git branch | egrep "^[[:space:]]+${branchname}$"` ] 
then 
    echo "Branch exists" 
fi 

Beachten Sie, dass die space Zeichenklasse verwenden müssen, weil die Ausgabe des Befehls Einbuchtungen.

+2

Wenn Sie auf dem Zweig sind, dann gibt es einen Stern am Anfang. Dies funktioniert besser für eine richtige Übereinstimmung 'git branch | egrep "^ \ *? [[: space:]] + $ {BRANCH} $" ' – designermonkey

Verwandte Themen