Git:将所有分支推送到新的远程
作者:软件架构师 Keith Dechant
这是你们中的一些人在使用 Git 时可能遇到的场景
存储库。你有一个 Git 存储库的工作副本,比如来自旧的
服务器。但是您只有工作副本,而来源不是
无障碍。所以你不能只分叉它。但你想推整个
repo 和所有分支历史记录到你的新遥控器。
如果您的工作副本包含跟踪分支,这是可能的
从旧遥控器(origin/branch1、origin/branch1 等)。如果你这样做,
你有完整的 repo 和历史记录。
但是,在我的例子中,有几十个分支,部分或全部
他们我从来没有在本地检查过。推动他们似乎是一个
举重。那么,如何进行呢?
我确定了两个选项:
选项 1:检查每个分支并推送我可以这样做,我可以
甚至编写一个 Bash 脚本来提供帮助。但是,这样做会改变我的
每次结帐的工作文件,并将创建一个本地分支
每个远程跟踪分支。这会很慢
回购。
选项 2:在不更改工作副本的情况下推送 还有第二个
替代方案,不需要检查每个分支,不需要
在工作副本中创建无关的分支,甚至不会
修改工作副本中的文件。
如果您的旧遥控器被称为“oldremote”并且您的
新遥控器称为“newremote”,您可以只推送遥控器
使用此命令跟踪分支:
git push newremote refs/remotes/oldremote/*:refs/heads/*
在一些
在这种情况下,也可以只推送分支的一个子集。如果
分支名称用斜杠命名(例如,
oldremote/features/branch3、oldremote/features/branch4 等),您可以
仅推送名称以开头的远程跟踪分支
“oldremote/功能”:
git push newremote refs/remotes/oldremote/features/*:refs/heads/features/*
无论你
推送所有分支或只是其中一些分支,Git 将执行
整个操作,无需创建任何新的本地分支,也无需
更改您的工作文件。每个跟踪分支
匹配您的模式将被推送到新的遥控器。
有关该主题的更多信息,请查看 Stack 上的此线程
溢出。
发布日期:2017 年 10 月 9 日