远程和本地仓库之间的git差异

Ter*_*rry 55 git github git-diff

diff在我提交拉取请求之前尝试使用GitHub仓库使用我的本地文件,这样我就可以看到会出现什么,有没有准确的方法呢?我假设GitHub的比较工具操纵Git的diff

Hie*_*roB 106

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

  1. git fetch origin master
    这告诉git从名为'origin'的远程中获取名为'master'的分支. git fetch不会影响到你的工作目录下的文件; 它不会尝试合并更改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选项并引用所需的文件(或树).

  • 我补充一下:2b.`git diff --stat FETCH_HEAD`如果`--summary`不够,可以提供更多信息. (5认同)
  • 赞成,因为它提供了比其他答案更多的细节。 (4认同)
  • 对上下文的细节和解释进行了投票.如果有人问这个问题,他们可能会开始使用git.当你试图围绕一项新技术时,背景和清晰的解释是很重要的,它肯定永远不会受到伤害. (3认同)
  • 如果我想在推送更改之前避免合并冲突。是否最好先获取,然后使用 FETCH_HEAD 对我的本地工作目录进行比较,然后在一切正常时进行推送? (2认同)

Den*_*ret 44

不要做pull:

  • 做一个fetch(语法是相同的git pull,但它不会自动合并)
  • diff在你的dest分支和另一个分支之间做一个
  • 然后merge如果你想要做一个


gzh*_*gzh 5

根据 OP 的评论,他的“问题的一部分是 Windows 与 Unix LFs”,这应该会有所帮助:

您可以使用以下配置命令告诉git-diff忽略EOL代码的差异。

git config --global core.whitespace cr-at-eol
Run Code Online (Sandbox Code Playgroud)