"git init" failed, what's wrong?

14,531

Solution 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 Documentation

Solution 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.

Solution 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

Solution 4

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

Solution 5

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 call die() 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.

Share:
14,531
hugemeow
Author by

hugemeow

http://serverfault.com/search

Updated on June 14, 2022

Comments

  • hugemeow
    hugemeow about 2 years

    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 = [email protected]
            name = xxxxx
    [push]
            default = simple
    
  • Nubtacular
    Nubtacular about 11 years
    Had this issue, it told me which options I had to choose from (either nothing, matching, tracking, or current), but didn't suggest which one to use. I used current and all seems to be fine.
  • odigity
    odigity about 10 years
    I ran into this because I'm using Ubuntu 13.10 on my desktop, but running a Vagrant VM using the default precise64.box (12.04), and apparently the newest git package for 12.04 is 1.7.9.5.
  • Kumar Saurabh
    Kumar Saurabh over 6 years
    this was a life saver.