首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在github中为两个分支之间的单个文件生成diff

如何在github中为两个分支之间的单个文件生成diff
EN

Stack Overflow用户
提问于 2013-01-24 19:26:54
回答 1查看 112.3K关注 0票数 130

我需要为一个单独的文件生成一个diff,它将显示两个版本之间的差异,这实际上是github中的标签。然后我想通过电子邮件将此差异发送给某人,因此比较的github URL将是理想的。github比较视图将允许我对所有更改的文件执行此操作,但这并不好,因为我的存储库中有数千个文件。

我可以在命令行中这样做,但这没有帮助,因为我需要通过电子邮件将diff发送给某人:

代码语言:javascript
复制
git diff tag1 tag2 -- path/to/file

我找到了这里讨论的命令行版本:how can I see the differences in a designated file between a local branch and a remote branch?

EN

回答 1

Stack Overflow用户

发布于 2017-01-05 12:14:12

我使用nulltoken's answer编写了一个简单方便的脚本,用于从命令行对GitHub进行两次提交之间的比较。

您可以找到full script on gist,但这里有一些好处:

代码语言:javascript
复制
# Parse the following patterns for repo urls to get the github repo url
# https://github.com/owner/repo-name.git
# git@github.com:owner/repo-name.git
BASE_URL="https://github.com/""$(git config --get remote.origin.url | sed 's/.*github\.com[/:]\(.*\).git/\1/')""/compare"

if [[ "$#" -eq 1 ]]; then
  if [[ "$1" =~ .*\.\..* ]]; then
    # Handle "git hubdiff fromcommit..tocommit"
    open "${BASE_URL}/$(git rev-parse "${1/\.\.*/}")...$(git rev-parse ${1/*\.\./})"
  else
    # Handle "git hubdiff fromcommit"
    open "${BASE_URL}/$(git rev-parse "$1")...$(git rev-parse HEAD)"
  fi
elif [[ "$#" -eq 2 ]]; then
  # Handle "git hubdiff fromcommit tocommit"
  open "${BASE_URL}/$(git rev-parse "$1")...$(git rev-parse "$2")"
fi

它接受分支、提交以及git rev-parse可以解析的任何其他内容作为参数。我使用的是open,它只在macOS上打开网页,所以如果你在不同的环境中,你会想要调整它。

与nulltoken的答案一样,为了在diff中指向单个文件,您必须单击该文件的标题,使锚定字符串出现在url栏中,然后您可以复制该字符串。

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

https://stackoverflow.com/questions/14500240

复制
相关文章

相似问题

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