我想在提交拉取请求之前,使用GitHub存储库对比工具比较本地文件和存储库的差异,以便查看将显示什么。是否有准确的方法来做这件事?
我认为GitHub的对比工具使用Git的diff
进行操作。
我想在提交拉取请求之前,使用GitHub存储库对比工具比较本地文件和存储库的差异,以便查看将显示什么。是否有准确的方法来做这件事?
我认为GitHub的对比工具使用Git的diff
进行操作。
比较本地工作目录与远程分支的差异,例如origin/master:
git fetch origin master
git fetch
不会影响您的工作目录中的文件;它不像 git pull
一样尝试合并更改。git diff --summary FETCH_HEAD
--stat
替换 --summary
。git diff FETCH_HEAD -- mydir/myfile.js
--summary
选项并引用所需的文件(或树)。请注意,origin
引用远程仓库,而 master
引用该仓库中的分支。 默认情况下,git 使用名称 origin
作为远程仓库的名称,因此如果执行 git clone <url>
,它将默认调用该远程仓库 origin
。 使用 git remote -v
查看 origin
指向哪里。
你可能有多个远程版本库。例如,如果你在GitHub上“fork”了一个项目,通常需要引用原始项目的远程版本库以及你自己的分支。假设你创建了 https://github.com/yourusername/someproject
作为 https://github.com/theoriginal/someproject
的分支。按照惯例,你会将引用原始版本库的远程版本库命名为 upstream
,而你自己的分支则为 origin
。如果你在GitHub上对自己的分支进行更改,并希望在本地获取这些更改,则需要使用 git fetch origin master
。如果 upstream
进行了更改,你需要在进行更多更改之前同步在本地更新版本库,那么你需要使用git fetch upstream master
。
--summary
不够用,可以使用 git diff --stat FETCH_HEAD
命令来获取更多信息。这将提供一些额外的信息。 - Randall不要执行 pull
操作:
fetch
操作(命令行与 git pull
相同,但不会自动合并)diff
merge
根据原帖作者的评论,他遇到的问题是Windows和Unix换行符导致的。您可以使用以下配置命令告诉git-diff忽略EOL代码的差异。
git config --global core.whitespace cr-at-eol
core.autocrlf
是另一个有用的设置,用于处理系统换行符差异。 - DylanYounggit diff remote/my_topic_branch my_topic_branch
。my_topic_branch
是你的主题分支。例如:git diff master origin/master
我曾经遇到过一个相关的问题,我想在合并GitHub PR之前快速了解更改的概述。
基本上,我只对知道PR中添加、修改或删除了多少文件感兴趣。这个PR有成千上万的更改,使得GitHub Web UI无用。
如果有人有类似的问题,请尝试在本地机器上执行以下操作:
按照 @HieroB 的建议,使用 git fetch origin branch
命令。这将获取远程分支的最新更改元数据,而不会在本地拉取所有这些更改。
使用命令 git diff --name-status FETCH_HEAD > difflog.txt
。Git 将创建一个列表,其中包含在远程分支中更改的所有文件,并将该列表保存到文件中。结果文件的结构如下:
M files/file1.json
D files/file2.json
A files/file3.json
其中,更改标记 M
表示“修改”,D
表示“删除”,A
表示“添加”。在每行中,其更改标记将与文件名用制表符分隔。
在文本编辑器中打开文件,复制每个更改标记以及它们相邻的制表符,并使用文本编辑器的“在文件中查找”功能搜索标记的出现。
需要记住的重要事项: Git diff 将显示两个提交分支(远程或本地)之间的差异。
步骤1)- 提交本地
因此,第一步是确保您已经提交了本地存储库。您可以运行 git status
查看是否有任何文件未提交。
如果您需要添加文件,请运行 git add {filename}
或者添加所有文件 git add .
。然后,您可以运行 git commit -m "message"
来提交您的本地文件。
步骤2)- 从远程获取您的分支
您可以使用 git fetch origin master
获取您的远程分支。如果您看到以下消息,则可以继续进行。
branch master -> FETCH_HEAD
git diff --summary FETCH_HEAD
或 git diff origin/master master --summary
来查看您的更改。