我如何将不相关的历史作为一系列新提交推送?
How can I push an unrelated history as a series of new commits?
我有两个独立的远程存储库,RemoteOld 和 RemoteNew。
远程旧
网址:http://RemoteOld
分支机构:
A--B--C--D--E 大师
远程新建
网址:http://RemoteNew
分支机构:
A'--B'大师
我想从 RemoteOld 获取所有提交并将它们添加到 RemoteNew,这样 RemoteNew 看起来像这样:
远程新建
分支机构:
A'--B'--A--B--C--D--E 大师
RemoteNew/master 中的提交 A 应该有效地删除 RemoteNew 中的所有文件,并将它们替换为提交 A 中 RemoteOld/master 的快照中的文件。提交 B-E 在 RemoteOld 和 RemoteNew 之间应该相同.我需要在不使用强制推动的情况下执行此操作。
您必须将 RemoteOld/master 变基到 RemoteNew/master。由于两个分支的名称相同,您需要临时重命名一个分支:
克隆 RemoteOld:
git clone http://RemoteOld
cd FolderCreatedByClone
添加 RemoteNew。您可以删除 RemoteOld,因为它不会再被使用:
git remote add RemoteNew http://RemoteNew
git remote rm origin
将 RemoteOld/master 重命名为其他名称,例如 masterOld。从新的来源获取主分支。然后运行git branch -a
查看所有分支:
git branch -m masterOld
git fetch RemoteNew
git branch -a
输出:
*masterOld
remotes/RemoteNew/master
将 masterOld 变基到 RemoteNew/master:
git rebase --onto master masterOld
此时 masterOld 会变成你想要 RemoteNew/master 的样子,所以只需将 masterOld 合并到 RemoteNew/master.
git checkout master
git merge masterOld
推送 RemoteNew/master。可以删除旧的master分支。
git branch -d masterOld
git push
我有两个独立的远程存储库,RemoteOld 和 RemoteNew。
远程旧
网址:http://RemoteOld
分支机构:
A--B--C--D--E 大师
远程新建
网址:http://RemoteNew
分支机构:
A'--B'大师
我想从 RemoteOld 获取所有提交并将它们添加到 RemoteNew,这样 RemoteNew 看起来像这样:
远程新建
分支机构:
A'--B'--A--B--C--D--E 大师
RemoteNew/master 中的提交 A 应该有效地删除 RemoteNew 中的所有文件,并将它们替换为提交 A 中 RemoteOld/master 的快照中的文件。提交 B-E 在 RemoteOld 和 RemoteNew 之间应该相同.我需要在不使用强制推动的情况下执行此操作。
您必须将 RemoteOld/master 变基到 RemoteNew/master。由于两个分支的名称相同,您需要临时重命名一个分支:
克隆 RemoteOld:
git clone http://RemoteOld cd FolderCreatedByClone
添加 RemoteNew。您可以删除 RemoteOld,因为它不会再被使用:
git remote add RemoteNew http://RemoteNew git remote rm origin
将 RemoteOld/master 重命名为其他名称,例如 masterOld。从新的来源获取主分支。然后运行
git branch -a
查看所有分支:git branch -m masterOld git fetch RemoteNew git branch -a
输出:
*masterOld
remotes/RemoteNew/master
将 masterOld 变基到 RemoteNew/master:
git rebase --onto master masterOld
此时 masterOld 会变成你想要 RemoteNew/master 的样子,所以只需将 masterOld 合并到 RemoteNew/master.
git checkout master git merge masterOld
推送 RemoteNew/master。可以删除旧的master分支。
git branch -d masterOld git push