我有一个运行了一段时间的 git 项目,现在我想扔掉旧的历史,比如从开始到两年前。 throw away 我的意思是用一个单一的提交替换这段时间内的许多提交。
我检查了 git rebase -i
但这并没有删除包含来自 git 的所有提交的其他(完整)历史记录。
这里是图形表示(d 是变更集):
(base) -> d1 -> d2 -> d3 -> (HEAD)
我想要的是:
(base) -> d1,d2 -> d3 -> (HEAD)
这怎么可能? 谢谢。
编辑
我得到它的工作
git rebase -i cd1e8c9
cd1e8c9 是压缩的起始版本(基础)。然后我使用 fixup 将修订融合在一起。谢谢。
最佳答案
如果您真的不关心整个历史,另一种简单的方法是获取当前分支并基于此创建一个孤立分支。然后将所有文件添加到该分支并进行一次初始提交(这将丢失所有历史记录)。然后可以将其推送到远程存储库。
假设您在要展平的分支中。首先检查是否干净:
git status -s
上面的命令不应该输出任何东西。
现在创建一个孤立分支:
git checkout --orphan flattened
添加所有文件
git add .
创建单个提交
git commit -m "Initial flattened commit"
检查是否一切正常并推送到远程(例如):
git status -s
# (original_branch being the branch with the full history)
git diff original_branch..flattened
# (assuming your remote is origin and the branch to overide is master)
# Think twice before doing this!
git push origin +flattened:master
关于git - 在 Git 中展平旧历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4506758/