新闻详情

新闻详情

首页 / 资讯中心 / 详情

30 seconds of code:用 `git checkout` 将文件从其他 Git 分支复制到当前分支

发布时间:2026/10/1 2:40:39来源:尧图网络
30 seconds of code:用 `git checkout` 将文件从其他 Git 分支复制到当前分支
教程文档【免费下载链接】30-seconds-of-codeCoding articles to level up your development skills项目地址https://gitcode.com/gh_mirrors/30/30-seconds-of-code点击查看免费下载本篇技术指南围绕 30 seconds of code 仓库中的 Git 技巧文章 copy-file-from-branch 展开系统讲解如何使用git checkout branch pathspec这一命令形态将单个文件、多个文件乃至整个目录从其他分支复制到当前分支。读完本文你将掌握 pathspec 的用法边界、与git cherry-pick的取舍以及多个可直接复制的真实命令示例并了解仓库内与之配套的分支管理、恢复文件、路径筛选等系列技巧。场景为什么需要从另一个分支复制文件在日常开发中经常会遇到某个文件在另一个分支上已经写好但当前分支也需要这份内容的情况。例如你在patch-1分支上调试出一个关键的配置文件而patch-2分支恰好需要它或者dev分支上有一批已经稳定下来的工具函数你希望把它们带进当前的功能分支。对于这类需求cherry-pick 是一种常见的思路——它能把某个提交引入的变更整体移植到当前分支。但它有两个天然的局限它以提交为单位粒度较粗无法只挑选一个提交中的某个文件它会把提交的完整变更可能包含多个文件的改动应用到当前分支容易夹带不想要的修改。而git checkout的另一种用法可以更精准地解决这个问题直接把指定分支中的某个路径文件或目录原样复制到当前分支不涉及提交历史粒度精确到路径级。核心命令git checkout branch pathspec大多数人只把git checkout当作切换分支的命令来用对应的用法详见仓库中的 switch-to-branch 一文。但该命令的能力远不止于此# Usage: git checkout branch pathspec当命令中同时给出分支名与路径时Git 会从指定分支取出该路径下的内容并将其写入当前分支的工作区同时更新暂存区。命令末尾的pathspec是路径匹配规则它接受具体的文件名也接受目录还支持 glob 通配符因此可以一次复制多个文件。复制单个文件原文档给出的第一个示例是复制单个文件git checkout patch-2 git checkout patch-1 30seconds.txt # patch-2 分支现在包含了来自 patch-1 分支的 30seconds.txt 文件这里先用git checkout patch-2切换到目标分支再执行git checkout patch-1 30seconds.txt把patch-1分支上的30seconds.txt复制到当前所在的patch-2分支。文件名加上引号是为了避免特殊字符被 shell 提前展开属于稳妥的书写习惯。复制整个目录多个文件当需要复制的文件不止一个时pathspec支持目录与通配符。原文档的第二个示例演示了整目录复制git checkout patch-3 git checkout dev src/* # patch-3 分支现在包含了来自 dev 分支的 src 目录的全部内容这里src/*表示dev分支上src/目录下的所有条目都会被复制到当前分支。同样的路径规则也贯穿于仓库内其他技巧中例如find-matching-files 使用git grep pattern -- pathspec将搜索范围限定在特定文件扩展名或目录stage-unstage-files 使用git add pathspec按文件名或 glob 精确控制暂存内容restore-deleted-file 使用git checkout commit^ -- pathspec从历史提交中恢复被删除的文件。由此可见pathspec 是 Git 中贯穿筛选、复制、恢复、暂存等操作的一等公民语法掌握了它多个命令的威力都会显著提升。深入理解 pathspec 的取值与边界支持的形态pathspec可以取以下形态由原文档与仓库内其他文章共同佐证形态含义参考示例具体文件名精确复制单个文件git checkout patch-1 30seconds.txt目录路径复制目录下全部内容git checkout dev src/*glob 通配符按模式匹配多个文件git checkout dev src/*.json参照 stage-unstage-files 中的同名写法行为要点覆盖语义复制操作会直接以来源分支的文件内容覆盖当前分支工作区中同路径的文件。如果当前分支对该路径存在未提交的本地修改这些修改会被覆盖且这一过程较难撤销执行前应先通过 view-status 之类的方式确认工作区状态。暂存区联动git checkout branch pathspec复制来的内容会同时进入暂存区随后的git commit即可直接提交提交相关操作可参考 create-commit。分支引用形式branch也可以是其他可解析为提交的引用例如HEAD~1、某个具体提交哈希这使该命令还能用于从上一个提交捞回文件等场景与 restore-deleted-file 的思路一脉相承。关于--分隔符当文件路径与分支名可能产生歧义时可以在分支后、路径前插入--分隔符例如git checkout patch-1 -- 30seconds.txt--之后的参数一律被解释为路径而非分支名这在文件名恰好与分支名相同或包含特殊字符时尤为重要。仓库内 restore-deleted-file 一文中的git checkout 3050fc0de^ -- 30seconds.txt正是这一约定的标准写法可互为印证。完整实战从设计分支搬运资源到功能分支综合以上要点一次典型的从其他分支复制文件完整流程如下# 1. 查看当前分支与工作区状态确认没有未提交的本地改动会被覆盖 git status # 2. 切换到目标分支用 git switch 亦可见 switch-to-branch 一文 git checkout patch-2 # 3. 从 patch-1 复制单个文件到当前分支 git checkout patch-1 -- 30seconds.txt # 4. 从 dev 复制整个 src 目录到当前分支 git checkout dev -- src/* # 5. 检查复制结果并提交 git status git commit -m Copy files from patch-1 and dev branches需要特别提醒的是第 1 步由于该命令是直接覆盖务必在复制前确认当前分支对应路径没有未保存的修改这是使用本技巧时最容易踩的坑。与相关技巧的配合与取舍从仓库的 Git 收藏集 Git Branch Articles 可以看出分支操作是一个完整的知识体系本文的技巧可以与多条相邻文章组合使用若目标分支尚未创建先参考 create-branch 完成创建若需要把某个提交的完整变更整体搬移而非逐文件复制则应改用 pick-commits 中的git cherry-pick若需求是从历史提交中找回被误删的文件参考 restore-deleted-file 的git checkout commit^ -- pathspec若只想查看两侧分支的差异再决定复制哪些文件可用 difference-between-branches 先行对比。小结git checkout branch pathspec是 Git 中按路径搬运文件的经典手段它比git cherry-pick粒度更细、目标更明确且天然支持目录与通配符一次可以复制一批文件。使用时只需牢记三点先切到目标分支、用--分隔路径与分支名、复制前确认工作区干净。结合仓库内 copy-file-from-branch、switch-to-branch、restore-deleted-file 等文章你可以在 30 seconds of code 的 Git 知识体系中快速搭建起完整的分支文件管理能力。赞分享教程文档【免费下载链接】30-seconds-of-codeCoding articles to level up your development skills项目地址https://gitcode.com/gh_mirrors/30/30-seconds-of-code点击查看免费下载相关推荐30-seconds-of-code 教程使用 git rev-parse --abbrev-ref HEAD 获取 Git 当前分支名30 seconds of code 教程使用 git rev parse abbrev ref HEAD 获取 Git 当前分支名 git rev pars教程文档30 seconds of code用 git branch --contains 查找包含指定提交的 Git 分支30 seconds of code用 git branch contains 查找包含指定提交的 Git 分支 提交commit是 Git 中追踪仓库变教程文档30 Seconds of Code使用 git diff 对比两个 Git 分支之间的差异30 Seconds of Code使用 git diff 对比两个 Git 分支之间的差异 导读 在日常开发中比较两个分支之间的改动是最频繁的 Git 操教程文档上一篇WeChatMsg微信聊天记录导出与年度报告生成实践指南下一篇Thunderbird for Android 组件化架构解析Thunderbird Mobile Components 与 Bolt 设计系统集成指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Linux ps命令详解:从PID到进程状态,彻底搞懂进程管理 2026/10/1 4:26:06

