2017-05-26 57 views
1

如何才能使一個git的承諾,他們沒有寫入權限的文件夾呢?我最初的嘗試是:讓git的承諾使用sudo

[email protected]:/etc $ sudo git init 
[email protected]:/etc $ sudo git commit -m'init' 

不幸的是,這是行不通的。常規用戶有一個.gitconfig與所需的名稱和電子郵件,我需要在提交git使用這些憑據。 root用戶沒有這樣的git憑證,因此無法進行提交。

+0

你確定嗎?如果我做'sudo git config -l --show-origin',它仍然會顯示我的用戶配置值,而不是root用戶。 – Vampire

+0

@吸血鬼它不這樣做對我來說。需要注意的是'--show-origin'導致錯誤,但'須藤混帳配置-l'顯示根證書(我已經得到ΔλЛ的答案之前最近增加) – user1032531

+0

你,那麼也許應該更新的Git版本。 '--show-origin'從版本2.8.0開始存在。這意味着您的版本已超過1.5年。 – Vampire

回答

3

Git有-c選項,它可以讓你覆蓋.gitconfig設定值(或提供任何新的鍵值對):

-c <name>=<value> 
     Pass a configuration parameter to the command. The value given will override 
     values from configuration files. The <name> is expected in the same format as 
     listed by git config (subkeys separated by dots). 

所以,你可以例如執行:

git -c user.name=user1032531 init 

你可以還可以將用戶的.gitconfig作爲根用戶的gitconfig鏈接,或者授予當前用戶對需要在回購站中的所有文件的訪問權限(考慮使用最後一個選項)。

+0

所以,像'須藤混帳-c user.name = user1032531 -c [email protected] init','須藤GIT中-c user.name = user1032531 -c [email protected]加.','須藤GIT中-c user.name = user1032531 -c [email protected]提交-m'init 「'?謝謝 – user1032531

+0

是的,你可以創建一個別名:'alias git ='git -c user.name = user1032531 -c user.email = user @ stack.com''。 – syntagma

+0

啊,別名更好! – user1032531

2

這裏有3個選擇,要麼你給自己的文件夾權限(即讓任何人都可以使用),你可以改變你試圖提交的目錄到你有燙髮的地方,或者你可以使用sudo編輯sudo編輯文件的編輯git的配置文件。

+0

如何將目錄更改爲提交的目錄? – user1032531

+0

不是它提交的地方,更改您要提交的文件所在的目錄,除非我誤解了您的問題。如果我這樣做,對不起 – MrSanchez

+0

此外,對方的回答比我的好,關注@ΔλЛ回答 – MrSanchez