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 is git version 1.8.3.2.

содержание ~/.gitconfig:

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

вот где становится жутко.

если я изменю поведение matching (или nothing, tracking или current, если на то пошло), то попытка нажать, я получаю то же самое точное сообщение об ошибке. Как это возможно? Это кэширование конфигурации как-то? Я даже попытался перезагрузиться. Я даже попытался полностью очистить GIT от системы (и удалить ~/.gitconfig), а затем переустановить его.

если я удалить [push] раздел полностью из .файл gitconfig (или если я полностью удаляю файл), затем попробуйте нажать, затем я получаю это:

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, matching, tracking or current.
fatal: bad config file line 8 in /home/leng/.gitconfig
fatal: Could not read from remote repository.

...так это, кажется,и признавая, что я не выбрал толкающее поведение, но также говоря, что я выбрал неподдерживаемое поведение. Что здесь происходит?

я даже получаю ошибку, если я удалить ~/.gitconfig полностью.

может кто-нибудь помочь мне с этим колдовством?

спасибо!

EDIT:

здесь запрошено:

[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

3 ответов


хорошо, поэтому я исправил это, но метод абсолютного колдовства.

Я попытался изолировать проблему, очистив 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://... command).

я получил сообщение об ошибке от команды clone:

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

Ах-ха! теперь он говорит:remote вместо error. Таким образом, пульт не поддерживает это поведение. (Это не объясняет, почему ошибка сохраняется только в локальных репозиториях с локальным происхождением.)

поэтому я затем SSH'ED на удаленный сервер и обновил git-core до последней версии, повторно попытался клонировать репозиторий с моей локальной машины, и это сработало.

теперь, я могу, наконец,git push. Безумно,это также исправлено, поэтому я могу git push С полностью местные /var/www/foo до также полностью местные /git/foo (репозиторий локального происхождения). SSH ' ING в этот удаленный сервер и обновление его как-то -колдовство - Исправлена ошибка моей локальной машины ошибка.

почему на земле полностью локальные репозитории заботятся о совершенно другой версии git машины... вне меня. Как совершенно, совершенно безумно.


у меня было такое же сообщение об ошибке на git push.

для меня оказалось, что Git удаленного пользователя был более старой версией (1.7.2.5), и я недавно обновил remote ~/.gitconfig включает:

[push]
  default = simple

было принято решение удалить этот параметр из конфигурации пульта.


так как кажется, что у других людей есть эта проблема, и я нашел решение здесь, я думал, что опубликую решение, которое сработало для меня.

ВКРАТЦЕ: Решение, которое я нашел, было в на этой странице. Очевидно, лучшим решением является обновление до более новой версии Git (если это возможно). Однако для меня это не вариант. С локального компьютера я набрал следующую команду:

git config -–global push.default upstream

это избавилось от Malformed value for push.default: simple ошибка, которую я получал. Я не совсем уверен, что делает.

мой контекст (для сравнения): у меня был пустой (bare) репозиторий на удаленном компьютере, и у меня было несколько репозиториев на пару "местных" рабочих станций. Я!--6--> из удаленного репозитория выполните некоторую работу, а затем push моя работа в удаленном репозитории. Нажатие / вытягивание было выполнено через SSH. Большую часть времени, работая на локальной машине, нажатие / вытягивание приведет к ошибке описанный выше.

короче говоря, до исправления у меня было следующее ~/.gitconfig файл на удаленной машине:

[user]
        name = Foo Bar
        email = FooBarPerson@email.com
[diff]
        external = /Users/foobar/bin/git-diff-cmd.sh
[color]
        diff = auto
        status = auto
        branch = auto
[push]
        default = simple

после ввода вышеуказанной команды my ~/.gitconfig файл на удаленной машине изменен на:

[user]
        name = Foo Bar
        email = FooBarPerson@email.com
[diff]
        external = /Users/foobar/bin/git-diff-cmd.sh
[color]
        diff = auto
        status = auto
        branch = auto
[push]
        default = upstream

версия:

  • удаленной машине (хранилища): 1.9.4
  • мой ноутбук: 1.8.5.2 (Apple Git-48)
  • другой компьютер, на котором я работаю: 1.7.7.4

здесь другой сайт, который может быть полезен некоторым людям: http://www.lorrin.org/blog/2011/10/03/argumentless-git-pull-and-git-push/comment-page-1/