Linux ps命令详解:从PID到进程状态,彻底搞懂进程管理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
SIFTflow 实战:从 mex 编译到稠密光流可视化全链路拆解 2026/10/1 4:26:00

SIFTflow 实战:从 mex 编译到稠密光流可视化全链路拆解

简介:该资源是SIFT Flow算法的官方演示代码包,面向从事计算机视觉、图像匹配与密集对应研究的学生和科研人员,用于复现场景级稠密通信实验,对应TPAMI 2010论文成果。包内共42个文件,以h头文件、m脚本、cpp源码为主&…

阅读更多 →
Miniconda与pip换清华镜像源:解决Python环境下载慢与安装失败的完整指南 2026/10/1 4:26:00

Miniconda与pip换清华镜像源:解决Python环境下载慢与安装失败的完整指南

1. 为什么折腾了半天,问题还是出在"源"上先讲个真实经历。早些年我在国内一台新电脑上装Python环境,敲下pip install numpy,然后看着进度条在"Downloading"那里一动不动,十几分钟后直接超时报错ReadTimeoutEr…

阅读更多 →
NVIDIA AI for Media 实战:GPU 加速实时视频分析管线搭建 2026/10/1 4:26:00

NVIDIA AI for Media 实战:GPU 加速实时视频分析管线搭建

1. 从一条标题说起:NVIDIA AI for Media 到底在解决什么问题广播和体育直播这行,过去十几年最大的变化不是摄像机变清晰了,而是“实时”这两个字的门槛被不断拉高。以前导播切一个机位,画面出来就行;现在观众要的是多角…

阅读更多 →
CrewAI多智能体协作实战:从零搭建技术调研报告生成器 2026/10/1 4:26:00

CrewAI多智能体协作实战:从零搭建技术调研报告生成器

多智能体框架这两年是真的火,但大部分中文资料要么停留在概念科普,要么一上来就甩一堆英文文档链接,真正能让人从零跑通一个多智能体协作项目的教程少得可怜。CrewAI 这个项目在开源社区拿到 5.9 万 Star 不是没有原因的——它把多智能体协作…

阅读更多 →
vxe-table 可编辑表格实战:增删改查与必填校验完整指南 2026/10/1 4:25:59

vxe-table 可编辑表格实战:增删改查与必填校验完整指南

1. 可编辑表格的需求本质:不只是“能编辑”而已在管理后台这个领域待久了你会发现,可编辑表格是绕不开的刚需。几乎每个系统里都有一堆需要批量处理数据的场景:录单、盘点、配置权限、批量修改运费模板、表单明细行录入……这些需求如果用一个…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