将 Git 存储库克隆到新存储库中 - 没有提交历史记录



所以我试图了解 Git,并且需要(为什么我有这个需求,我不会进入)能够通过命令行从一个存储库中获取文件,并将它们放入一个全新的存储库中,而无需带走所有以前的提交历史记录。

我现在要做的是git init创建一个新的存储库,然后使用克隆或子树从我现有的存储库中获取文件(我还没有完全了解这一点,所以可能是吠错了树),然后添加、提交,然后将这些文件推送到我的新存储库。

git init
--- get the files from stock repo ---
git add .
git commit -m 'Initial commit'
git remote add origin <url of my new repo>
git push -u origin master

我的存储库都在 Bitbucket 上,如果这有什么不同,

您可以像这样克隆旧存储库:

git clone git@bitbucket.org:username/repository.git

然后删除 git 目录:

rm -rf .git/

现在,您创建新的存储库:

git init

如果你在某处克隆了股票仓库中的这些文件,你可以执行以下操作:

cd yourNewRepo
git --work-tree=/path/to/stock/repo add .
git commit -m 'Initial commit'

这意味着:您正在考虑将/path/to/stock/repo中的文件作为新存储库的工作树(仅用于git add步骤)

新存储库

的索引记录了这些文件后,可以忘记股票存储库,并在新存储库中提交这些新文件(没有任何先前历史记录)。

如果您已经克隆了 TMI 存储库,则可以重置克隆的主节点,以便仅使用该克隆的提示提交历史记录

git branch -f master `git commit-tree -m "My new initial commit" origin/master^{tree}`

然后像往常一样,修理遥控器并根据需要推送历史记录。

编辑:如果你已经签出了母版,git branch不想重写参考,但你根本没有触及内容,所以你可以绕过所有瓷器的把手,只是这样做

git update-ref -m "Truncating history" refs/heads/master 
        `git commit-tree -m "My new initial commit" origin/master^{tree}`

  1. 您可以克隆旧存储库,如下所示:

    git clone git@bitbucket.org:username/repository.git

  2. 然后删除 git 目录:

    rm -rf .git

  3. 创建新存储库:

    git init

  4. 提交新存储库并将其推送到主源

    git push -u origin master

如果可能,请检查 git 日志的状态以验证是否记录了正确的信息。

最新更新