我的git存储库混合了本地和远程源

时间:2017-09-24 01:52:01

标签: git

假设我在/ home / myacct /中有一个本地非裸git repo。

不知何故,我处于/home/myacct/whatever/.git/config认为这样的情况:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
[remote "origin"]
    fetch = +refs/*:refs/*
    mirror = true
    url = /home/myacct/whatever

我所有的分支都表示他们正在跟踪分支到远程源,当我真正想要的只是一个带有本地分支的简单本地存储库时。

有没有一种简单的方法可以解决这个问题?

我想我可以猜到这是怎么发生的。我使用git clone备份了我的repo,我可能已经从克隆版本恢复了一个混乱的本地仓库。这可能导致了这种情况。我刚刚发现了这个问题。

1 个答案:

答案 0 :(得分:1)

您的配置存在内部冲突:

core.bare = false

然而:

remote.origin.mirror = true
remote.origin.fetch = +refs/*:refs/*

由于您希望它不是裸机,请单独保留core.bare设置,但完全删除remote.origin.mirror设置并修复remote.origin.fetch设置:

git config --unset remote.origin.mirror
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

这是普通的非裸存储库的设置;此时,您可以运行git fetch origin来创建所有正常的远程跟踪分支。如果您的本地分支机构是远程分支机构的副本,它们将无害,但您可以按常规方式删除它们。如果您有其他想要丢弃的引用,可以使用git update-ref -d删除它们,但这有点棘手,可能无论如何都不用担心。