Is it possible to use the “minimal” algorithm for interactive adding?

好久不见. 提交于 2021-02-07 20:28:11

问题


Git doesn't always choose hunk boundaries correctly, when calculating a changeset from snapshots. git diff has a --diff-algorithm option that allows some tweaking in this regard; git diff --minimal sometimes gives better results than git diff alone.

Is there a way to get the same optimised changeset layout also for git add -p (which basically shows the diff hunks interactively)? It doesn't seem to allow the --diff-algorithm option.


回答1:


TL;DR version

git -c diff.algorithm=minimal add -p

(requires Git version 1.8.4 or newer).

Details

Moving this from comment to answer after the last bit of research:

Since Git version 1.8.4, the interactive add perl script (which implements git add -p) obeys the diff.algorithm setting in your git configuration. This went in with commit 2cc0f53 (12 Jun 2013) by John Keeping (johnkeeping).
(Merged by Junio C Hamano -- gitster -- in commit 91fc159, 27 Jun 2013) :

When staging hunks interactively it is sometimes useful to use an alternative diff algorithm which splits the changes into hunks in a more logical manner. This is not possible because the plumbing commands called by add--interactive ignore the "diff.algorithm" configuration option (as they should).

Since add--interactive is a porcelain command it should respect this configuration variable. To do this, make it read diff.algorithm and pass its value to the underlying diff-index and diff-files invocations.

At this point, do not add options to "git add", "git reset" or "git checkout" (all of which can call git-add--interactive). If a user wants to override the value on the command line they can use:

   git -c diff.algorithm=$ALGO ...

(with a fix in commit e5c2909 (23 Jun 2013) by Junio C Hamano (gitster); the fix is also in 1.8.4).



来源:https://stackoverflow.com/questions/37509770/is-it-possible-to-use-the-minimal-algorithm-for-interactive-adding

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!