无法使用脚本删除Git分支

时间:2018-07-26 14:06:51

标签: git git-bash

我要删除并完成此操作的分支很少,我试图在Git Bash(Win Server 2016)上运行Shell脚本。脚本读取包含分支列表的文本图块。这是脚本:

$ cat clean_up.sh
#!/bin/bash
cd $1
branch_list="$2"
git checkout master

while read -r branch
do
    git push origin -d $branch
    git branch -D $branch
done < "$branch_list"


$ cat branch_list.txt
service-integration
display
...
...

$ clean_up.sh repo_name /e/git/branch_list.txt
Already on 'master'
Your branch is up to date with 'origin/master'.
fatal: Invalid refspec ':service-integration?'
error: branch 'service-integration?' not found.
fatal: Invalid refspec ':display?'
error: branch 'display?' not found.
...
...

$ git --version
git version 2.18.0.windows.1

但是,如果我手动cd进入存储库并执行 git checkout branch_name ,然后尝试运行上述命令删除任何分支(远程和本地),就可以了。我很困惑为什么它不能从脚本中工作。 :(

1 个答案:

答案 0 :(得分:3)

您可能在要导入的文件中将行尾设置为CRLF。当您使用Shell脚本读取文件时,它将以留置权末尾的字符形式读取CR,并将其解释为分支名称的一部分。