Git:生成今年所有文件列表的有效方法(在当前分支上)

时间:2016-06-24 11:27:02

标签: git bash

我需要生成今年已更改的所有文件的列表。

以下代码片段完成了这项工作 - 但运行大约需要10分钟:

for i in $(git ls-files)
do
    if [[ $(git log -1 --date=short --format="%ad" -- $i) =~ 2016- ]]
    then
        echo $i
    fi
done

如何以更有效的方式完成这项工作?

3 个答案:

答案 0 :(得分:0)

根据90% duplicate,您只需package importxmltoapis; import org.mule.api.MuleMessage; import org.mule.api.transformer.TransformerException; import org.mule.transformer.AbstractMessageTransformer; public class DeleteBOM extends AbstractMessageTransformer{ public static final String BOM = "\uFEFF"; @Override public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException { String s=""; try {s = removeBOM(message.getPayloadAsString());} catch (Exception e) {e.printStackTrace();} return s; } private static String removeBOM(String s) { if (s.startsWith(BOM)) { s = s.substring(1); } return s; } }

答案 1 :(得分:0)

这样做并且还列出了在任何提交中触及的文件,这些文件可能不再存在于当前版本中,或者可能已经分阶段存在或不存在:

git log --since=2016-01-01 --format=format:%H | \
  xargs git show --format=format: --name-only | \
  grep . | sort -u

它会比你的尝试更快,但它仍然会做很多工作;你必须看看你的特定存储库是否足够快。

如果您不需要完整的信息(即关于现在丢失的文件),只需在年度的第一次提交和HEAD之间执行git diff ...

答案 2 :(得分:0)

git diff --name-only $(git rev-list -1 --first-parent --before=2016-1-1 HEAD)