![](/img/trans.png)
[英]How do I get the list of changed and added files since the creation of a branch in git by a specific author?
[英]How to get the list of changed files since the creation of a branch in git
假设我创建了一个分支dev
,然后进行了5次提交,更改的文件总数为5。
自创建分支以来,是否可以运行任何命令以仅查看更改的文件列表?
分支不会保留“创建”信息,因此您无法让git完全自动地且一般地做到这一点。 但是,如果您知道有5个“有趣的”提交:
A <- B <- C <- D <- E <- dev
/
... <- * <- o <- ... <-- master
并且您想比较提交E
(分支dev
的尖端)与提交*
,即提交A
之前的提交:
$ git diff dev~5 dev
将为您显示两者的完全区别。 在~5
符号的意思是“计数回5个父母”:在开始E
,退一步一至D
,退一步一个C
等; 如果您执行了五次操作,则会到达标记为*
的提交。
diff向您显示了这两次提交之间的区别。 默认情况下,它将显示所有内容,但是如果您想查看更改(或添加或删除等)文件的名称,可以添加--name-only
。
通常,执行此操作的更好方法是,不在乎创建分支dev
时间,而只在意dev
和其他分支(例如master
) 联接的位置 。 例如,在这种情况下,您可能想问以下问题来定位commit *
:“ master
和dev
在历史上首先加入哪里,从dev
和master
的技巧开始并向后工作?”
为了找到这个,你可以向git询问两个分支的“合并基础”:
$ git merge-base dev master
这将产生合并基础的原始提交ID(图中的commit *
)。 然后,您可以将其提供给git diff
(使用--name-only
,-- --name-status
,-- --stat
或任何您喜欢的名称):
$ git diff --name-status $(git merge-base dev master) dev
这很常见, git diff
重新使用了特殊的master...dev
语法(有关详细信息,请参见gitrevisions
):
$ git diff --name-status master...dev
这里的三点语法告诉git diff
查找merge-base,并产生它与右边标识的提交之间的差异:分支dev
的尖端。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.