如何将git diff输出拆分为单独的文件

5

我想将git diff输出分成单独的文件。

假设有三个更改的文件。 git diff 会一次性输出所有三个差异,但有没有办法将它们分成三个单独的差异文件呢?


你可以在标有 diff --git a/<filename> b/<filename> 的那一行进行分割。 - wjandrea
或者更好的方法是找出哪些文件被修改,然后逐个使用“git diff”命令进行比较。 - wjandrea
有没有任何命令可以让我这样分割,@wjandrea。单独对每个文件使用git diff可以处理三个被更改的文件,但那只是一个例子。如果有数十个文件怎么办?我正在寻找自动化的方法,而不是手动的方法。 - xpt
1
我不知道有一个单一的命令可以做到这一点,但你可以编写一个脚本。 - wjandrea
好的,我本来希望有一些现有的功能,比如将不同的提交拆分成它们自己的单独文件...好吧,那就这样吧。 - xpt
1个回答

7
一个简单的bash脚本示例。
#!/bin/bash
git diff --name-only | while read p
do
    git diff -- "$p"
    # do something...
done

4
这是一个需要在路径前加上 -- 的情况(比如 git diff -- "$p"),因为在脚本环境中,你可能不知道会遇到哪些文件名,这可能导致命令的歧义。 - Mark Adelsberger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接