如何使用git在当前分支中从另一个分支检出文件到一个新文件?

5
假设我在主分支的HEAD上有一个名为core.clj的文件,与其他分支的HEAD上的core.clj不同,而我当前在其他分支。 我想将主分支的core.clj检出到当前分支,并使用其他文件名(例如tmp.clj)进行比较。如何实现?

这个问题不是真正的问题。你正在询问解决问题的方法,但问题是什么?你要解决的任务是什么? - kan
3个回答

7
您可以使用git show master:core.clj查看该文件。将其重定向到新文件中(git show ... > temp.clj)以便进一步处理。

1

您不需要这样做;git diff 将会完全满足您的需求。 git diff master otherbranch core.clj 是该命令的基本用法,如果您需要更多帮助,可以查看 man git-diff 获取更多解释。


当然,通常差异比较就足够了。但是,假设有一个格式化灾难使得差异比较无法理解。那么有没有一种方法可以完成上述任务呢? - James Atwood
@JamesAtwood 除了手动从分支中复制文件外,我不知道还有什么其他方法。不过,也许会有其他人想出我没有想到的答案,所以... - Jeremy Rodi
明白了。谢谢你抽出时间来。 - James Atwood

1

很简单:

 git checkout master -- core.clj

1
然而,这并不会将其保存为另一个名称,就像 OP 希望的那样 - 相反,它会覆盖您当前的文件,并创建一个未暂存的更改,使当前分支版本的文件看起来像 master 上的版本。 - twalberg
嗯,没错,这个问题很模糊。不过,当你有未暂存的更改时,可以使用标准工具查看更改。 - kan
twalberg,我想指出你是正确的 - 我想将文件保存为另一个名称。 - James Atwood

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