我必须经常更新 Github 上 git 存储库的镜像。同时,我在foo-[1-9]+[0-9]*
本地镜像上按照特定模式(比如说)创建了分支。这些分支是在给定标签处创建的,并包含内部补丁。
我想经常更新我的镜像并获得 Github 存储库的精确副本 + 包含内部补丁的分支。
在我创建镜像时,我们假设 Github 存储库的状态如下:
C---D branchA
/
A---B---E---F master
\
G---H branchB
v0.1 --> F
我们使用标签v0.1的软件,并且出于某些原因我们创建了补丁来修复构建或软件。本地存储库的状态现在是:
C---D branchA
/
A---B---E---F master
\ \
\ I---J foo-1
\
G---H branchB
v0.1 --> F
foo-1 has been created and host patches for v0.1
与此同时,新的提交、分支出现在 Github 上,开发分支被合并然后删除。Github 存储库的状态现在是:
J'---K branchC
/
A---B---E---F---C---D---I' master
\
G---H branchB
v0.1 --> F
v0.2 --> D
branchB has been rebased
branchC has been created
branchA has been merged into master and then deleted
起初我克隆了镜像。
git clone --mirror ${url_local_repo}
然后我将 Github 的存储库添加为远程。
git remote add --mirror=fetch github ${url_github_repo}
最后,我从 github 获取更改。
git fetch --tags --prune github
From ${url_github_repo}
x [deleted] (none) -> branchA
x [deleted] (none) -> foo-1
* [new branch] branchC -> branchC
E..F branchB -> branchB
F..I' master -> master
foo-1
已删除,但我想保留它。我尝试使用 glob 筛选提取,但它不起作用。
git fetch --dry-run --prune github '+refs/heads/*:refs/heads/[!f][!o][!o]*'
fatal: Invalid refspec '+refs/heads/*:refs/heads/[!f][!o][!o]*'
你有什么建议?