Is it possible to 'git diff' 2 strings?

ⅰ亾dé卋堺 提交于 2019-12-10 21:42:51

问题


I have 2 strings and I want the git diff between them. I could create file1 and add string1 as its contents.

Then I could create file2 and add string2 as its contents. Then I could git diff file1 and file2.

However, given that I have the strings as strings (and not as file contents) can I avoid these long-winded steps? Is there an easier way?

Something like:

git diff "my first string" "my second string" # obviously does not work

回答1:


If you insist on the git way,

git diff $(echo "my first string" | git hash-object -w --stdin) $(echo "my second string" | git hash-object -w --stdin)  --word-diff



回答2:


You don't have to use git diff for that, Git is used to track the changes in your code base.

There is a good linux command for that

diff  <(echo "my first string" ) <(echo "my second string")

This is a good answer https://stackoverflow.com/a/454549/4620609




回答3:


In the implementation level, I guess, git diff use a certain diff utility (such as diff) to generate patch, and redirect to a pager(default it is less) for viewing. So you need not call git diff to compare two string.

If you want patch file format as that output by git diff, the flowing command will be a help.

diff -u <(echo "my first string" ) <(echo "my second string")

-u is appended to tell diff to output patch with unified context.

By the way, git provide a configuration item diff.external to allow you generate diff not by the internal diff machinery, but using the given command. environment variable GIT_EXTERNAL_DIFF has the same effect.



来源:https://stackoverflow.com/questions/45853613/is-it-possible-to-git-diff-2-strings

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