如何从Git原仓库取回单个文件至已删除该文件的复刻仓库?
从原仓库找回已删除文件(无需撤销本地删除提交)
当然可以!完全不用动你fork仓库里的删除提交,就能从原仓库把这个文件找回来,操作其实很简单,我给你分步骤说清楚:
1. 确保本地关联了原仓库(Upstream)
如果之前没给本地仓库添加原仓库的远程地址,先执行这一步:
git remote add upstream <原仓库的Git克隆地址>
要是不确定有没有关联,可以用git remote -v查看,能看到upstream对应的地址就说明已经关联好了。
2. 拉取原仓库的最新内容
先把原仓库的所有分支和提交信息拉到本地:
git fetch upstream
3. 找回文件的两种常用方法
方法一:直接从原仓库分支恢复文件到本地
用这条命令,把原仓库目标分支(比如main)里的指定文件拉到你的本地工作区和暂存区:
git checkout upstream/main -- <被删除文件的完整路径>
比如文件是src/utils.js,就写成git checkout upstream/main -- src/utils.js。之后你只需要执行git commit -m "恢复从原仓库获取的utils.js文件",再推送到你的fork仓库就可以了。
方法二:查看并导出文件内容
如果只是想先看看原仓库里该文件的内容,再决定要不要恢复,可以用:
git show upstream/main:<被删除文件的完整路径>
要是想把内容保存成文件,就重定向输出:
git show upstream/main:<被删除文件的完整路径> > <保存的文件名>
比如git show upstream/main:src/utils.js > src/utils.js,之后同样提交推送就行。
为什么不用撤销删除提交?
你的删除提交是存在自己fork仓库的提交历史里的,而原仓库的这个文件根本没被删除过。上面的操作相当于在你的删除提交之后,新增了一个恢复文件的提交,既保留了你之前的操作记录,又把文件找回来了,完全不需要去撤销之前的删除操作。
内容的提问来源于stack exchange,提问作者cubsnlinux
相关产品推荐
相关产品推荐

