如何在没有完整历史记录的情况下克隆种子/启动项目?

问题描述 投票:0回答:3

请注意,使用

--depth=1
参数会阻止将项目推送到新存储库

git git-clone shallow-clone
3个回答
88
投票

你可以做一个

git clone <git_url>

从文件夹中删除 .git 存储库。这将删除您所有的历史记录。

你可以做一个

git init 

这将为您创建一个全新的 git 项目。

这可能不是最好的方法。但这会起作用。希望有帮助。


48
投票

只要您认为完全丢失历史记录不是问题,Ajay 建议的方法就完全有效。但如果你想保留浅层克隆的历史,我有不同的建议。


浅克隆通过使用所谓的“移植点”来假装拥有完整的历史记录来伪造“第一个”提交的父级。如果我们假设我们有完整的历史记录,我们可以重新表述这个问题:如何在特定修订之前丢弃历史记录? 这意味着我们可以使用嫁接点和

git filter-branch

的组合(如链接问题中的建议)。但是您必须注意,这将重写您的完整历史记录,使新历史记录与我们最初克隆的远程设备不兼容。因此,我们应该从我们的存储库中删除旧的遥控器。
git remote remove <old-remote-name>

现在我们可以开始重写了。假设我们想让当前的 
master

提交存储库的新根。 git rev-parse --verify master >> .git/info/grafts git filter-branch -- --all

这将重写我们存储库的完整历史记录,并将当前的主提交作为新的根。您可以通过删除 
refs/original

中的“备份”引用来完成重写。此外,您现在可以删除

.git/shallow
文件。
完成此操作后,您应该能够将现在的

未嫁接

历史记录推送到新遥控器中。


1
投票

mkdir -p /tmp/git-copy cd /tmp/git-copy # create another copy of your repository git clone file:///path/to/cloned/repo cd repo git rebase -i (first-commit) # in vim: # :2,$s/^pick/squash # :w # Now wait, it will take a while... git push --mirror [email protected]:username/new-repo.git

我刚刚在
这个存储库

上尝试过。似乎有效 - 没有历史记录,所有子模块都完好无损。

© www.soinside.com 2019 - 2024. All rights reserved.