2014-04-02 21 views
18

我在Windows上使用Git,在公司網絡上我使用基本身份驗證的HTTP代理。出站SSH不起作用,所以我必須通過代理使用HTTPS。在Windows上使用Git,在HTTP代理後面,不在磁盤上存儲代理密碼

我知道如何使用git config http.proxy將設置配置爲http://[username]:[password]@[proxy]:[port]

但是,特別是因爲這是一臺共享機器,我寧願不將我的密碼存儲在我的.gitconfig中。另外,使用git config命令更改我的.gitconfig命令會將我的密碼留在我的bash歷史記錄中,所以即使我在會話結束時記得清除我的.gitconfig,我幾乎肯定會忘記清除我的歷史記錄。

我試着設置http.proxy沒有密碼,枉然希望當我嘗試推/拉時我會得到一個提示詢問我的密碼,但我只得到了407代理身份驗證要求。我在網上找到的所有信息似乎都忽略了將密​​碼保存爲明文.gitconfig或處理NTLM代理的問題。

我很高興在每次需要連接時鍵入我的代理詳細信息 - 目前我可以看到的最佳解決方案是編寫一個包裝腳本,它將提示輸入密碼並在調用時將其設置爲環境變量git正確。這是一個體面的解決方案,並且在腳本中爲單個調用設置環境變量是否存在安全隱患?最好是有沒有內置的設置或現有的工具,我可以使用它?

回答

16

而不是使用git的設置,您還可以使用環境變量(即你可以爲您的會議),如this answer描述:

set http_proxy=http://username:[email protected]:port 
set https_proxy=http://username:[email protected]:port 
set no_proxy=localhost,.my.company 

所以您的包裝腳本可以的,而不是修改.gitconfig (並以純文本形式保留密碼)只需要爲當前會話設置環境變量。

2

VonC的答案並不總能解決問題。我不知道爲什麼,但它可能取決於代理服務器 - 或者它可能是其他一些問題?

這可能有助於用http://替換存儲庫的git://協議。

注:如VonC的答案,你就不得不安裝http(s)_proxy環境變量第一:

set http_proxy=http://username:[email protected]:port 
set https_proxy=http://username:[email protected]:port 

例如,克隆大理石的穩定混帳通常會被克隆這樣(從marble documentation):

混帳克隆-b應用/ 15.12的git://anongit.kde.org/marble〜/大理石/來源

在窗口cmd(假設http_proxy已設置),你便可以擁有使用http[s]://代替:

git clone -b Applications/15.12 http://anongit.kde.org/marble ~/marble/sources 
-1

如果你是代理服務器後面,跟着這一點。

確保端口9418是從你的防火牆rules.Ask網絡管理員

取消設置代理排除在外,如果它已經被設置:

  • 混帳配置--global --unset HTTP .proxy
  • git config --global --unset https.proxy

設置正確的代理服務器:

常見錯誤:

  • 502:從您的網絡無法訪問URL/IP。
  • 407:代理驗證被拒絕。
  • 80:代理服務器沒有正確設置。
7
因爲

混帳2.8.0

git config --global http.proxy http://[user]@proxyhost:port 
git config --global credential.helper wincred 
相關問題