我正在使用兩個不同的Git存儲庫(即github和存儲),併爲每個我想要使用不同的電子郵件地址。我知道我可以使用git config
,但我不想每次創建新工作區時都要記住這一點。所以,我想創建一個在命令行上設置電子郵件地址的別名。這可以做到嗎?如何在命令行中指定git電子郵件地址?
我想我可以創建一個腳本(而不是別名),將git config
,但有沒有更簡單的方法來做到這一點?
我正在使用兩個不同的Git存儲庫(即github和存儲),併爲每個我想要使用不同的電子郵件地址。我知道我可以使用git config
,但我不想每次創建新工作區時都要記住這一點。所以,我想創建一個在命令行上設置電子郵件地址的別名。這可以做到嗎?如何在命令行中指定git電子郵件地址?
我想我可以創建一個腳本(而不是別名),將git config
,但有沒有更簡單的方法來做到這一點?
您可以使用以下(bash的風格)功能:
workgit() {
GIT_COMMITTER_NAME="Work Name" GIT_COMMITTER_EMAIL="[email protected]" GIT_AUTHOR_NAME="Work Name" GIT_AUTHOR_EMAIL="[email protected]" git "[email protected]"
}
homegit() {
GIT_COMMITTER_NAME="Home Name" GIT_COMMITTER_EMAIL="[email protected]" GIT_AUTHOR_NAME="Home Name" GIT_AUTHOR_EMAIL="[email protected]" git "[email protected]"
}
然後,你可以調用workgit
或homegit
代替git
強制給定的用戶名/電子郵件。
這不是一個理想的解決方案(因爲有時你只是想成爲提交者而不是作者,比如當你重新綁定或者修改補丁時),但只要你意識到這一點,你可以解決它。
這個問題的方法非常棒。我很喜歡! –
如果您運行git config
與--global
它會爲您的用戶在整個系統中保存它。沒有該標誌,它僅保存當前存儲庫的設置。存儲庫設置會覆蓋系統設置。
或者,如果您希望每次克隆時都避免鍵入,您可以簡單地將克隆包裝到腳本中並調用腳本。
#!/bin/sh
USERNAME="My Name"
EMAIL="[email protected]"
git clone $1 $2
cd $2
git config user.email $USERNAME
git config user.name $EMAIL
cd -
設置你的用戶名和電子郵件中的腳本並運行這樣的,哪些克隆庫到一個名爲my_folder
文件夾。
./clone.sh https://github.com/libgit2/libgit2.git my_folder
是的,我知道我可以使用'git config'。我說我不想每次創建工作區時都要記住這樣做。 IOW,如果我使用'git config --global user.email',我仍然必須記得在創建工作區時,只要我想覆蓋設置,就要執行'git config user.email'。 –
試試我剛剛添加的腳本。真正做到這一點的唯一方法是腳本(並且包裝'git clone')或給自己一個命令行別名,以便在每次克隆後運行。顯然,您可以增強腳本以指定用戶名/電子郵件對,或根據您需要的更精確的內容。 – kgraney
轉到您的回購協議的根源,編輯.git/config
文件
在這裏,你可以把這個放在上面
[user]
email = [email protected]
name = Full Name
從本質上講,你是單獨設置這些憑據回購(而不是的全球)
黑客
此功能添加到您的.bashrc
和回購
wgit() {
echo "[user]" >> .git/config
echo " email = [email protected]" >> .git/config
echo " name = Full Name" >> .git/config
}
我不得不記得每次我想重寫設置時都這樣做。 –
在repo的git配置中設置此設置將覆蓋全局。只需將其添加到您的工作倉庫中,其餘部分將使用全局配置設置 – Kartik
我有多個(大約幾十個)工作空間。我爲我正在處理的每個任務創建一個新的。 –
你可以使用一個小的shell腳本來初始化存儲庫運行wgit
。就像這樣:
#!/bin/sh
git init
if [ "$1" = 'g' ];
then
git config user.email <Github email>
fi
if [ "$1" = 's' ];
then
git config user.email <Stash email>
fi
email=$(git config user.email)
echo "Created repository with $email"
我知道我有點晚,但它花了一些時間來寫吧...
$ git config --global user.email='my-personal-email-address'
$ cat stash
#!/bin/bash
git config user.email='my-company-email-address'
git "[email protected]"
周華健的解決方案是我的目的,最好的一個,但我如果有其他人喜歡,請留下這個。
我不認爲有一個更簡單的方法..爲什麼它會有用不同的電子郵件地址,爲什麼它是一個要求,你有不同的回購協議有這麼多不同的電子郵件地址? - 不過--Karktik指定的內容,或者如你所說 - 腳本將是一條路。 – sircapsalot
@sircapsalot,Github用於公共項目,Stash用於內部項目。我使用我的個人電子郵件Github和我的公司電子郵件Stash。爲什麼要求我在所有回購協議中只使用一個電子郵件地址? –
對於您創建的每個回購,電子郵件地址是否會有所不同? –