如何将单个文件的版本从一个git分支复制到另一个?

我有两个分支完全合并在一起。

但是,合并完成后,我意识到一个文件已经被合并搞乱了(其他人做了一个自动格式,gah),并且在另一个分支中转换到新版本会更容易,然后重新插入我的一行更改后,把它放到我的分支。

那么git最简单的方法是做什么呢?

从你想要文件结束的分支运行它:

git checkout otherbranch myfile.txt 

通用公式:

 git checkout <commit_hash> <relative_path_to_file_or_dir> git checkout <remote_name>/<branch_name> <file_or_dir> 

一些笔记(来自评论):

  • 使用提交哈希,你可以从任何提交拉文件
  • 这适用于文件和目录
  • 覆盖文件myfile.txtmydir
  • 通配符不起作用
  • 但相对path呢

替代:

 git show commit_id:path/to/file > path/to/file 

我在类似的search结果这个问题。 在我的情况下,我正在寻找从另一个分支提取文件到当前的工作目录是不同于文件的原始位置。 答 :

 git show TREEISH:path/to/file >path/to/local/file 

如何使用结帐命令:

  git diff --stat "$branch" git checkout --merge "$branch" "$file" git diff --stat "$branch" 

在madlep的答案之后,你也可以从目录blob复制另一个分支的一个目录。

 git checkout other-branch app/** 

至于操作的问题,如果你只改变了一个文件,这将工作正常^ _ ^

1)确保你在分支上你需要的文件的副本。 例如:我希望子分支文件中的主人,所以你需要签出或应该在主git checkout master

2)现在结帐特定的文件,你想从子分支到主,

 git checkout sub_branch file_path/my_file.ext 

这里sub_branch意味着你有那个文件后跟你需要复制的文件名。