Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 更新项目中已更改文件的版权标题_Git_Copyright Display - Fatal编程技术网

Git 更新项目中已更改文件的版权标题

Git 更新项目中已更改文件的版权标题,git,copyright-display,Git,Copyright Display,我在一个项目中工作,其中版权标题是强制性的。所有文件都有这些标题,但最近标题的指导方针发生了变化,因此需要更新。我在Linux平台上工作(但也可以通过Windows访问文件)。有些文件有新的标题(但需要在“年份”字段中更新),有些文件有旧的标题,有些文件的标题非常粗糙,不符合标准(是的,他们不幸通过了审查),有些文件根本没有(是的,这些文件也通过了审查) 因此,我有三个要求: 将旧标题与更新年份一起更改为更新标题 对于具有新标题的邮件,需要更新其日期(更准确地说是年份) 将标题添加到没有任何标题

我在一个项目中工作,其中版权标题是强制性的。所有文件都有这些标题,但最近标题的指导方针发生了变化,因此需要更新。我在Linux平台上工作(但也可以通过Windows访问文件)。有些文件有新的标题(但需要在“年份”字段中更新),有些文件有旧的标题,有些文件的标题非常粗糙,不符合标准(是的,他们不幸通过了审查),有些文件根本没有(是的,这些文件也通过了审查)

因此,我有三个要求:

  • 将旧标题与更新年份一起更改为更新标题

  • 对于具有新标题的邮件,需要更新其日期(更准确地说是年份)

  • 将标题添加到没有任何标题的标题

  • 我不想对项目中的所有文件执行此操作,只对我正在为修复而更改的文件执行此操作。换句话说,只有文件显示在git状态的输出中。更新日期时可能出现的情况有:

  • 2011-2014、2016==>2012-20142016-2017
  • 2011-2012、2014-2015=>2011-2012、2014-2015、2017
  • 2011-2016==>2012-2017
  • 2011-2017==>无变化
  • 它也是项目中的.java、.cpp、.c、.h和.xml文件

    我看到了,但它似乎只添加标题。我不太精通sed和awk。我看了一遍,但是它假设所有文件都是标准的开始,而且它也包含一个公共头。有可能这样做吗


    编辑:我接受了@Hoall的答案,并手动操作,因为使用sed现在看起来太麻烦了

    在linux下,您可以执行以下操作:

    for i in `git diff --name-only --cached`; do echo $i; done
    
    用sed、awk等替换echo命令,以替换文件中的完整头

    编辑:


    有关sed部分,请参见

    谢谢。这让我领先了一步。现在转到sed/awk部分。谢谢你的链接,但是没有什么帮助。该链接也处理具有替换文本的标准格式的文件。我需要一些有条件地修改文本的东西(我列出的条件)。根据文件的数量,使用模板手动修改会更快。也许在for循环中有一个垃圾箱。很好,luckWell,我正在使用您的答案并手动执行:(因为我已经承诺了这么做)git reset HEAD^为I in
    git diff--name only
    ;做vim$i;完成git提交--重用消息=HEAD@{1}