将Git repo克隆到新的repo中 - 没有提交历史记录

时间:2014-11-14 18:28:33

标签: git command-line bitbucket

所以我试图了解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上,如果这有所不同,

4 个答案:

答案 0 :(得分:17)

您可以克隆旧存储库,如:

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

然后删除git目录:

rm -rf .git/

现在您创建新的存储库:

git init

答案 1 :(得分:1)

如果您在某处克隆了库存回购中的那些文件,您可以执行以下操作:

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

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

一旦您的新回购索引记录了这些文件,您就可以忘记库存回购,并在新回购中提交这些新文件(没有任何先前的历史记录)。

答案 2 :(得分:1)

如果你已经克隆了TMI repo,你可以重置你的克隆的主人只有那个小提示提交历史记录

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}`

答案 3 :(得分:1)

  1. 您克隆旧存储库,如:

    Collections.diff(collection1, collection2, Foo::equalsWithoutSomeField);

  2. 然后删除git目录:

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

  3. 创建新存储库:

    rm -rf .git

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

    git init

  5. 如果可能,请检查git日志的状态以确认您已记录正确的信息。