假设我在/ 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,我可能已经从克隆版本恢复了一个混乱的本地仓库。这可能导致了这种情况。我刚刚发现了这个问题。
答案 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
删除它们,但这有点棘手,可能无论如何都不用担心。