gpt4 book ai didi

Git 从浅克隆中查找自 以来修改过的文件

转载 作者:行者123 更新时间:2023-12-04 02:05:28 25 4
gpt4 key购买 nike

我在 CI 盒子上运行测试。为了加快速度,我只是在做一个浅层克隆:

git clone --depth 1 git@github.com:JoshCheek/some_repo.git

假设所有测试都通过,我想触发管道中的下一步。触发什么取决于在上次 d 部署(引用 d123456 )和我刚刚测试的 c 最新引用(引用代码 ojit)之间更改了哪些文件。如果我做了一个普通的克隆,我会发现是这样的:
git diff --name-only d123456 c123456

但是我的克隆很浅,所以它不知道那些提交。我看到我可以使用 c123456 来获取更多的历史记录,但我只知道 SHA,不知道 SHA 的深度。以下是一组大概可以回答这个问题的方法:
# hypothetical remote diff
git diff --name-only origin/d123456 origin/c123456

# hypothetical ref based fetch
git fetch --shallow-through d123456
git diff --name-only d123456 c123456

# hypothetical way to find the depth I need
depth=`git remote depth-to d123456`
git fetch --depth "$depth"
git diff --name-only d123456 c123456

否则,我似乎必须编写一个循环并继续调用 git fetch --depth=n 直到我的历史记录包含提交。这看起来很痛苦(意味着编写/维护很烦人)和昂贵(意味着缓慢,请记住浅克隆的目的是降低此成本)。

最佳答案

Otherwise it seems like I might have to write a loop and keep invoking --deepen until my history contains the commit. That seems painful ...



这很痛苦(而且很慢,正如您稍后注意到的那样)。

现代 Git(自 2.11 版起)确实有一个新的 git fetch选项:

--shallow-exclude=<revision>

    Deepen or shorten the history of a shallow repository to exclude commits reachable from a specified remote branch or tag. This option can be specified multiple times.


这个我没试过;目前尚不清楚它是否允许哈希 ID(测试使用名称),并且在任何情况下,您都将指定要深化的提交的父级,而不是要获取的提交。但这可能就足够了。

(我真的认为更好的方法是保留可以借用的引用克隆。)

关于Git 从浅克隆中查找自 <ref> 以来修改过的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43793887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com