有没有办法'编写'git提交 - 只接受一些差异?

时间:2015-11-25 16:29:36

标签: git pre-commit

我已经应用了一些静态代码分析 - 并将所有Java包级别字段转换为protected。这大多是正确的,因为我忘了明确设置访问修饰符,并且受保护通常是我在那些情况下所追求的。

不幸的是,我应用的重构是IntelliJ弱化访问修饰符,它也改变了很多公共 - >受保护的,建设者的等等。

所以一旦我有一个带有这样的语句的差异:

-int myField;
+protected int myField;

-public MyConstructor()
+protected MyConstructor()

有没有办法编写一个在提交期间运行的脚本,并且只允许上面的第一个例子,但没有第二个例子?我可以找出脚本,我只是不确定如何运行它 - 它是一个预提交钩子吗?

如果它是一个预提交钩子,你怎么检查这样一个脚本中的差异并接受/拒绝它基于greped它的某些字符串?

1 个答案:

答案 0 :(得分:2)

是的,你可以使用涂抹/过滤器

来做到这一点

有几种方法可以做到。

git hooks

git hooks是一个在git生命周期的不同阶段运行的脚本 在正确的挂钩文件中,检查您需要的文件/内容,并随身携带。

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

Smudge/clean

基本上,涂抹相当于每当你检查出任何东西时运行此代码
和clean相当于每当你检查中的任何内容时运行此代码。

图片来自此网址: https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes

enter image description here