【Git】git拉取远端但是本地存在不想提交文件处理

项目场景:

提示:这里简述项目相关背景:

我本地修改了20个文件,新增了10个文件。一共30个修改文件

由于项目周期导致,我提交git只需要提交指定的5个文件(这里提交的就会被追踪,所以不需要判断是否为新增文件)

如图所示,编辑器显示更改


问题描述

提示:这里描述项目中遇到的问题:

假设上述30个修改点,我提交了8个文件到分支,已经推送到远端了。

这8个文件就是一期修改模块,但是出现了一个地方,就是我的同事,修改了其中某个文件的代码,并且推送了(这是假设场景)

此时:远端有一个新的提交记录,但是我本地有一大堆更改文件

1、我要拉取远端代码合并到本地

2、我本地代码不想提交commit,但是我暂存也不能拉取下来

豆包给的答案

操作阶段 「暂存的更改」 「更改」列表 能否 pull
操作前(你现在) Subscribing.vue 21 个文件(红框) ❌ 不能(有本地修改)
执行 git stash --keep-index 后 Subscribing.vue(保留) 空(21 个被藏起来) ✅ 可以
执行 git stash pop 后 Subscribing.vue(保留) 21 个文件(完全恢复) ❌ 回到初始状态

已暂存的 → 还在

未暂存的 → 藏起来

工作区变干净 ✅

c 复制代码
暂存更改(保留已暂存)
git stash --keep-index

恢复刚才藏起来的文件
git stash pop

控制台显示红色


分析:

会出现一个情况

命令行处理的对象不一样

执行后还存在一些文件

你现在看到的 "还在更改里的文件",一定是这两种:

  1. 新增的文件(你本地新建的,从来没提交过的)
  2. 从来没有被 git add 过的文件
    它们叫 untracked filesgit stash 默认不会动它们!所以你执行 git stash --keep-index 后,它们依然留在更改列表,导致你还是不能 pull!

你只需要把命令改成这个(多一个 -u)

bash 复制代码
git stash --keep-index -u
这个 -u 就是:
把 "未跟踪的新文件" 也一起藏起来!
  • git stash --keep-index
    → 只藏 已修改过的旧文件
    → 不藏 新增文件
  • git stash --keep-index -u
    → 藏 所有修改 + 所有新增文件
    → 工作区 100% 变干净
    → 就能 pull 了

总结:

bash 复制代码
# 一步:把所有东西全部藏起来(包含暂存的、未暂存的、新增文件)
git stash push -u -m "temp"

# 二步:拉代码(现在 100% 成功)
git pull

# 三步:恢复所有
git stash pop

相关推荐
行者-全栈开发16 分钟前
华为云码道 CodeArts 实测:让 AI 用 Rust 写一个 Git 仓库健康度体检台「仓衡」
git·rust·tauri·桌面应用·ai 编程·华为云码道·codearts 代码智能体
挖掘狂人2 天前
Git 从 0 到 1:用一个小项目走完 add / commit / reset / merge / rebase / push
git·后端·github
codigger2 天前
Git 三区域模型:把 add、commit、reset、merge 一次讲透
git·github·编程·编程语言
水饺编程2 天前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
idanzk2 天前
Git 推送 GitHub 报 SSL_READ /src refspec main 不匹配 完整踩坑记录
git·github·ssl
星恒随风2 天前
Linux开发工具详解(二):Git版本控制、GitHub协作与GDB调试实战
linux·笔记·git·学习·github
寺中人3 天前
Xshell 完全入门指南:从安装到实战,远程连接+文件传输+会话管理全拆解
git·ssh·github·php·远程连接·xshell·运维工具
酬谢神明则必安3 天前
git学习记录01
linux·git·学习
lingchen19063 天前
版本控制 Git源代码项目管理
git
虫无涯3 天前
Coverity 如何结合 GJB8114-2013使用?
git·单元测试·嵌入式测试·coverity·静态扫描