问题
This issue is not same as "Bad git config file .git/config", since it failed when using git init
.
It seems there is nothing wrong with /home/mirror/.gitconfig:
[mirror@home php]$ git init
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/mirror/.gitconfig
This is the content of ~/.gitignore:
cat ~/.gitconfig
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
[user]
email = xxxxxx@gmail.com
name = xxxxx
[push]
default = simple
回答1:
Simple was added in git v1.7.11. If your git version is older, this option doesn't exist. Simply remove it from your conf and you'll be able to init repos.
See https://raw.github.com/git/git/master/Documentation/RelNotes/1.7.11.txt
回答2:
This problem keeps coming up now that git 1.8 is out. Luckily the message from git is now very helpful:
warning: push.default is unset; its implicit value is changing in
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)
For example, emacs interface to git (vc) does not understand the argument 'simple', so you are better off using the argument 'matching' for the time being.
回答3:
Try updating config to use matching
instead of simple
for push.default
.
git config --global push.default matching
or
git config push.default matching
回答4:
Note that it can be problematic identifying the issue, considering the problem is at:
- line 7 (
default = simple
), - not line 8 (which here doesn't exist)
Solutions:
- Changing the value at line 7 solves the issue (
git config --global push.default matching
) - removing the config can help too (
git config --global --unset-all push.default
)
But most importantly, starting git 2.2 (Q4 2014), the git config error line number will be accurate.
See commit b3b3f60, by Matthieu Moy (moy):
config.c
: fix accuracy of line number in errors
If a callback returns a negative value to
git_config*()
family, they calldie()
while printing the line number and the file name.
Currently the printed line number is off by one, thus printing the wrong line number.Make
linenr
point to the line we just parsed during the call to callback to get accurate line number in error messages.
回答5:
Use the similar mode current
instead of simple
if you use a version of Git older than 1.7.11.
git config --global push.default current
回答6:
Since I came across this when searching for the Malformed value for push.default: simple
error I got when pushing/pulling, I figured other people may as well.
Here's a related question that provides more information for the passer-by (see my answer at the end for more links, too): GIT: Can't Push (Strange Config Issue)
Note in particular that this error seems to be caused by having an older version of Git somewhere. The best solution is to update to the latest version of Git on all machines.
If this is not possible for you, simply run the following commands (as mentioned by @morefromalan):
git config --global push.default matching
or
git config --global push.default upstream
to get rid of the error. This changes the default behavior of push
operations as described HERE. You may have to to this for pull
as well as push
, but it seems to be working for me just having changed the default push
behavior to upstream
.
Good luck!
来源:https://stackoverflow.com/questions/12294787/git-init-failed-whats-wrong