如何从 git 存储库中删除源

Posted

技术标签:

【中文标题】如何从 git 存储库中删除源【英文标题】:How to remove origin from git repository 【发布时间】:2012-03-02 17:50:53 【问题描述】:

基本问题:如何将 git repo 与其克隆的来源解除关联?

git branch -a 显示:

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

我想删除所有原始知识以及相关的修订。

更长的问题:我想利用现有的颠覆回购并从中制作一些较小的 git 回购。每个新的 git 存储库都应该只包含相关分支的完整历史记录。我可以使用以下命令将 repo 修剪为所需的子树:

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

但生成的 repo 仍然包含 origin/master 分支下现在丢弃的子树的所有修订。

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

【问题讨论】:

【参考方案1】:

相当简单:

git remote rm origin

至于filter-branch 问题 - 只需将--prune-empty 添加到您的过滤器分支命令中,它就会删除实际上不包含您生成的存储库中任何更改的任何修订:

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

【讨论】:

嗯。获取error: Could not remove config section 'remote.origin'【参考方案2】:

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

>$ 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

【讨论】:

【参考方案3】:

感谢 mandeep 提供的 git remote show origin 命令。

在我的情况下 git branch -r 将继续在本地存储库上显示 origin/master(在我在远程和本地重命名 master 之后)

这解决了它:

E:\SourceCode\PascalCoinGit\PascalCoin>git remote prune origin
Pruning origin
URL: https://github.com/SkybuckFlying/PascalCoin
 * [pruned] origin/master

E:\SourceCode\PascalCoinGit\PascalCoin>

命令:

git remote show origin

(以前看过但完全忘记了)

结果:

E:\SourceCode\PascalCoinGit\PascalCoin>git remote show origin
* remote origin
  Fetch URL: https://github.com/SkybuckFlying/PascalCoin
  Push  URL: https://github.com/SkybuckFlying/PascalCoin
  HEAD branch: PascalCoinMaster
  Remote branches:
    GUIExperimentalBugFixes1       tracked
    GUIExperimentalBugFixes2       tracked
    GUIExperimentalBugFixes3       tracked
    GUIExperimentalBugFixes4       tracked
    GUIExperimentalBugFixes5       tracked
    MergeTest                      tracked
    PIP-0026Windows7Implementation tracked
    PascalCoinMaster               tracked
    SkybuckMaster                  tracked
    TestPascalCoinMaster           tracked
    refs/remotes/origin/master     stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    GUIExperimentalBugFixes1       merges with remote GUIExperimentalBugFixes1
    GUIExperimentalBugFixes2       merges with remote GUIExperimentalBugFixes2
    GUIExperimentalBugFixes4       merges with remote GUIExperimentalBugFixes4
    GUIExperimentalBugFixes5       merges with remote GUIExperimentalBugFixes5
    MergeTest                      merges with remote MergeTest
    PIP-0026Windows7Implementation merges with remote PIP-0026Windows7Implementation
    SkybuckMaster                  merges with remote SkybuckMaster
  Local refs configured for 'git push':
    GUIExperimentalBugFixes1       pushes to GUIExperimentalBugFixes1       (up to date)
    GUIExperimentalBugFixes2       pushes to GUIExperimentalBugFixes2       (up to date)
    GUIExperimentalBugFixes3       pushes to GUIExperimentalBugFixes3       (up to date)
    GUIExperimentalBugFixes4       pushes to GUIExperimentalBugFixes4       (up to date)
    GUIExperimentalBugFixes5       pushes to GUIExperimentalBugFixes5       (up to date)
    MergeTest                      pushes to MergeTest                      (up to date)
    PIP-0026Windows7Implementation pushes to PIP-0026Windows7Implementation (fast-forwardable)
    PascalCoinMaster               pushes to PascalCoinMaster               (up to date)
    SkybuckMaster                  pushes to SkybuckMaster                  (up to date)
    TestPascalCoinMaster           pushes to TestPascalCoinMaster           (up to date)

E:\SourceCode\PascalCoinGit\PascalCoin>

是的,git branch -r 现在显示它已经消失了!

(我的)案子解决了! =D

再见, 斯凯巴克。

【讨论】:

以上是关于如何从 git 存储库中删除源的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Git 存储库中删除文件?

如何从 Git 存储库中删除文件?

如何从 git bash 屏幕中删除文件并从存储库中删除该文件? [复制]

如何从Git存储库中删除不想要的信息

如何仅删除远程存储库中的文件? [复制]

如何在 Git 存储库中删除多个已删除的文件