2013-05-02 61 views
13

如何強制git-client僅使用控制檯/終端。 當我ssh到我的遠程/無頭Linux的計算機,並嘗試運行:在無頭linux服務器上使用git客戶端

混帳克隆https://[email protected]/xxx/xxx.git

git的抱怨,並給了我這個錯誤: (GNOME-SSH-askpass:2769):GTK的警告* *:無法打開顯示:

我不想使用圖形界面和ssh -X。 我只想配置git-client只使用終端。

即時通訊使用CentOs和得到了與yum安裝git的git客戶端。

+0

[「git push」的可能重複會產生Gtk-WARNING](http://stackoverflow.com/questions/16077971/git-push-produces-gtk-warning) – Alberto 2016-02-12 10:20:26

回答

3

您需要將您的ssh-askpass命令更改爲不使用UI的東西(atm它是gnome-ssh-askpass,如從錯誤消息中看到的那樣)。

26

您可以通過取消SSH_ASKPASS環境變量在當前會話中禁用gnome-ssh-askpass

unset SSH_ASKPASS 

你也許可以用一個條件檢查用戶是否在使用SSH登錄加在你.bashrc.profile。喜歡的東西:

[ -n "$SSH_CONNECTION" ] && unset SSH_ASKPASS 

BTW,someone else也抱怨調用SSH_ASKPASS程序的Git的行爲盲目而不確定,如果它是一個GUI會話與否。如果您閱讀完整線程,則會解釋使用DISPLAY環境變量檢測此問題是不可能的。也沒有提及該補丁是否被接受。

+0

您能詳細闡述一下[-n 「$ SSH_CONNECTION」]?方括號是什麼意思?我的bash外殼似乎不接受這些。 – 2014-12-18 23:10:54

+0

@WeishiZeng - 方括號表示測試表達式。該命令檢查當前shell是否在SSH會話中運行,如果是,則取消設置SSH_ASKPASS環境變量。有關測試表達式的更多信息,請訪問:http://linux.die.net/man/1/test – Tuxdude 2014-12-19 00:46:31

2

導出

GIT_ASKPASS=true 

將禁止任何提示。

使用Git 2.3開始,你可以使用

GIT_TERMINAL_PROMPT=0 

或寫一個簡短的腳本,它echo quit=1並將其用於core.askpass

+0

我使用HTTPS而非SSH。在「git pull」之前,經過多次研究「導出GIT_ASKPASS = true」是唯一對我有用的東西。升級到GIT 1.8可能會有效,但這不適合我。 – user1097111 2017-02-07 09:38:29

5

基於東武的回答,我結束了這在我~/.bashrc - 我想,如果你是使用Git從ssh會話,你會希望它在~/.bash_profile

export GIT_ASKPASS= 

這似乎防止煩人gnome-ssh-askpass對話,使用CLI密碼提示。

未設置SSH_ASKPASS,這是最常見的建議,大概可能有一些意想不到的副作用。