使用 GIT 如何将不同提交中的文件签出到新分支中? [复制]

Posted

技术标签:

【中文标题】使用 GIT 如何将不同提交中的文件签出到新分支中? [复制]【英文标题】:Using GIT how do I checkout files from different commits into a new branch? [duplicate] 【发布时间】:2021-02-08 18:34:08 【问题描述】:

libidn2 的 punycode 测试在头部被破坏(仅 ASCII 的情况失败。)

我创建了一个新的 LOCAL 分支来尝试确定它上次工作的时间,但我需要从头部检查 idn2.h,以及 puny_encode.c、puny_decode.c、punycode.h 和 tests/test-punycode.c每个(可能)来自不同的提交!

我如何做到这一点并在我新创建的测试分支中获得所有这些?我通常使用 Mercurial,所以我不得不对我需要的每个 git 命令进行网络搜索,这越来越令人沮丧!

【问题讨论】:

您会在这里找到答案:How can I reset or revert a file to a specific revision?。 “我不得不对我需要的每个 git 命令进行网络搜索,这越来越令人沮丧!”并且为每个 git 命令询问 Stack Overflow 更好吗?说真的,我认为最好的方法是暂停十五到二十分钟,了解一下 git。 【参考方案1】:

在最方便的地方创建一个分支,然后从其他分支/修订中签出单个文件

git checkout -b new-branch starting-point # starting point can be a branch or revision
git checkout branch1 -- file1 file2
git checkout branch2 -- file3 file4

您要拉入当前位置的分支/文件之间没有历史关系,所以您知道....您可能已经手动编辑了这些文件,以便在将它们从其他分支中获取后得到它们的方式, 对 git 来说没有区别。

【讨论】:

以上是关于使用 GIT 如何将不同提交中的文件签出到新分支中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将所有项目签出到某个分支

如何将文件从主分支推送到另一个分支?

在不签出的情况下将文件提交到不同的分支

在 Jenkins 中,如何将项目签出到特定目录中(使用 GIT)

将多个 git 存储库签出到同一个 Jenkins 工作区

从一个分支签出到另一个分支时,Pycharm“保持更改”? [复制]