首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获得完整上下文的git diff?

如何获得完整上下文的git diff?
EN

Stack Overflow用户
提问于 2012-11-29 22:09:49
回答 3查看 52.4K关注 0票数 134

如何创建适合在熔炉中复习的补丁?

代码语言:javascript
复制
git diff branch master --no-prefix > patch

这只生成了3行上下文。因此,我执行以下操作

代码语言:javascript
复制
git diff --unified=2000 branch master --no-prefix > patch

希望所有文件的行数将少于2000行。有没有一种方法可以告诉git在不指定最大行数的情况下将文件中的所有行都包含在修补程序中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-19 02:11:04

我知道这很老,但我也不喜欢硬编码的解决方案,所以我测试了一下:

代码语言:javascript
复制
git diff -U$(wc -l MYFILE)

使用-U似乎是解决这个问题的唯一方法,但是使用行数可以保证即使是非常大的文件中的很小的更改,它也可以工作。

票数 64
EN

Stack Overflow用户

发布于 2018-05-24 03:52:46

得到了灵感,所以我添加了一个git别名。

代码语言:javascript
复制
$ cat ~/.gitconfig | fgrep diff
        df = "!git diff -U$(wc -l \"$1\" | cut -d ' ' -f 1) \"$1\""
$ git df <file>

更新:

刚发现"git df“有时不能工作,由于执行git别名时目录更改。(参见git aliases operate in the wrong directory)。所以这是更新后的版本:

代码语言:javascript
复制
$ cat ~/.gitconfig | fgrep df
        df = "! [ \"$GIT_PREFIX\" != \"\" ] && cd \"$GIT_PREFIX\"; ~/bin/git_df.sh"
$ 
$ cat ~/bin/git_df.sh
#!/bin/bash
for FILE in $@; do
    git diff -U$(wc -l "${FILE}" | cut -d ' ' -f 1) "${FILE}"
done
exit 0
票数 4
EN

Stack Overflow用户

发布于 2017-01-02 20:36:30

这对我在macOS上很有效:

代码语言:javascript
复制
git diff -U$(wc -l main.htm | xargs)

请参阅"How to trim whitespace from a Bash variable?"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13627598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档