我只想获取两个版本之间变更文件的列表,很简单:
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
git format-patch
可以为提交范围执行此操作。 - knittlgit diff commit1 commit2 > my.patch
然后cd other/path; patch -p1 < my.patch
。为什么必须使用文件的完整副本进行操作?如果是因为您认为补丁可能无法应用,因此另一个目录实际上不处于commit1
状态,那么您真的应该从commit2
状态复制 所有内容... - Cascabelgit diff -–name-only
命令并在我的计算机上运行,但它失败了。原来这两个破折号并不是真正的破折号: "-–name-only" .charCodeAt(0) 45 "-–name-only" .charCodeAt(1) 8211。 - qbolec