某个时间点后修改的所有文件名
在合代码时候,为了防止漏合,通常会罗列出某个时间点后自己修改过的所有文件名,然后合并每个文件修改的内容。这里使用git log命令解决这个问题。
git log命令格式:
git log [<options>] [<revision range>] [[--] <path>…]
常用选项
--since=<date>
--after=<date>
展示某个时间点后的提交。
--until=<date>
--before=<date>
展示某个时间点前的提交。
--author=<pattern>
--committer=<pattern>
限制输出提交者与指定模式(正则表达式)相匹配的提交。 如果有多个–author = ,则提交者与任意正则表达式匹配即可输出(多个–committer = 类似)。
--grep=<pattern>
限制输出提交日志与指定模式(正则表达式)匹配的提交。 如果使用多个–grep = ,则提交日志与任意正则表达式匹配即可。
--all-match
如果存在多个–grep = ,则提交日志需要与所有正则表达式匹配,而不是任意。
--decorate[=short|full|auto|no]
展示提交的ref名称。 如果指定为short,则不会展示ref名称的前缀refs/heads/,refs/tags/和refs/remotes/。 如果指定了full,则将打印完整的引用名称(包括前缀)。 如果指定了auto,如果输出将输出到终端,则同short,否则不显示引用名称。 默认选项是short。
--name-only
只展示修改文件名,不展示修改文件内容。
--oneline
将提交信息单行展示。
所以如果需要展示某个时间点后自己修改的所有文件名,则需要加–name-only限制只展示文件名,–since= 或者–after=限制修改的时间点,–author=限制提交者,–oneline 单行展示
。
git log --name-only --since="2018-05-21 00:00:00" --author='u010141779' --oneline
这样的话还有一个问题,就是单行的提交信息会混杂在修改的文件名中,为了将提交信息和修改的文件名区分开,可以使用grep或者sed命令进行模式匹配。
这spring boot中,文件名肯定以项目名开始,所以使用grep可以匹配出文件名:
git log --name-only --since="2018-05-21 00:00:00" --author='u010141779' --oneline | grep '^项目名'
或者使用sed:
git log --name-only --since="2018-05-21 00:00:00" --author='u010141779' --oneline | sed -n '/^项目名/p'
但是这样的话,还有一个问题,就是多次提交可能修改同一文件,这样的话会导致同一文件出现多次,可以考虑使用sort -u 去重。
git log --name-only --since="2018-05-21 00:00:00" --author='u010141779' --oneline | sed -n '/^项目名/p' | sort -u