bash - 一次创建所有分支时出错
问题描述
我创建了这个 bash 脚本来一次创建所有分支
#!/bin/bash
git fetch -vp
for b in $(git branch -a | grep remotes | grep -v HEAD)
do
branchname=${b##*/}
remote=${b#*/}
command="git branch --track $branchname $remote"
echo "$command"
$($command)
done
但我总是有同样的错误:
fatal: 'master' is not a valid branch name.
如果我在没有脚本的情况下运行相同的命令,则它会成功执行。
我究竟做错了什么 ?
解决方案
我创建了这个脚本,因为我需要将所有分支推送到另一个远程仓库,所以首先我需要从原始存储库创建所有本地分支......
你没有。
您可以使用已有的远程跟踪分支git fetch
。就像origin/master
. git fetch
已经从远程下载了所有提交,Git 中的分支只是提交上的标签。甚至是远程分支。
您可以从所有远程跟踪分支中获取所有远程跟踪分支git branch -r
的列表。获取分支仅用于一次远程使用git ls-remotes --heads <remote>
。格式有点搞笑,所以你必须做一些按摩。
$ git ls-remote --heads $REMOTE | cut -f2 | sed -E "s/refs\/heads/$REMOTE/"
origin/80_method_methods
origin/gh-pages
origin/io-all
origin/issue/217
origin/issue/255
origin/master
origin/rewrite_cmd_wrapper
然后你可以从那些分支推送。
虽然想要将所有分支从一个仓库推送到另一个仓库是很奇怪的。可能有一种更简单的方法可以解决您要解决的任何问题。我怀疑你有一个 XY 问题。
我建议改为询问有关该问题的问题。
推荐阅读
- c# - 在 Azure 函数的单独文件中使用 Sql 连接
- javascript - 开玩笑 - 对象在测试中被重用
- javascript - USSD应用中是否可以获取经纬度
- docker - 在本地 docker run 上使用谷歌默认凭据
- ruby-on-rails - 使用 Ruby on Rails 同时发送数千个请求?
- php - PHP 7.4 fpm-alpine Docker 容器以代码 70 退出
- visual-studio - Azure 未在 Visual Studio SSIS 工具箱中启用
- python - 如何在python屏幕中的特定列之间打印?
- android - Android OssLicensesMenuActivity 在启动时崩溃
- android - 在 Android Java 中将 EditText 的提示移到顶部