如何防止Git自动检测user.email?

时间:2018-07-08 07:14:24

标签: git configuration git-commit

我没有故意进行任何全局user.email或全局user.name设置。

我喜欢使用git config user.emailgit config user.name命令为每个存储库设置user.email和user.name。

在git版本为2.17.0的macOS上,如果我忘记为Mac上的存储库设置user.emailuser.name,则在运行git commit时出现此错误:

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'lone@mymac.(none)')

这很好,因为它使我想起我需要为我的仓库设置user.emailuser.name的配置。

但是在我的git版本为2.11.0的Debian系统上,如果我忘记为存储库设置user.emailuser.name,则在运行git commit时,它会使用{{ 1}}作为作者。我猜想它会自动从Lone Learner <lone@mydeb>中检测到user.name,并将/etc/passwd自动检测为user.email

我想在Debian或Git开启的任何系统上禁用对<user>@<host>user.name的自动检测。如果我没有显式设置user.emailuser.name,那么我希望Git以上面Mac示例中所示的方式失败或以其他方式失败。无论如何,还是可以使用user.email或其他方式来实现这一目标?

1 个答案:

答案 0 :(得分:1)

从Git 2.8开始,使用:

import java.io.*;

public class Sample {
    static BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws Exception {
        boolean valid = false;
        char[] alpha = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
        char[] num = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
        do {
            boolean alphaCheck = false;
            boolean numCheck = false;
            System.out.println("Password must contain Letters and Numbers Only. (abc../ABC.., 123..)");
            System.out.println("Special Characters are not Allowed.");
            System.out.print("Register Password: ");
            String password = dataIn.readLine();

            char[] passwordToArray = password.toUpperCase().toCharArray();
            System.out.println(passwordToArray);
            // Check if password contains numbers
            for (char x : passwordToArray) {
                for (char y : num) {
                    if (x == y) {
                        numCheck = true;
                        break;
                    }
                }
            }
            // Check if password contains Letters
            for (char x : passwordToArray) {
                for (char y : alpha) {
                    if (x == y) {
                        System.out.println(x + " == " + y);
                        alphaCheck = true;
                        break;
                    }
                }
            }
            if (!numCheck) {
                System.out.println("No Numbers Found.");
            }
            if (!alphaCheck) {
                System.out.println("No Letters Found.");
            }
            // Check if password contains both Alphabets and Numbers
            // if false Continue Register
            if (numCheck && alphaCheck) {
                System.out.println("Register Complete");
                valid = true;
            } else {
                System.out.println("Register Failed. Please Try again");
            }

        } while (!valid);
    }
}

这样可以避免在Debian环境中进行“自动检测”。
有关更多信息,请访问“ How do I make git block commits if user email isn't set?”。