我要删除并完成此操作的分支很少,我试图在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 ,然后尝试运行上述命令删除任何分支(远程和本地),就可以了。我很困惑为什么它不能从脚本中工作。 :(
答案 0 :(得分:3)
您可能在要导入的文件中将行尾设置为CRLF。当您使用Shell脚本读取文件时,它将以留置权末尾的字符形式读取CR,并将其解释为分支名称的一部分。