如何在Git中比较本地更改和不同分支之间的差异?

5

我有一个仓库被检出到某个(未知的)标签上(目前没有在任何分支上)。并且有一些本地修改未保存到索引中。当我在文件上运行git diff时,它给我一些更改,但我不确定它们是关于哪个提交的。我想获取给定分支的最新差异。是否有一个git diff命令来实现这个功能?就像这样:

git diff myLocalFile myRemoteBranch
2个回答

5

要使用diff指定特定的文件,可以在命令末尾使用--

此外,您可以使用HEAD指针来指定当前位置,而不必指定标签。

示例:

git diff HEAD..myRemoteBranch -- relative/path/to/myLocalFile

或者,更简单地说:
git diff myRemoteBranch -- relative/path/to/myLocalFile

此外,如果你想要与“远程”分支进行比较,你应该使用一个remote来引用那个分支,例如:
git fetch # retrieve latest from server
git diff origin/myRemoteBranch -- relative/path/to/myLocalFile

我感到困惑,因为这似乎没有检测到任何更改,尽管有一些更改... 然而本地更改并未提交到索引。 - a1an
啊...你可能需要先commit,才能查看你的更改与另一个分支的差异。 我建议从当前位置创建一个新分支(get checkout -b myBranch),暂存(add),并提交(commit),然后使用diff命令查看更改。 - Jonathan.Brink
太好了!没有 HEAD.. 它会检测出与给定分支的更改。 - a1an
这并没有真正回答问题; 问题是如何在不提交/检查东西到索引的情况下完成。 - Atemu

0

Git内置了一个工具来完成这个任务:

git diff-index myRemoteBranch myLocalFile

默认情况下,它以“原始”格式输出,使用-p可以获得与git diff默认相同的补丁:

git diff-index -p myRemoteBranch myLocalFile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接