无法使用脚本删除 Git 个分支
Unable to delete Git branches using script
我有几个分支要删除并完成此操作,我正在尝试 运行 shell Git Bash 上的脚本(Win Server 2016)。该脚本读取包含分支列表的文本块。这是脚本:
$ cat clean_up.sh
#!/bin/bash
cd
branch_list=""
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 结帐 branch_name,然后尝试 运行使用上面的命令删除任何分支(远程和本地),它工作得很好。我完全不明白为什么它在脚本中不起作用。 :(
您可能在要导入的文件中将行结尾设置为 CRLF。当您在 shell 脚本中读取文件时,它会将 CR 读取为留置权末尾的字符,并将其解释为分支名称的一部分。
我有几个分支要删除并完成此操作,我正在尝试 运行 shell Git Bash 上的脚本(Win Server 2016)。该脚本读取包含分支列表的文本块。这是脚本:
$ cat clean_up.sh
#!/bin/bash
cd
branch_list=""
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 结帐 branch_name,然后尝试 运行使用上面的命令删除任何分支(远程和本地),它工作得很好。我完全不明白为什么它在脚本中不起作用。 :(
您可能在要导入的文件中将行结尾设置为 CRLF。当您在 shell 脚本中读取文件时,它会将 CR 读取为留置权末尾的字符,并将其解释为分支名称的一部分。