我只想获取两个修订版本之间已更改文件的列表,这很简单:
git diff -–name-only commit1 commit2 > /path/to/my/file
但是,如果我想将所有列出的文件复制到另一个地方,该怎么写?对于复制的文件,我需要完全相同的目录结构。
例如,我已经修改并添加了文件:
/protected/texts/file1.txt
/protected/scripts/index.php
/public/pics/pic1.png
我想要/home/changes/所有已更改和添加的文件:
/home/changes/protected/texts/file1.txt
/home/changes/protected/scripts/index.php
/home/changes/public/pics/pic1.png
1
我不太了解您要实现的目标...将更改传播到不同的克隆?创建补丁?在git仓库之外修补文件?
—
knittl 2011年
不是补丁,而是更改文件的确切副本结构。像补丁一样,但带有可靠的文件
—
BazZy 2011年
是的,在git仓库外部修补文件-对我来说是最接近的目标:)
—
BazZy 2011年
抱歉。什么?您要捕获并重放对文件的更改以及对树的更改?那是一个补丁。
—
knittl 2011年
git format-patch可以针对提交范围执行此操作。
git diff commit1 commit2 > my.patch然后cd other/path; patch -p1 < my.patch。为什么必须使用文件的完整副本?如果是因为您认为该补丁程序可能不适用,因此另一个目录不是真正处于该commit1状态,那么您真的应该从该状态复制所有内容commit2 ……