我有一个在Heroku/Github上运行的应用程序,但最近完全从头开始重建-我想保留旧的存储库名称,用新代码替换实时代码的最佳方法是什么?
与Michael的回答略有不同:
git branch -M master old_master
git rm -rf .
git checkout --orphan master
git remote add version2 "/path/to/new_version/.git"
git pull version2 master
(像往常一样,先备份所有内容)
如果你使用的是git1.7.2+,你可以使用git checkout --orphan
:
与
-b
类似,--orphan
创建了一个新的分支,但它没有任何提交就开始了。
在运行"git checkout --orphan newbranch
"之后,您在一个新的分支"newbranch
"上,并且您从这个状态创建的第一个提交将启动一个没有任何祖先的新历史。当创建一个分支的树与原始分支的树没有相似之处时,通过在运行"
checkout --orphan
"后立即运行'git rm -rf .
',取消跟踪并删除来自原始分支的所有工作树文件,可能更容易开始在新分支上工作。
您可以避免在相同的分支上有两个不同的历史记录,并且在一个特定的提交时突然更改。
相反,您保留了几个具有不同历史记录的根分支。但是这意味着重写master
的提交历史,考虑到您只需要以前的历史作为参考和存档,这并不是那么糟糕。
cd old_version
git rm -rf .
git commit -m "Removing the old code"
git remote add version2 "/path/to/new_version/.git"
git pull version2 master
应该完全保留历史记录,并使新版本成为原始版本的HEAD。我建议您在尝试此操作之前先备份repos。