2013-04-17 43 views
29

我需要禁用憑據幫手OS X:git credential-osxkeychain禁用混帳憑據osxkeychain

它被禁用在全局配置文件,並在當地的一個,其實它有從未啓用本。不過,它會記住我的github登錄信息。
我在筆記本電腦上,所以我不想自動無密碼地訪問我的回購。
使用ssh密鑰。這是一臺新電腦,整個系統設置仍在進行中。
現在我使用的https回購裁判和證書助手一直在踢

這是我的conf文件:


git config --edit =>

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
    precomposeunicode = false 
[remote "origin"] 
    url = https://github.com/user/repo.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
[branch "develop"] 
    remote = origin 
    merge = refs/heads/develop 
[branch "deploy"] 
    remote = origin 
    merge = refs/heads/deploy 

git config --global --edit =>

[user] 
    email = **************** 
    name = tom 
[color] 
    ui = true 
[core] 
    editor = subl -w 
[github] 
    user = tompave 
[merge] 
    conflictstyle = diff3 
[push] 
    default = simple 

另外,運行git config --global credential.helper什麼也沒有返回(沒錯)。

但是,運行git config credential.helper返回osxkeychain

這怎麼可能?我無法在本地配置文件中看到它,它在哪裏設置?

我試圖在本地設置它,看看會發生什麼,它確實出現在repodir/.git/config。然後我刪除了條目......但幫手仍然在這裏並且很活躍。

我可以清楚地看到它在OS X鑰匙串中的輸入。
我可以刪除它,然後git將再次要求輸入密碼...但只要我輸入密碼(例如,對於git fetch),鑰匙串中的輸入被恢復。

回答

57

爲了幫助追蹤設置,我會嘗試使用:

git config --local credential.helper 
git config --global credential.helper 
git config --system credential.helper 

第一個檢查本地回購的配置,第二個是你的~/.gitconfig,第三個是基於安裝在那裏的git 。根據其中一回來顯示證書助手,你可以嘗試使用等效--unset選項:如果您沒有適當的權限

git config --local --unset credential.helper 
git config --global --unset credential.helper 
git config --system --unset credential.helper 

最後一個可能無法正常工作。因此,您可能需要運行sudo下的最後一個才能正常工作。 FWIW,您可能已經爲Mac OS X的預建git圖像安裝了。如果您購買了/usr/local/git/etc/gitconfig,您會發現它確實爲您設置了憑證助手。所以上面的最後一條命令可以幫助解決這個問題。

+0

聽起來類似於我的答案,但更實際的comamnds,所以+1。 – VonC

+0

謝謝。錯誤地解釋了輸出,因爲我認爲'git config'認爲本地選項...並且不知道'--system'。現在命令'git config --system --edit'清楚地顯示了osxkeychain選項,我可以取消它的設置,從輸出來看,它看起來像'git config --edit'被默認啓用'--local'選項解釋。 – tompave

+0

一個光禿禿的'git config'不會*看*所有,但是當你改變一個時,一個純粹的'git config'將會用於本地的git config。當你想編輯除本地git以外的東西時,你確實需要'--global'或'--system'之一config。 – jszakmeister

1

配置本身(git config --unset credential.helper)是不夠的。
確保殺掉任何git-credential-osxkeychain進程(如described here),或者查看重新啓動後問題是否仍然存在。

另外,當使用GitHub for Mac時,請檢查是否存在該工具內部使用的配置。
請記住,僅git config將檢查系統,全局和本地配置文件。

注意:使用git 2.9,您可以簡單地將credential.helper設置爲「空字符串」以禁用它:請參閱「How do I disable git's credential helper for a single repository?」。

+0

我想你錯過了VonC的東西。你的鏈接不會去任何地方。 :-( – jszakmeister

+0

@jszakmeister鏈接固定 – VonC

+0

謝謝,我的壞,我認爲'git config'會檢查本地的一個... – tompave

16

其他答案是非常有幫助的。 credential.helper沒有在任何列表中顯示(指定--local,--global等),它總是顯示在'git config -l'上。使用--show-origin命令顯示它來自OS X特定文件。

$ git config --show-origin --get credential.helper 
file:/Applications/Xcode.app/Contents/Developer/usr/share/git-core/gitconfig osxkeychain 
+0

感謝您爲'--show-origin'。我必須使用'git config --list --show-origin'來查看osxkeychain助手被引用的位置並更改該配置。 – luk2302

+0

那麼如何禁用那裏的鑰匙串呢? –

+1

@ A.Lau使用'sudo vi WhatEverLocationIsShownAfter「file:」'並刪除設置憑證助手的行。 – luk2302