当前位置:   article > 正文

git(7)自定义 Git_refs/heads/master:refs/heads/master[remote rejecte

refs/heads/master:refs/heads/master[remote rejected] (pre-receive hook decl

在这里插入图片描述

在这里插入图片描述

这里举一个简单的例子:在暂存前,用indent(缩进)程序过滤所有C源代码。在.gitattributes文件中设置"indent"过滤器过滤*.c文件:

*.c filter=indent

然后,通过以下配置,让 Git 知道"indent"过滤器在遇到"smudge"和"clean"时分别该做什么:

$ git config --global filter.indent.clean indent

$ git config --global filter.indent.smudge cat

于是,当你暂存*.c文件时,indent程序会被触发,在把它们签出之前,cat程序会被触发。但cat程序在这里没什么实际作用。这样的组合,使C源代码在暂存前被indent程序过滤,非常有效。

另一个例子是类似RCS$Date$关键字扩展。为了演示,需要一个小脚本,接受文件名参数,得到项目的最新提交日期,最后把日期写入该文件。下面用Ruby脚本来实现:

#! /usr/bin/env ruby

data = STDIN.read

last_date = git log --pretty=format:"%ad" -1

puts data.gsub(’ D a t e Date Date’, ‘ D a t e : ′ + l a s t d a t e . t o s + ′ Date: ' + last_date.to_s + ' Date:+lastdate.tos+’)

该脚本从git log命令中得到最新提交日期,找到文件中的所有$Date$字符串,最后把该日期填充到$Date$字符串中 — 此脚本很简单,你可以选择你喜欢的编程语言来实现。把该脚本命名为expand_date,放到正确的路径中,之后需要在 Git 中设置一个过滤器(dater),让它在签出文件时调用expand_d **《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源** ate,在暂存文件时用Perl清除之:

$ git config filter.dater.smudge expand_date

$ git config filter.dater.clean ‘perl -pe “s/\$Date[^\$]*\$/\$Date\$/”’

这个Perl小程序会删除$Date$字符串里多余的字符,恢复$Date$原貌。到目前为止,你的过滤器已经设置完毕,可以开始测试了。打开一个文件,在文件中输入$Date$关键字,然后设置 Git 属性:

$ echo '# D a t e Date Date’ > date_test.txt

$ echo ‘date*.tx

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/412271
推荐阅读
相关标签
  

闽ICP备14008679号