216

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

我知道我能做到

git pull origin that_other_branch

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

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

这不是仅针对一个文件的 Git 拉取请求的副本,因为该问题的所有答案都是如何在不更改任何分支的情况下将本地更改的文件还原为存储库版本。

4

5 回答 5

255

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

git fetch {remote}
git checkout FETCH_HEAD -- {file}
于 2014-08-22T22:50:51.310 回答
200

您可以通过这种方式获取然后仅签出一个文件:

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

关于git checkout命令:

  • <revision>-- 一个分支名称,即origin/master
  • <yourfilepath>不包括存储库名称(您可以通过单击copy pathGitHub 上文件页面上的按钮获得),即README.md
于 2013-04-26T07:24:51.110 回答
45
git checkout master -- myplugin.js

master = 分支名称

myplugin.js = 文件名

于 2018-06-26T14:34:36.880 回答
32

@Mawardy 的回答对我有用,但我的更改是在遥控器上,所以我必须指定来源

git checkout origin/master -- {filename}
于 2019-02-03T18:19:22.403 回答
1

是的,流程如下:

# Navigate to a directory and initiate a local repository
git init        

# Add remote repository to be tracked for changes:   
git remote add origin https://github.com/username/repository_name.git

# Track all changes made on above remote repository
# This will show files on remote repository not available on local repository
git fetch

# Add file present in staging area for checkout
git check origin/master -m /path/to/file
# NOTE: /path/to/file is a relative path from repository_name
git add /path/to/file

# Verify track of file(s) being committed to local repository
git status

# Commit to local repository
git commit -m "commit message"

# You may perform a final check of the staging area again with git status
于 2019-07-08T07:54:09.330 回答