如何在Git中从一个分支交互式地检出文件到另一个分支

4
我有两个分支在我的仓库中,我会在分支之间来回编辑和合并变化。但在合并之前,我喜欢检查哪些变化正在被合并,哪些正在被替换,但是demo和master中有一些文件本质上是不同的,它们将永远如此。这就是为什么有2个不同的分支。所以我倾向于使用 git checkout --patch demo 将代码从demo分支拉到master分支。但是这会不必要地检查所有文件。
是否可能交互式地检出特定文件从两个分支,而不是检查整个分支? 关于Git的补丁方法的文档很少。我希望有人可以为我澄清这一点。

3
尝试使用命令 git checkout --patch demo -- path/to/file 对文件进行部分检出。 - poke
可以把这个作为一个答案添加上去,它能够正常工作...我之前没有加上--试过。 - Saras Arya
我认为你甚至不需要那个。这本来就是一个愚蠢的问题。不知何故它没有起作用。我应该把这个问题撤下吗? - Saras Arya
1
不,没关系,这个问题很好,将来可能仍然对某些人有帮助,所以就让它保留在那里吧 :) 我已经发布了一个答案。 - poke
1个回答

11

大多数与工作目录交互的 Git 命令都允许你限制命令作用的路径。通常在命令的末尾使用 -- 分隔符来指示。许多命令也可以接受没有分隔符的路径,但有时需要使用分隔符以避免路径和分支名称(或树状结构)之间的歧义。

因此,在您的情况下,您可以按照 git checkout 命令的概要中提到的方式使用它:

git checkout [-p|--patch] [<tree-ish>] [--] [<paths>…​]

运行git checkout --patch demo -- path/to/file应该可以满足你的需求,限制checkout命令只在该文件路径上工作,即使启用了--patch模式。

顺便提一下,path/to/file部分也可以是指向目录的路径,这将导致该命令作用于该目录中的所有文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接