问题
I was able to create a snapshot for my project in XCode 4.5.1. But now the same project just keeps telling me that:
Unable to create a snapshot
error: Malformed value for push.default: simple
error: Must be one of nothing, matching, tracking or current.
fatal: bad config file line 21 in /Users/oppih/.gitconfig
I remember that when I pushed another project onto github ealier today, I was prompted with this warning:
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
So I googled it and find this question not so long ago: 13148066, and got it settled, I use git config --global push.default simple
since "This is a more intuitive behavior, which is why the default is getting changed to this."
I think my problem with XCode must have a connection with this git option update.
Back to XCode, I did not choose to setup a git repo in my XCode project, but used the snapshot as a way to backup my code. I think there's some trick with git in XCode's snapshot, I cannot figure it out. Now I wonder if anyone can tell me how to re-enable the snapshot in XCode (while not to change the .gitconfig [push.default] option)?
回答1:
I managed to solve my own problem. See it in Question 10449374 for the related details.
The main problem in this case is that: Xcode just install (along with the Command Line Tools) its own version of git in /Applications/Xcode.app/Contents/Developer/usr/bin .
And somehow, Xcode also hard coded it would use its own version of tools (such as git). And (I don't know why) Xcode's "snapshot" feature has some integration with git.
So when I:
- installed a new version of git via homebrew,
- update the new push.default option in ~/.gitconfig ,
- want to create a snapshot in an Xcode project
Then I will encounter the problem I described above.
Here's my solution:
change into the Xcode directory:
cd /Applications/Xcode.app/Contents/Developer/usr/bin
rename the Xcode's git like this:
sudo mv ./git ./git-xcode-usr-bin
link my own git which is installed through homebrew:
sudo ln -s /usr/local/bin/git ./git
And I did the same thing with /usr/bin/git
sudo mv /usr/bin/git /usr/bin/git-xcode-usr-bin
sudo ln -s /usr/local/bin/git /usr/bin/git
This will acctually link /usr/local/Cellar/git/1.8.0/bin/git
(because I'm use git 1.8.0 at the present)
It's a little tricky, and I have to update the link if I upgrade the homebrewed git in the future. And it really works fine with Xcode's snapshot and the new push.default option.
回答2:
Well, you may try specifying another .gitconfig file for Xcode by method provided in this answer: How can I specify custom global gitconfig path?.
For example, after created ~/.xcode_home as the new $HOME for Xcode app, you can use the following shell script to launch Xcode:
HOME=$HOME/.xcode_home open "$(xcode-select --print-path)/../.."
It is not quite user friendly though… Any way, you may want to check this: Setting environment variables in OS X?. But be warned, overwriting $HOME globally might not be a good idea.
来源:https://stackoverflow.com/questions/13177203/unable-to-create-a-snapshot-in-xcode-4-5-1-after-update-the-gitconfig-option