我需要在使用git控制的项目中的两个标签之间生成更改日志,特别是android源代码。此列表应包括已编辑,移动,重命名,删除,创建的任何文件/目录/等。
任何帮助都会很棒。如果你有办法在整个android源码上做到这一点......甚至更好。
答案 0 :(得分:6)
如果您需要查找哪些文件不同:
git diff --name-only <tag1> <tag2>
如果您需要查找所有已更改的文件:
git log --name-only --pretty=format: <tag1>..<tag2> |
grep -v '^$' | sort | uniq
--pretty=format:
用于抑制有关提交的打印信息,并仅打印差异部分。请注意,对于git log,<tag1>
和<tag2>
的顺序很重要。
答案 1 :(得分:1)
正如我在评论中提到的,"How do I find common files changed between git branches?"是这里的主要解决方案:
git log [--pretty=<format>] --name-only tag1..tag2
或
git diff --name-only tag1 tag2
(也在Gitology recipe中提及)
但是:正如“How to get a list of directories deleted in my git repository?”中提到的, Git只跟踪文件的内容,而不是跟踪目录。
要包含有关目录的信息,您需要开始使用git diff-tree
。
任何已创建或删除的目录在第二列或第一列中都会有
040000
,而在第一列或第二列中分别有000000
。这是左右条目的树条目“模式”。
类似的东西(根据Charles Bailey):
git diff-tree -t origin/master master | grep 040000 | grep -v -E '^:040000 040000'