如何在 Git 中以交互方式将文件从一个分支检出到另一个分支
How to interactively checkout a file from one branch to another in Git
我的存储库中有两个分支,我从中不断来回编辑并将一个分支的更改合并到另一个分支。但在合并之前,我喜欢检查正在合并哪些更改以及哪些内容正在被什么替换,但是 demo 和 master 中很少有文件本质上彼此不同,而且它们将永远存在。这就是为什么有 2 个不同的分支。所以我倾向于使用 git checkout --patch demo
将代码从 demo 分支拉入 master。但这会不必要地检查所有文件。
我是否可以交互地从 2 个分支中检出 specific 文件,而不是检查整个分支?
Git 上有关补丁方法的文档非常少。我希望有人能帮我解决这个问题。
大多数与工作目录交互的 Git 命令允许您将命令限制在特定路径。这通常在命令末尾完成,由分隔符 --
表示。许多命令也接受没有分隔符的路径,但有时这是必要的,以避免路径和分支名称(或树形)之间的歧义。
所以在你的情况下,你可以使用the synopsis of the git checkout
command中提到的这个:
git checkout [-p|--patch] [<tree-ish>] [--] [<paths>…]
运行 git checkout --patch demo -- path/to/file
应该适用于您的情况,以限制结帐命令仅在该文件路径上工作,即使在活动 --patch
模式下也是如此。
顺便说一句,path/to/file
部分也可以是目录的路径,这将为该目录中的所有文件生成命令 运行。
我的存储库中有两个分支,我从中不断来回编辑并将一个分支的更改合并到另一个分支。但在合并之前,我喜欢检查正在合并哪些更改以及哪些内容正在被什么替换,但是 demo 和 master 中很少有文件本质上彼此不同,而且它们将永远存在。这就是为什么有 2 个不同的分支。所以我倾向于使用 git checkout --patch demo
将代码从 demo 分支拉入 master。但这会不必要地检查所有文件。
我是否可以交互地从 2 个分支中检出 specific 文件,而不是检查整个分支?
Git 上有关补丁方法的文档非常少。我希望有人能帮我解决这个问题。
大多数与工作目录交互的 Git 命令允许您将命令限制在特定路径。这通常在命令末尾完成,由分隔符 --
表示。许多命令也接受没有分隔符的路径,但有时这是必要的,以避免路径和分支名称(或树形)之间的歧义。
所以在你的情况下,你可以使用the synopsis of the git checkout
command中提到的这个:
git checkout [-p|--patch] [<tree-ish>] [--] [<paths>…]
运行 git checkout --patch demo -- path/to/file
应该适用于您的情况,以限制结帐命令仅在该文件路径上工作,即使在活动 --patch
模式下也是如此。
顺便说一句,path/to/file
部分也可以是目录的路径,这将为该目录中的所有文件生成命令 运行。