问题标签 [git-diff-tree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
21167 浏览

git - 获取特定 Git 提交的更改文件列表及其状态

我使用以下 Git 命令

获取已更改文件的列表。

不幸的是,该列表没有指定每个文件的更改类型:添加、修改或删除......等等

如何在特定提交的给定 SHA 中显示更改列表 [更改类型、文件名]。

0 投票
1 回答
446 浏览

git - 从 git diff-tree 中排除文件

我执行命令:

从结果中我创建了 zip 存档。

如何从上述命令生成的结果中排除特定文件?

0 投票
2 回答
1051 浏览

git - 如何在 git 中区分树和远程分支?

我需要区分 git 中的两个对象。一个是我工作目录中的树(目录),另一个是远程分支。如果我找到树的 SHA 并将其与远程分支一起用于我的 git diff 命令的参数中,我可以这样做。但是,我正在尝试找到一种不必先挖掘 SHA 的方法。

因此,例如,如果:

然后我希望能够发出这样的问题:

如果我将 Dir1 替换为它的 SHA,则此方法有效,但如果我只是尝试使用目录名称,则此方法无效。我也尝试过使用差异树。但这也无济于事。请注意,remote_branch/master 没有 Dir1 目录。

任何帮助表示赞赏。

提前致谢。

0 投票
1 回答
2321 浏览

git - 在Git中,如何列出分支A中存在但分支B中不存在的所有文件

我可以使用一个 Git 命令来列出一个分支中存在但另一个分支中不存在的所有文件的名称吗?

背景:有人删除了一些历史记录,然后推送了 origin/master。一些团队成员一直在说他们丢失了一些文件。我想我已经使用从 diff 命令创建的补丁恢复了丢失的文件。在删除历史记录后,我将 master 分支,并将我的补丁应用到新分支。现在我想简单地看看新分支中存在哪些文件在主分支的 HEAD 中不存在。现在我只想要文件名,而不管内容如何,​​并且只需要新分支中存在且不存在于 master 的 HEAD 中的文件。

0 投票
2 回答
1666 浏览

git - git show -- 输出只显示摘要

我在使用所有显示存储库日志/历史记录的 git 命令时遇到问题。此问题仅限于我的一个存储库。我还有其他几个工作得很好。

对于有问题的仓库,我只看到提交的摘要,其中默认行为也是显示差异。

同样,git diff-tree命令适用于除此之外的所有 repos。

正常回购:

回购有问题:

0 投票
2 回答
891 浏览

git - 错误:GIT 合并后编码 UTF8 的不可映射字符

在又一次 git pull 之后,我的项目停止了构建,并带有一堆消息:

这些消息指向在某些文件标题中找到的版权符号。还有更多具有相同符号的文件,但它们似乎编译得很好。在二进制编辑器中查看时,好的显示为:

C2 A9

虽然不好

A9

在 vim 中查看时,两者都显示为 © (<©> 169, Hex 00a9, Octal 251),但 IntelliJ Idea 将坏的显示为菱形。

所以我决定我在合并时弄乱了一些东西(拉后有合并冲突),然后去看看哪些文件发生了变化

但它不会产生任何结果。也没有发现上一次提交的更改。日志如下所示:

当我做 git checkout 0dfc19850b2e31d72c1d2923321430e8fc1b53cb 一切编译正常。

所以问题是:我该如何解决它?

通过修复,我的意思是了解发生了什么并重新应用拉取更改(也许),这样我就不必将与此修复相关的任何内容提交到上游存储库中。

似乎不好的是 UTF-16 (0x00A9) 而好的是 UTF-8 - (0xC2 0xA9)。什么可能改变了它?

构建系统是 maven,但它与裸 javac 在复制和缩小文件上报告的相同错误无关。操作系统是 ubuntu 15.10,语言环境是这样说的:

java-版本:1.8.0_66。

非常感谢任何帮助!

PS:尝试了所有 --diff-algorithm={patience|minimal|histogram|myers} - git-diff-tree 仍然没有发现任何变化

PS:git reset --hard HEAD~1, git pull origin developemnt从命令行发出没有帮助,所以与Idea无关。

0 投票
2 回答
1458 浏览

git - 打印差异百分比

有时,当您彻底更改文件时,它会触发重写:

结果:

但是,较小的更改不会发生这种情况:

结果:

我可以运行一个命令来显示百分比变化而不考虑数量吗?我查看了git diff-tree,但它似乎只显示变化剧烈的时候。

0 投票
2 回答
798 浏览

git - 如何从“git diff-tree --stdin”获取任何输出?

的手册页git diff-tree建议我可以--cc用我选择的一堆树对象来组合 diff ()。您必须为此使用该--stdin选项。但我根本无法--stdin输出任何东西。

例子:

在这里我输入a<Space>b<Enter>Ctrl-D:它甚至没有抱怨a并且b是错误的输入......但即使使用有效的提交哈希和/或其他选项,我也永远不会得到任何输出。

我究竟做错了什么?

0 投票
2 回答
1822 浏览

git - 需要获取两个 Git 提交之间的所有文件差异(添加、修改、重命名)

我正在尝试导出两个提交之间存在差异的所有文件,这些差异是:

  • 新文件(添加)
  • 修改文件
  • 重命名文件
  • 如果可能,有关任何已删除文件的信息

检测重命名可能是一项艰巨的任务,因为我将在Windows 7环境中进行导出,因此somefile.phpSomeFile.php; 但我会将它们上传到*nix环境,该环境确实将这些文件视为不同的,因此如果可能,需要识别和导出它们。

我正在使用以下命令:

但是我注意到它没有导出新/添加的文件,也没有导出重命名的文件;然后我发现git diff-tree默认情况下不进行重命名检测,所以从我所看到的我需要添加--find-renames到命令中?

0 投票
3 回答
1140 浏览

git - 如何列出添加到 GIT 存储库的第一次提交的所有文件?

当前状态:我git diff-tree -r HASH用来在特定提交中列出所有添加、修改和删除的文件。这一直有效到今天。

问题:我想在我的第一次提交中列出所有添加的文件,但是将第一个 HASH 作为参数传递是行不通的。为什么?

主要问题:如何获取第一次提交中添加的所有文件的列表?