我正在尝试将历史记录缩减为大型存储库。我做了一个浅层克隆
git clone --depth --no-single-branch 1000 url
然后我用这个脚本检查了所有分支
#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
git branch --track ${branch#remotes/origin/} $branch
done
之后,我改变了原点
git remote add new-origin new-url
git remote rm origin
git remote mv new-origin origin
然后我推动了新的存储库。我的问题是系统不允许将新的存储库推送到浅层克隆。如果我使用以下命令返回我的旧存储库unshallow:
git fetch --unshallow
然后整个回购再次同步。你知道如何在没有unshallow的情况下解开我的克隆吗?
由于
答案 0 :(得分:4)
所以这就是你想要做的。继续克隆整个仓库,或fetch --unshallow
。现在,假设您想要的提交的SHA作为新仓库的根提交是abc123
。执行以下操作:
git checkout --orphan temp abc123
git commit -C abc123 #creates a root commit with the contents and commit message of abc123
git replace abc123 temp #"tricks" git into using the root commit instead of `abc123`
git filter-branch -- --all #rewrites the whole repo
git checkout master
git branch -D temp
然后你可以推送到你的新远程仓库。