协慌网

登录 贡献 社区

如何将单个文件的版本从一个 git 分支复制到另一个 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
  • 通配符不起作用,但相对路径可行
  • 可以指定多个路径

替代:

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

我在类似的搜索中结束了这个问题。在我的情况下,我希望从另一个分支中提取一个文件到当前工作目录,该目录与文件的原始位置不同。 答案

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

使用 checkout 命令怎么样:

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