繁体   English   中英

自从在git中创建分支以来如何获取已更改文件的列表

[英]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 * :“ masterdev在历史上首先加入哪里,从devmaster的技巧开始并向后工作?”

为了找到这个,你可以向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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM