如何从git存储库中删除原始


279

基本问题:如何将git repo与克隆源分离?

git branch -a 显示:

* master
  remotes/origin/HEAD -> origin/master

并且我想删除所有有关起源的知识以及相关的修订。

更长的问题:我想获取一个现有的Subversion仓库,并从中制作一些较小的git仓库。每个新的git仓库都应具有相关分支的完整历史记录。我可以使用以下方式将存储库修剪成所需的子树:

git filter-branch --subdirectory-filter path/to/subtree HEAD

但是生成的存储库仍包含origin / master分支下现已丢弃的子树的所有修订版。

我意识到我可以先使用-T标志来git-svn克隆相关的子树。我不确定这是否比以后git filter-branch --subdirectory-filter在git repo副本上运行多个实例化更有效,但是无论如何,我仍然想断开与原始链接。

Answers:


476

非常坦率的:

git remote rm origin

至于filter-branch问题-只需添加--prune-empty到filter branch命令中,它将删除任何在结果存储库中实际上不包含任何更改的修订:

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD

1
谢谢。那是--prune-empty我所思念的。
2012年

2
嗯 得到error: Could not remove config section 'remote.origin'
Dima Lituiev

5

删除现有来源并将新来源添加到您的项目目录

>$ git remote show origin

>$ git remote rm origin

>$ git add .

>$ git commit -m "First commit"

>$ git remote add origin Copied_origin_url

>$ git remote show origin

>$ git push origin master
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.