git - 远程和本地存储库之间的“git diff”

标签 git github git-diff

在提交 pull 请求之前,我尝试用 GitHub 存储库diff 我的本地文件,这样我就可以看到会显示什么。有准确的方法吗?

我假设 GitHub 的比较工具操纵 Git 的 diff

最佳答案

将本地工作目录与远程分支进行比较,例如 origin/master:

  1. git fetch origin master
    这告诉 git 从名为“origin”的远程获取名为“master”的分支。 git fetch不会影响您工作目录中的文件;它不会尝试 merge 像 git pull 这样的更改做。
  2. git diff --summary FETCH_HEAD
    当获取远程分支时,可以通过 FETCH_HEAD 在本地引用它。上面的命令告诉 git 将工作目录文件与 FETCHed 分支的 HEAD 进行比较,并以摘要格式报告结果。摘要格式给出了更改的概述,通常是一个很好的开始方式。如果您想了解更多信息,请使用 --stat而不是 --summary .
  3. git diff FETCH_HEAD -- mydir/myfile.js
    如果您想查看对特定文件(例如 myfile.js)的更改,请跳过 --summary选项并引用您想要的文件(或树)。

如前所述,origin引用远程存储库和 master引用该 repo 中的分支。默认情况下,git 使用名称 origin对于 Remote ,所以如果你这样做 git clone <url>默认情况下,它将调用该远程 origin .使用 git remote -v看什么origin指向。

您可能有多个 Remote 。例如,如果您在 GitHub 上“fork”一个项目,您通常需要一个远程引用原始项目以及您自己的 fork。假设您创建了 https://github.com/yourusername/someproject作为 https://github.com/theoriginal/someproject 的一个分支.按照惯例,您会将 Remote 命名为原始存储库 upstream ,而你自己的 fork 将是 origin .如果您在 GitHub 上对您的复刻进行更改并希望在本地获取这些更改,您可以使用 git fetch origin master .如果upstream进行了更改,您需要在进行更多更改之前在本地同步,您可以使用 git fetch upstream master .

关于git - 远程和本地存储库之间的“git diff”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11935633/

相关文章:

git - 从 git patch 中删除行而不损坏

git - 使用换行间距格式化 git diff

git - 将本地(现有)git repo 导入 Aptana 3

GitHub 克隆错误 : Cannot clone with EOF error

git - 如何比较来自两个不同分支的文件

git - 在 git diff 输出中更改前后的行数

git push,源代码 stash 在哪里?

git - 如何挑选文件的特定提交?

node.js - 从 GitHub 获取 npm 模块会带来 ".git"文件夹

ios - Pod 仓库推送私有(private)仓库遇到错误 : Repository not found