我正在一个Git分支上工作,它有一些损坏的测试,我想从另一个已经修复的分支中提取(合并更改,而不仅仅是覆盖)这些测试。

我知道我能做到

git pull origin that_other_branch

但这将尝试合并许多其他文件,为此我还没有准备好。

是否可能只从另一个分支中提取并合并指定的文件(而不是所有文件)?

这不是Git对一个文件的pull request的副本,因为这个问题的所有答案都是如何在不更改任何分支的情况下将本地更改的文件恢复到存储库版本。


当前回答

这是我在研究这个问题时想到的一个稍微简单的方法:

git fetch {remote}
git checkout FETCH_HEAD -- {file}

其他回答

git checkout master -- myplugin.js

Master =分支名称 Myplugin.js =文件名

这是我在研究这个问题时想到的一个稍微简单的方法:

git fetch {remote}
git checkout FETCH_HEAD -- {file}

@Mawardy的回答对我有用,但我的更改是在远程上进行的,所以我必须指定原点

git checkout origin/master -- {filename}

你可以通过这种方式获取并签出一个文件:

git fetch
git checkout -m <revision> <yourfilepath>
git add <yourfilepath>
git commit

关于git checkout命令:

<revision>——分支名称,即origin/master <yourfilepath>不包括存储库名称(您可以从GitHub上的文件页面上单击复制路径按钮获得),即README.md

为了用来自其他repo或分支的文件覆盖本地文件,命令是…

git checkout remoteName/branchName filePath

这是我之前用过的一个例子……

git checkout origin/master package-lock.json