所以我试图了解 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}`
)
-
您可以克隆旧存储库,如下所示:
git clone git@bitbucket.org:username/repository.git
-
然后删除 git 目录:
rm -rf .git
-
创建新存储库:
git init
-
提交新存储库并将其推送到主源
git push -u origin master
如果可能,请检查 git 日志的状态以验证是否记录了正确的信息。