标签: git-diff-tree

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

是否有一个我可以使用的Git命令,它将列出一个分支中存在的另一个分支中不存在的所有文件的名称?

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

git git-diff git-branch git-diff-tree

9
推荐指数
1
解决办法
1541
查看次数

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

我使用以下Git命令

git diff-tree --no-commit-id --name-only -r <SHA>
Run Code Online (Sandbox Code Playgroud)

获取已更改文件的列表.

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

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

git git-diff-tree git-plumbing

5
推荐指数
2
解决办法
1万
查看次数

打印不相似的百分比

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

yes | head -256 > pa.txt
git add .
git commit -m qu
truncate -s128 pa.txt
yes n | head -64 >> pa.txt
git commit -am ro
Run Code Online (Sandbox Code Playgroud)

结果:

[master 79b5658] ro
 1 file changed, 128 insertions(+), 256 deletions(-)
 rewrite pa.txt (75%)
Run Code Online (Sandbox Code Playgroud)

但是,对于较小的更改,这不会发生:

yes | head -128 > pa.txt
git add .
git commit -m qu
truncate -s64 pa.txt
yes n | head -32 >> pa.txt
git commit -am ro
Run Code Online (Sandbox Code Playgroud)

结果:

[master 88ef937] ro
 1 file changed, 32 insertions(+), 96 …
Run Code Online (Sandbox Code Playgroud)

git git-diff git-commit git-diff-tree

5
推荐指数
1
解决办法
561
查看次数

如何在 jenkins 中针对 master 分支运行 git diff-tree?

我希望能够看到在 jenkins 构建期间哪些文件在我的当前分支和主分支之间发生了变化。

在我的 jenkinsfile 中,我有以下代码。

git diff-tree -r --no-commit-id --name-only ${env.GIT_COMMIT} origin/master
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

致命:模棱两可的参数“master”:未知版本或路径不在工作树中。

任何帮助将不胜感激..如果有人能告诉我我做错了什么或设计一个替代解决方案,它将为我提供已更改文件的文件路径,那就太好了。

仅供参考,上述命令在本地有效,但在 jenkins 中无效。

git groovy jenkins git-diff-tree jenkins-pipeline

4
推荐指数
1
解决办法
3894
查看次数

为什么 git diff-tree show 总是显示重命名为添加和删除

在两次测试提交中,第一个只有操作git mv file moved_file,第二个只有操作mv moved_file moved_again_file && git add -A moved_file moved_again_file,两者都在提交之前显示为重命名git status,但在git commit --verbose它们中显示为新文件和已删除文件。

我期望git diff-tree HEAD在每次提交后显示一个R(重命名)状态,但我不断得到两个: anA和 a D

我正在尝试编写一个脚本,该脚本将根据文件状态执行操作,但如果它们始终显示为添加/删除,我无法正确规划R(或)状态。C

Git 的版本是 1.8.3.1(如果有区别的话)。

git git-diff git-diff-tree

2
推荐指数
1
解决办法
849
查看次数