git push 出現 GH007: Your push would publish a private email address.

前言

最近嘗試調整了 GitHub 的一個設置,結果在 push 程式碼時卻出現 GH007: Your push would publish a private email address.,所以這一邊紀錄一下原因跟解決方式。

事發原因

因為這幾天再調整 GitHub 的設置中的 Email 權限,結果勾選到 Keep my email addresses private 選項,它的說明簡單來講如下

We’ll remove your public profile email and use xxxxxxx@users.noreply.github.com when performing web-based Git operations (e.g. edits and merges) and sending email on your behalf. If you want command line Git operations to use your private email you must set your email in Git.
Commits pushed to GitHub using this email will still be associated with your account.

簡單來講,當你勾選了 Keep my email addresses private 之後,如果你使用 Web 版本做推程式碼到公開的儲存庫或組織作出貢獻時,別人不會看到你的私人 Email 而是會變成 GitHub 所提供的替代 Email。

但是現在因為我勾選這個選項後,導致我在輸入以下指令時會出現錯誤:

1
2
3
git add
git commit -m 'first'
git push origin main

Error Message:

1
2
3
4
5
6
7
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote: error: GH007: Your push would publish a private email address.
remote: You can make your email public or disable this protection by visiting:
remote: http://github.com/settings/emails
To https://github.com/xxxxxxx
! [remote rejected] main -> main (push declined due to email privacy restrictions)
error: failed to push some refs to 'https://github.com/xxxxxx'

因此這一邊要紀錄一下該如何解決這個問題。

解決方式

通常來講你的電腦內 Global 預設都會是主要登入 GitHub 的 Email,如果不確定可以輸入以下指令查看:

1
git config --global --list # 應該會看到一個 user.email 的設置,正常來講不會是找不到的

接下來我們就必須重新設置 user.email,首先先到 GitHub Email 設置找到你的 GitHub Email

GitHub Email

然後複製下來在終端機輸入以下指令

1
git config --global user.email '[email protected]'  

輸入完畢之後可以再看一下 git config --global --list 是否有變成 GitHub 隱私信箱。

但是這邊最後會建議要輸入以下指來更新 commit 的作者訊息,否則調整過後還是有機會發生無法推到 GitHub 的問題:

1
git commit --amend --reset-author

更新完畢之後,基本上你就可以 git push 出去了。

但是如果是先前已經 commit 的部分,似乎就沒有辦法隱藏了,調整之後我再重新 Git clone 的 Email 都一樣是保持原始的。

參考文獻