与此问题非常相似的问题:在Git中仅导出具有文件夹结构的已修改和添加的文件
给定的答案似乎只输出给定提交中更改的文件($ commit_id):
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $commit_idRun Code Online (Sandbox Code Playgroud)
我想获取commit1和commit2之间的修改文件列表......这可能吗?
您应该只能使用提交ID.例如:
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT 218d182e 3ef44d29d
Run Code Online (Sandbox Code Playgroud)
如果要在提交中包含更改,3ef44d29d则需要通过ID或with指定其父级3ef44d29d^.
以下是我自己的一个项目的一些例子.在历史上倒退,我有以下提交:
1a443
fb4ae
88226
c46ba
Run Code Online (Sandbox Code Playgroud)
我从各种命令得到以下输出:
$ git diff-tree -r --name-only 1a443
1a443831fa9f797fedb397e900bd3d45e2093ea6
public/customers.en.html
$ git diff-tree -r --name-only fb4ae
fb4ae4af0ac473b8547ec1717d4b4172c0d634f4
public/checkout.en.html
$ git diff-tree -r --name-only 88226
88226fec6f1082b1dffd266d3e1bd0dc38cca520
public/finish.en.html
$ git diff-tree -r --name-only c46bac
c46bacddee7785599c2f026f53cd93357e8ad30d
public/index.php
Run Code Online (Sandbox Code Playgroud)
我可以得到所有的变化c46bac和1a443足够容易:
$ git diff-tree -r --name-only c46bac 1a443
public/checkout.en.html
public/customers.en.html
public/finish.en.html
Run Code Online (Sandbox Code Playgroud)
但请注意,它不包括public/index.php提交中的更改c46bac.我们真正想要的是使用该提交的父级作为比较的起点.
$ git diff-tree -r --name-only c46bac^ 1a443
public/checkout.en.html
public/customers.en.html
public/finish.en.html
public/index.php
Run Code Online (Sandbox Code Playgroud)