2012-05-30 29 views
0

的URL我是愛好項目(託管在GitHub上)我的本地機器上的一些git倉庫,其中有一些是與工作相關的(其他地方託管)。因爲我做錯了(不要問,這是無關緊要的)我定期要rm -rf和再克隆一個回購協議,這也消滅了其.git/config文件。如何設置混帳:用戶名自動根據遠程回購

我想寫一些東西在我的~/.gitconfig這將設置user.email不同於我的工作項目比我的愛好項目。 (請記住,我不能使用.git/config,因爲它會定期被清除。)這可能基於項目名稱,或者基於我正在克隆的遠程回購的URL。

作爲一個單獨的,但相關的問題,我希望能夠指定適用於所有庫,而不是記住每個我克隆一個回購的時間來修改.git/hooks/pre-commit一個全球性的pre-commit鉤子。 (我知道git clone --template

我想我可以寫別名爲git一個bash腳本,將做到這一切的設置時,它注意到我做了git clone。那是唯一的答案嗎?

回答

0

如果你使用任何猛砸擴展當您更改目錄哪些改變你的提示,你可能要掛接到那些設置GIT_AUTHOR_NAMEGIT_COMMITTER_NAME,並根據相關的電子郵件環境變量上存放所你是。

在.bashrc中,你可以做這樣的事情:

__git_ps1() { 
    BRANCH=`git branch 2>/dev/null` 
    if [ "$?" == "0" ]; then 
     # Do something with your prompt 
     if [[ `git remote -v` =~ $WORK_URL_REGEX ]]; then 
     export GIT_AUTHOR_EMAIL="[email protected]" 
     else 
     export GIT_AUTHOR_EMAIL="[email protected]" 
     fi 
    endif 
} 

這顯然是非常粗糙的(我沒有測試它,無論是),但應該給你一個很好的起點。

0

不知道爲什麼你會/有/重新克隆..

git reset --hard && git clean -xdf 

是不夠好,給你一個乾淨的工作目錄。這將保留您的配置更改。

如果你有你的引用一個爛攤子,你可以清理遠程分支機構與

git remote prune 
換句話說

,I/AM /問你爲什麼「做錯了」 :)

+0

我只是想'git reset --hard && git clean -xdf'在本地回購中,它似乎沒有做任何事情如果是'git checkout --'。特別是,它並沒有消除我已經對我的本地回購進行的提交,現在想要擺脫。 ...等等,你的意思是'git reset --hard origin/master'。是的,我認爲這是有效的。 (但你必須每個分支做一次;'git的--reset硬origin'不*不*做什麼,我預期,每一次回購,而不是'室射頻*';!不說這是一個很大的缺點。 ) – Quuxplusone

+0

有2件事你在想。清理你的工作目錄並設置你的分支。 'git reset --hard origin'不明確。你需要說哪個分支。您可以編寫腳本並迭代每個分支,而不必檢查每個分支。 'git push。 origin/master:master -f'會重置分支,即使它沒有簽出。 –

0

如果是我,我可能會換原料rm -rf電話與一個腳本,複製我要保存一些臨時位置的內容,刪除等一應俱全,克隆回購協議,並複製內容回。