gpt4 book ai didi

git - 如何从git中的提交ID中提取提交文件?

转载 作者:行者123 更新时间:2023-12-05 05:07:50 27 4
gpt4 key购买 nike

我想在提交前和提交后仅使用一个提交 ID 提取提交文件。有什么方法可以提取这个吗?

commit 471d4d60dc21fbccb8c6b4616a00238c245f78f6
Author: Gilles Sadowski <gilles@harfang.homelinux.org>
Date: Mon Oct 28 01:51:42 2019 +0100

MATH-1500 (unit tests).
src/test/ ... linalg/FieldLUDecompositionTest.java

commit 9988a5b3c4779eadfad9ea0c4925f5b327317814
Author: Gilles Sadowski <gilles@harfang.homelinux.org>
Date: Sun Oct 27 15:11:56 2019 +0100

Code upgraded following MATH-1500.
src/main/... nonstiff/AdamsNordsieckTransformer.java

在这种情况下,我想在提交之前和提交之后提取文件名“FieldLUDecompositionTest”,仅使用一个提交 ID,即“471d4d60dc21fbccb8c6b4616a00238c245f78f6”

最佳答案

从提交中提取/恢复文件的正确方法是,在 Git 2.23+(2019 年 8 月)中使用 git restore ( less confusing than git checkout )

git restore <SHA1>

从那个旧的提交中只恢复一个特定的文件:

git restore <SHA1> -- path/to/file

默认情况下,这只会更新您的工作树。


获取 previous SHA1 很容易:

471d4d60dc21fbccb8c6b4616a00238c245f78f6~

Git 下一个 SHA1 更复杂:参见“How do I find the next commit in git? (child/children of ref)”:

git log --format=%H --reverse --ancestry-path ${1:-HEAD}..${2:\"$(git rev-parse --abbrev-ref HEAD)\"} | head -1

更多信息 torek's answer )

git rev-list --topo-order --ancestry-path --reverse <id1>...<id2> | head -1

所以你可以制作一个脚本来获取给定提交的父项和子项,并使用 git restore 来获取/查看这些提交的文件。

关于git - 如何从git中的提交ID中提取提交文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58797406/

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