如果丢失,防止git自动生成用户电子邮件

时间:2014-05-04 14:01:25

标签: git git-commit git-config

有没有办法全局配置git不自动生成用户的电子邮件,如果没有设置并中止提交呢?

$ git commit -m "test"
[master (root-commit) 71c3e2e] test
Committer: unknown <my.user@my.very.own.hostname>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.

如果提交者不够仔细检查git警告,这可能会导致严重的隐私泄露。

2 个答案:

答案 0 :(得分:3)

设置git config --global user.useConfigOnly true

  

user.useConfigOnly

     

指示Git避免尝试猜测user.email和user.name的默认值,而是仅从   组态。例如,如果您有多个电子邮件地址,并且   想要为每个存储库使用不同的存储库,然后使用   配置选项在全局配置中与true一起设置为true   名称,Git将提示您设置电子邮件,然后再进行新提交   在新克隆的存储库中。默认为false。

答案 1 :(得分:1)

根据@cupcake的建议,可以使用git预提交挂钩来完成此操作。

  1. 像这样创建名为pre-commit的文件:

    #!/bin/sh
    
    git config user.name >/dev/null 2>&1
    
    if [[ $? != 0 ]]; then
        echo "Error: user.name is undefined. Use 'git config user.name \"Your Name\"' to set it."
        exit 1
    fi
    
    git config user.email >/dev/null 2>&1
    
    if [[ $? != 0 ]]; then
        echo "Error: user.email is undefined. Use 'git config user.email you@example.com' to set it."
        exit 1
    fi
    
  2. 如有必要,请使用chmod +x pre-commit

  3. 使其可执行
  4. 将此文件丢给全局git挂钩模板:

    • 在* nix系统上,它位于

       /usr/share/git-core/templates/hooks
      
    • 在Windows上,这通常可以在

      中找到
       %ProgramFiles%\Git\share\git-core\templates\hooks
      
  5. 使用git重新初始化现有的git init回购。