linux – GIT:无法推送(奇怪的配置问题)

前端之家收集整理的这篇文章主要介绍了linux – GIT:无法推送(奇怪的配置问题)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在全新安装 Linux Mint.

尝试从任何存储库推送时,我收到以下错误

error: Malformed value for push.default: simple
error: Must be one of nothing,matching,tracking or current.
fatal: bad config file line 8 in /home/leng/.gitconfig
fatal: Could not read from remote repository.

这很奇怪,因为我肯定有一个支持简单推送行为的版本.

git –version的输出是git版本1.8.3.2.

〜/ .gitconfig的内容

[user]
    name = My Name
    email = MyEmail@website.com
[color]
    ui = true
[push]
    default = simple

这是令人毛骨悚然的地方.

如果我将行为更改为匹配(或任何,跟踪或当前,为此),然后尝试推送,我得到相同的确切错误消息.怎么可能?是以某种方式缓存配置?我甚至试过重启.我甚至尝试从系统中彻底清除GIT(并删除〜/ .gitconfig)然后重新安装它.

如果我从.gitconfig文件中完全删除[push]部分(或者如果我完全删除文件),那么尝试推送,然后我得到:

Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes,use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now,use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

error: Malformed value for push.default: simple
error: Must be one of nothing,tracking or current.
fatal: bad config file line 8 in /home/leng/.gitconfig
fatal: Could not read from remote repository.

…所以它似乎都承认我没有选择推动行为,但后来也说我选择了一种不受支持的行为.到底是怎么回事?

如果我完全删除〜/ .gitconfig,我甚至会收到错误.

有谁可以帮我解决这个巫术?

谢谢!

编辑:

这是一个请求的.git / config文件

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = ssh://{my remote repo}
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

解决方法

好的,所以我修复了它,但这种方法绝对是巫术.

我试图通过清除GIT,删除配置文件,重新安装GIT,然后创建本地裸存储库,然后克隆它,然后尝试从那里推送来隔离问题.非常像这样:

sudo apt-get purge git-core
rm -f ~/.gitconfig
sudo apt-get install git-core
cd /git
mkdir foo
cd foo
git init --bare
cd /var/www
git clone /git/foo
cd foo
touch blah.txt
git add -A
git config --global user.name "Name"
git config --global user.email "user@email.com"
git commit -m "Blah"
git push

…相同的错误信息,没有变化. (还是一些严重的巫术.)

然后,我删除了一个没有本地源的存储库(它通过SSH连接到它的源)并在删除它后重新克隆了存储库(使用新的git clone ssh:// …命令).

我从克隆命令得到一个错误

remote: Malformed value for push.default: simple
remote: Must be one of nothing,tracking or current.

啊哈!现在它说远程而不是错误.所以远程不支持这种行为. (但这并不能解释为什么错误会继续存在于仅具有本地原点的本地存储库中.)

然后我将SSH连接到远程服务器并将git-core更新到最新版本,重新尝试从我的本地计算机克隆存储库,它工作正常.

现在,我终于可以推动了.疯狂地,这也修复了它,所以我可以从完全本地/ var / www / foo推送到完全本地/ git / foo(本地原始裸存储库). SSH进入这个远程服务器并以某种方式更新它 – WITCHCRAFT – 修复了我本地机器的错误.

为什么到目前为止完全不同的机器的GIT版本完全是本地回购关注…超出我的范围.多么彻底,完全是疯了.

原文链接:https://www.f2er.com/linux/394942.html

猜你在找的Linux相关文章