我有一个指向远程的存储库,现在我创建了一个新的远程,例如原始 url 已使用更改git remote set-url origin myNewRemote
。然后我做了一个git push
但由于推送仅推送本地分支,我仍然需要将远程分支推送到新的远程。我知道这不是实践,但我现在想做的就是告诉新的远程“嘿,这是你应该了解的远程分支”,然后我将通过正常的 Git 工作流程,在其中创建本地分支/跟踪并将它们推送到远程,但现在我正在过渡,以恢复到搬到新远程之前的状态。
我记得曾经做过这样的事情:
git push origin refs/remotes/*:refs/heads/*
但它们创建错误,所以我将 origin 附加到分支名称中,所以我很确定上面的命令(X:Y 部分)并不完全正确,有人可以帮助提供正确的命令,这样我就不必创建所有命令首先在本地分支机构?
donnib
你记得什么:
git push origin refs/remotes/*:refs/heads/*
非常接近。由于无论是旧的还是新的remote
名字是origin
,远程跟踪分支 - 下的那些名称refs/remotes/
——具体是在refs/remotes/origin/
子名称空间,并且您想丢弃多余的origin/
以及。因此你想要的是:
git push origin "refs/remotes/origin/*:refs/heads/*"
(我在这里添加了引号作为对贝壳的保护装置,贝壳喜欢咀嚼*
早餐的人物。 :-) 更严重的是,shell 规则用于通配字符,例如*
and ?
and [a-z]
等等——有点复杂,更明智的 shell 像sh
and bash
将它们原封不动地传递下去if它们不匹配任何文件,但是当您实际上有一个名为refs/remotes/origin/foo:refs/heads/bar
例如。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)