我有两个完全合并的分支 .
但是,在完成合并之后,我意识到一个文件已经被合并搞砸了(其他人做了自动格式化,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.txt 和 mydir
myfile.txt
mydir
通配符不起作用,但相对路径可行
可以指定多个路径
替代:
git show commit_id:path/to/file > path/to/file
我在类似的搜索中结束了这个问题 . 在我的情况下,我希望从另一个分支中提取一个文件到当前工作目录,该目录与文件的原始位置不同 . Answer:
git show TREEISH:path/to/file >path/to/local/file
使用checkout命令怎么样:
git diff --stat "$branch" git checkout --merge "$branch" "$file" git diff --stat "$branch"
根据madlep的回答,您还可以使用目录blob从另一个分支复制一个目录 .
git checkout other-branch app/**
至于op的问题,如果你只改变了那里的一个文件,这将很好地工作^ _ ^
1)确保您在需要文件副本的分支机构中 . 例如:我想在master中使用子分支文件,因此你需要签出或者应该在master中 git checkout master
git checkout master
2)现在单独检查你想要从子分支到master的特定文件,
git checkout sub_branch file_path/my_file.ext
这里 sub_branch 表示您拥有该文件后跟您需要复制的文件名 .
sub_branch
5 回答
从您希望文件结束的分支运行此命令:
通用公式:
一些说明(来自评论):
使用提交哈希,您可以从任何提交中提取文件
这适用于文件和目录
覆盖文件
myfile.txt
和mydir
通配符不起作用,但相对路径可行
可以指定多个路径
替代:
我在类似的搜索中结束了这个问题 . 在我的情况下,我希望从另一个分支中提取一个文件到当前工作目录,该目录与文件的原始位置不同 . Answer:
使用checkout命令怎么样:
根据madlep的回答,您还可以使用目录blob从另一个分支复制一个目录 .
至于op的问题,如果你只改变了那里的一个文件,这将很好地工作^ _ ^
1)确保您在需要文件副本的分支机构中 . 例如:我想在master中使用子分支文件,因此你需要签出或者应该在master中
git checkout master
2)现在单独检查你想要从子分支到master的特定文件,
这里
sub_branch
表示您拥有该文件后跟您需要复制的文件名 .