有没有办法';脚本';git提交-只接受一些差异?

有没有办法';脚本';git提交-只接受一些差异?,git,pre-commit,Git,Pre Commit,我应用了一些静态代码分析,并将所有Java包级别的字段转换为受保护的字段。这基本上是正确的,因为我忘了显式设置访问修饰符,而在这些情况下,我所追求的通常是受保护的 不幸的是,我应用的重构是上的IntelliJ访问修饰符,它还改变了构造函数上的许多public->protected等等 因此,一旦我有了一个差异,其中包含这样的语句: -int myField; +protected int myField; 及 有没有一种方法可以编写一个脚本,在提交过程中运行,只允许上面的第一个示例,而不允许第

我应用了一些静态代码分析,并将所有Java包级别的字段转换为受保护的字段。这基本上是正确的,因为我忘了显式设置访问修饰符,而在这些情况下,我所追求的通常是受保护的

不幸的是,我应用的重构是上的IntelliJ访问修饰符,它还改变了构造函数上的许多public->protected等等

因此,一旦我有了一个差异,其中包含这样的语句:

-int myField;
+protected int myField;

有没有一种方法可以编写一个脚本,在提交过程中运行,只允许上面的第一个示例,而不允许第二个?我可以理解这个脚本,但我不知道如何运行它——它是一个预提交钩子吗


如果它是一个预提交钩子,那么如何检查这样一个脚本中的差异,并基于对某个字符串进行灰显来接受/拒绝它?

是的,您可以使用污点/过滤器来完成它

有几种方法可以做到这一点

git钩子是在git生命周期的不同阶段运行的脚本。
在适当的钩子文件中,检查所需的文件/内容,并对其执行所需操作

钩子将在您的文件上运行并检查语法

基本上,smudge相当于在签出任何内容时运行此代码 而clean相当于每当您在中签入任何内容时运行此代码


图像来自此url:

-public MyConstructor()
+protected MyConstructor()