如何在Git中以交互方式将文件从一个分支签出到另一个分支

如何在Git中以交互方式将文件从一个分支签出到另一个分支,git,git-checkout,Git,Git Checkout,我的回购协议中有两个分支,我不断地来回编辑,并将一个分支的更改合并到另一个分支。但在合并之前,我喜欢检查哪些更改被合并,哪些更改被替换为什么,但demo和master中很少有本质上不同的文件,而且它们总是不同的。这就是为什么有两个不同的分支。所以我倾向于使用git checkout--patch demo将代码从demo分支拉到master中。但这不必要地检查所有文件。 我是否可以从两个分支以交互方式签出特定的文件,而不是检查整个分支? 关于Git上补丁方法的文档很少。我希望有人能帮我澄清这一点

我的回购协议中有两个分支,我不断地来回编辑,并将一个分支的更改合并到另一个分支。但在合并之前,我喜欢检查哪些更改被合并,哪些更改被替换为什么,但demo和master中很少有本质上不同的文件,而且它们总是不同的。这就是为什么有两个不同的分支。所以我倾向于使用
git checkout--patch demo
将代码从demo分支拉到master中。但这不必要地检查所有文件。
我是否可以从两个分支以交互方式签出特定的文件,而不是检查整个分支?
关于Git上补丁方法的文档很少。我希望有人能帮我澄清这一点。

大多数与工作目录交互的Git命令都允许您将命令限制在特定路径。这通常在命令末尾完成,用分隔的
--
表示。许多命令也接受没有分隔符的路径,但有时为了避免路径和分支名称(或树ISHE)之间的歧义,需要使用分隔符

因此,在您的情况下,您可以使用以下内容:

git签出[-p|--patch][[-][]…​]
运行
git checkout--patch demo--path/to/file
应该适合您的情况,将checkout命令限制为仅在该文件路径上工作,即使在活动的
--patch
模式下也是如此


顺便说一句,
path/to/file
部分也可以是一个目录的路径,这将使该命令对该目录中的所有文件运行。

试试
git checkout--patch demo--path/to/file
它可以工作…你能把它作为一个答案添加进来吗。我在没有
--
的情况下尝试了,我认为你甚至不需要它。这是一个愚蠢的问题首先是d问题。不知怎么的,它不起作用。我应该记下这个问题吗?不,很好,这个问题很好,可能对将来的人仍然有帮助,所以就把它放在那里:)我已经发布了答案
git checkout [-p|--patch] [<tree-ish>] [--] [<paths>…​]