Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gitlab-CI中的分支与头之间的Git差异_Git_Gitlab_Gitlab Ci_Git Diff - Fatal编程技术网

Gitlab-CI中的分支与头之间的Git差异

Gitlab-CI中的分支与头之间的Git差异,git,gitlab,gitlab-ci,git-diff,Git,Gitlab,Gitlab Ci,Git Diff,我试图获得一个文件列表,这些文件在执行Gitlab CI管道的分支和远程源(称为main)上的分支之间是不同的 我知道当gitlab CI管道运行时,它会克隆特定的分支,看起来它会剥离所有远程源和分支 因此,我执行一个git fetch来检索远程分支,这将使我成为main(origin/main) 但从那以后,我尝试了git-diff、git-diff-tree、git-diff-merge-base的每一种组合,结果一无所获 有人有什么建议吗?我不明白你的定义的确切含义,但我认为你在寻找: g

我试图获得一个文件列表,这些文件在执行Gitlab CI管道的分支和远程源(称为main)上的分支之间是不同的

我知道当gitlab CI管道运行时,它会克隆特定的分支,看起来它会剥离所有远程源和分支

因此,我执行一个git fetch来检索远程分支,这将使我成为main(origin/main)

但从那以后,我尝试了git-diff、git-diff-tree、git-diff-merge-base的每一种组合,结果一无所获


有人有什么建议吗?

我不明白你的定义的确切含义,但我认为你在寻找:

git diff --name-only origin/main HEAD
或:

git diff --name-only origin/main...HEAD # 3 dots

也许对于
--name status
而不是
--name only

,您能更准确地解释一下“执行Gitlab CI管道的分支与远程源(称为main)上的分支不同的文件列表”的意思吗?您的CI系统可能设置为创建一个分支,浅克隆。这意味着您没有其他提交。使用<代码> Git FETCH 可以解决问题,但也应该考虑更改CI系统以使用完整的克隆。不管你怎么做,都会有折衷办法。@torek,实际上我就是这么做的,git fetch解决了这个浅层克隆。Gitlab CI显然在创建管道时没有完成我发现的完整克隆。因此,我在管道语句的顶部添加了git fetch。@LeGEC,基本上,我的最终目标是获得此分支中已更改的文件列表,与生产中的主分支相比。您可以撤消浅分支和单分支克隆,但它需要的不仅仅是一个
git fetch
:请参阅。这就是为什么我建议首先找到一种方法让CI系统进行完整克隆:这可能更简单。一般来说,“差异”绝对是你的第一选择。第二个是其他的东西,比如“来源/来源”中的“来源/来源”和“来源/来源”中的“来源和来源”之间的差异“分支。也许在这种情况下,它们会产生相同的结果,但使用第一个在语义上更正确。我来试试这个,很难记住我尝试过的具体内容。因为我可能可以通过git fetch来解析浅层克隆,并通过这种方式进行git diff,因为本地分支认为它是头部?好的,所以请继续搜索@LeGEC是正确的。缺少的是关于删除浅克隆的评论。一旦我做到了,并且使用了第二行,我就得到了我所需要的。非常感谢。