所以我试图了解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上,如果这有所不同,
答案 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)
您克隆旧存储库,如:
Collections.diff(collection1, collection2, Foo::equalsWithoutSomeField);
然后删除git目录:
git clone git@bitbucket.org:username/repository.git
创建新存储库:
rm -rf .git
提交新存储库并将其推送到主源
git init
如果可能,请检查git日志的状态以确认您已记录正确的信息。