git添加–patch与difftool

是否可以配置Git以使用我配置的difftool与git add –patch?

我想通过我自己的difftool选择添加到索引的更改.

不,不幸的是

我想我可以看到工作 – Git根据当前索引中的内容生成一个临时文件,并将其传递给difftool以及当前工作树版本的副本(以防止进一步更改),让您使用difftool将一些更改移动到索引版本,然后一旦保存并退出,则对该修改的索引版本中的任何内容进行分段.请注意,这将需要difftool也是一个编辑器,并不是所有有效的difftools都是;其中一些只是用于查看差异.还要注意,这基本上绕过了所有的git add -p.你不会有任何正常的接口从它之间移动在hunk之间,分裂hunk等等. difftool将完全负责所有这一切.

如果你的difftool具有足够的功能来做这样的事情,那么我想你可以写一个脚本去做.一个大纲,没有真正的任何错误保护,处理特殊情况(二进制文件?),并完全未经测试:

#!/bin/bash
tmpdir=$(mktemp -d)
git diff --name-only |
while read file; do
    cp "$file" $tmpdir
    # this has your changes in it
    work_tree_version="$tmpdir/$file"
    # this has the pristine version
    index_version=$(git checkout-index --temp "$file")
    # and now you bring changes from the work tree version into the index version,
    # within the difftool, and save the index version and quit when done
    my_difftool "$work_tree_version" "$index_version"

    # swap files around to run git add
    mv "$file" "$work_tree_version"
    mv "$index_version" "$file"
    git add "$file"
    mv "$work_tree_version" "$file"
    # you could also do this by calculating the diff and applying it directly to the index
    # git diff --no-index -- "$file" "$original_index_version" | git apply --cached

rm -r $tmpdir

可能有很多方法可以改善;对不起,我现在没有时间小心谨慎.

http://stackoverflow.com/questions/9023928/git-add-patch-with-difftool

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:git添加–patch与difftool