Eliminar la twig local de git en el script se comporta inesperadamente

De acuerdo con mi flujo, estoy presionando los nuevos cambios en mi server new_release branch y luego un script en el server se encarga de aplicar la nueva versión. En el momento en que se ejecuta el script en el server, git repo tiene dos twigs: master y new_release. En un punto determinado, el script ejecuta lo siguiente:

#reset changes on the master branch echo "Resetting master changes..." git reset --hard HEAD if [ $? -ne 0 ]; then echo "Error: Cannot reset master changes" exit 1 fi #remove untracked files echo "Removing untracked new files..." git clean -fd if [ $? -ne 0 ]; then echo "Error: Cannot clean the repository" exit 1 fi #merge changes from new_release into master echo "Merging master with the new_release..." git merge new_release --ff-only if [ $? -ne 0 ]; then echo "Error: Cannot merge changes from new_release into master" exit 1 fi #remove new release branch echo "Deleting the new_release branch..." git branch –d new_release if [ $? -ne 0 ]; then echo "Error: Cannot remove the new_release branch" exit 1 fi 

Sin embargo, una vez que ejecuto el script veo que "git branch -d new_release" en lugar de eliminar la twig local lo deja allí y a su vez crea una nueva twig con el nombre "d".

Además, veo el siguiente resultado con respecto a esa nueva twig "d":

 $ git branch * master new_release d $ git branch -dd error: remote branch 'd' not found. $ git show-branch d fatal: bad sha1 reference d 

¿Qué estoy haciendo mal en mi script? ¿Y también alguien puede ayudarme a recuperarme de ese error y deshacerme de esa twig "d"? Está en mi server de producción.

Primero, +1 por mostrar exactamente lo que hizo, porque no lo habría descubierto si hubiera descrito lo que quería que hiciera sin mostrar el guión real. Buena pregunta escribiendo

¿Copiaste fragments de esa secuencia de commands de la web?

Esto no hace lo que crees que hace:

 git branch –d new_release 

Eso no es -d es –d que es un personaje diferente (es un carácter UTF8 de tres bytes, no un ASCII 45). Así que has creado una nueva twig llamada –d y el personaje divertido del tablero no aparece en su terminal, probablemente porque no está utilizando una configuration regional UTF-8 en la configuration de su terminal, por lo que simplemente aparece como d . La razón por la que no puedes deshacerte de ella nuevamente con git branch -dd es que realmente se llama –d not d .

Entonces, para arreglar el script, cambie el script a -d y debería eliminar las twigs.

Para eliminar la twig no deseada, intente:

 git branch -d –d git push origin :–d 

El primer command lo elimina localmente, el segundo lo borra de forma remota. Esto supone que el nombre de la twig es "-d" y no algo más que haya eliminado ese primer carácter, pero creo que debería funcionar.