我想升级到较新版本的CMS,其开发在Git中进行跟踪。由于CMS更新是在新的一年,因此每个文件的版权日期都会从2011年到2012年发生。
我可以使用git gui直观地检查和分阶段获取版权问题的文件。但是,似乎我应该能够告诉git只播放那些只有变化的文件:
- * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
+ * @copyright Copyright (c) 2008 - 2012, EllisLab, Inc.
有几千个文件发生了变化,但绝大多数文件没有收到任何其他变化。我想暂存并提交这个简单的版权日期,然后仔细查看那些接收更多实质性更改的文件。
这个目的可以通过两种可能的方式实现:
是否有可能?提前谢谢!
答案 0 :(得分:3)
我最近不得不做Magento升级的确切事情。 90%的变更只是更新版权线。所以我想出了以下“单线”。
git diff -G '@copyright.*[Cc]opyright' --name-only | xargs -I {} sh -c 'FILE={} ; [ $(git diff -U0 -- $FILE | wc -l | tr -d " " | cut -f1-) -eq 7 ] && git add $FILE'
如果您想要安全并首先验证事物,请将最后一部分更改为“echo git add $ FILE”,以便它只打印出命令。
答案 1 :(得分:1)
我担心我的答案顺序相反,但是......
git add --patch
这是一个相当手动的方法,所以这可能节省一些时间,让你只能审查那些有相关变化的人,
for i in $(gd -SYOURCHANGESTRING | sed -rn 's/^diff --git a\/(\S+).*$/\1/p'); do git add --patch "$i"; done
这样的事情:
git diff -SYOURCHANGESTRING | sed -rn 's/^diff --git a\/(\S+).*$/\1/p' | xargs -n1 git add