我有一个GitHub仓库,我想复制并推送到另一个组织下的新远程URL。我想保留尽可能多的历史记录,例如分支和提交,但我不确定如何做到这一点。我的本地副本没有所有分支。
我见过类似的问题,但我想确认一下,因为这有点冒险。
步骤是这样的吗?
git fetch origin
git branch -a
git remote add new-origin git@github.com:user/repo.git
git push --all new-origin
git push --tags new-origin
git remote -v
git remote rm origin
git remote rename new-origin origin
答案 0 :(得分:0)
如果您计划保留两个端点,则可以执行git remote set-url --add origin https://new.url/path/to/repo.git
这样,当您按下时,您将同时推送到两个端点。然而拉动仅来自一个来源。如果拉动是一个问题,那么我建议使用新的遥控器。您的步骤与您之前提到的步骤类似:
要将当前历史记录推送到与当前端点完全无关的新端点,请执行以下步骤。请注意,这会将本地存储库与当前端点断开连接,并将其连接到新端点。
1)git pull --all
2)git pull -t
或git pull --tags
3)git remote set-url origin git@github.com:user/repo.git
4)git push --all
5)git push --tags
如果出现任何问题,您需要做的就是从原始repo.git克隆原点当前设置为
答案 1 :(得分:0)
是的,你的步骤是正确的。但要注意以下几点:
第一步,您可以使用git pull
代替(拉取功能是获取+合并)。
完成上述步骤后,您将只找到第一个回购的分支(而不是新的URL)。使用git branch –a
,您将找到第一个回购的所有分支和远程新的URL回购。
您需要创建本地分支以相应地跟踪远程。例如git checkout –b branch_name1 origin/branch_name1
,git checkout –b branch_name2 origin/branch_name2
等
现在您会发现本地副本包含第一个repo的分支和新URL的分支,并且保留了提交历史记录。