我没有故意进行任何全局user.email
或全局user.name
设置。
我喜欢使用git config user.email
和git config user.name
命令为每个存储库设置user.email和user.name。
在git版本为2.17.0的macOS上,如果我忘记为Mac上的存储库设置user.email
或user.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.email
和user.name
的配置。
但是在我的git版本为2.11.0的Debian系统上,如果我忘记为存储库设置user.email
或user.name
,则在运行git commit
时,它会使用{{ 1}}作为作者。我猜想它会自动从Lone Learner <lone@mydeb>
中检测到user.name
,并将/etc/passwd
自动检测为user.email
。
我想在Debian或Git开启的任何系统上禁用对<user>@<host>
和user.name
的自动检测。如果我没有显式设置user.email
或user.name
,那么我希望Git以上面Mac示例中所示的方式失败或以其他方式失败。无论如何,还是可以使用user.email
或其他方式来实现这一目标?
答案 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?”。