我有一个在Heroku / Github上运行的应用程序,但最近从头开始完全重建它 - 我想保留旧的存储库名称,用新代码替换实时代码的最佳方法是什么?
答案 0 :(得分:5)
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
”,并且您从此状态创建的第一个提交将启动一个没有任何祖先的新历史记录。当创建树与原始分支的树没有相似性的分支时,通过运行''去跟踪并删除来自原始分支的所有工作树文件,可能更容易开始处理新分支。运行“
git rm -rf .
”后立即checkout --orphan
。
您避免在相同分支上有两个不同的历史记录,并在一个特定提交时突然发生更改。
相反,你会在其中保留几个具有不同历史记录的根分支
但这意味着重写master
提交的历史记录,考虑到您只需要以前的历史记录以供参考和存档,这并不是那么糟糕。
答案 1 :(得分:3)
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。