当前位置: 首页 > wzjs >正文

南宁两学一做党课网站海外营销

南宁两学一做党课网站,海外营销,个人网站设计及实现,网页界面设计调查问卷问题记录 我在本地编写了代码&#xff0c;突然想查看之前提交的代码&#xff0c;并且想保留当前所在分支所做的修改 通过git stash对本地的代码进行暂存 使用git checkout <commit-hash>切换到之前的提交记录。 查看完之后我想切换回来&#xff0c;恢复暂存的本地代码…

问题记录

我在本地编写了代码,突然想查看之前提交的代码,并且想保留当前所在分支所做的修改

通过git stash对本地的代码进行暂存

使用git checkout <commit-hash>切换到之前的提交记录。

查看完之后我想切换回来,恢复暂存的本地代码

使用git stash pop恢复我本地暂存区的代码,这时候出现了 git 冲突

我需要解决冲突,通过git status查看暂存区的内容

对于Unmerged pathsUntracked files的内容,都通过git add 将这些文件添加到暂存区

git add .完成之后,我以为已经完全恢复了切换分支之前本地的代码,于是将分支切换为主分支。

此时提示我需要commit

执行git commit 操作后

切回自己的master分支

此时发现,现在的代码是所切换的代码,切换指定提交之前的本地代码丢失了


问题原因

  1. 没有使用git checkout master切换原来的分支就进行git stash pop

    • 没有切换回主分支,直接用git stash pop,会将暂存的修改(stash应用到当前所在的历史提交detached HEAD),才会导致冲突

      • 如果你在 detached HEAD 状态下 stash pop 后直接切换分支:

        git stash pop       # 修改应用到历史提交
        git checkout master # 切换分支

        Git 会提示“本地修改会被覆盖”,你必须选择:

        • git commit → 提交会留在游离状态,容易被遗忘。

        • git stash → 再次暂存,但需手动恢复。

        • 丢弃修改 → 代码丢失

  2. git stash push未添加-u参数导致未追踪的文件未被添加到暂存区

    • git stash 默认不保存未跟踪文件。最初执行 git stash 时没有加 -u--include-untracked 参数

什么是未跟踪文件

  1. 从未执行过 git add

    • 新创建的文件默认是未跟踪的。

    • 例如:你新建了一个 test.py,但还没用 git add test.py

  2. .gitignore 忽略的文件

    • 如果文件匹配 .gitignore 中的规则,即使手动 git add 也会被忽略。

    • 例如:IDE 配置文件(如 .idea/)、编译生成的 *.class 文件等。

  3. 已从 Git 中删除,但仍在本地磁盘

    • 如果文件曾被跟踪,但后来被 git rm 删除,而本地文件仍保留,它会变成未跟踪状态。


如何恢复丢失的代码?

1. 检查是否还能找回 stash

运行以下命令查看是否还有 stash 记录:

git stash list

如果仍有记录(如 stash@{0}),可以尝试重新应用:

git stash apply 'stash@{0}'  # 不删除 stash
​
#或者
git stash pop stash@{0} # 弹出删除 stash

这时候暂存区的代码就会恢复到工作区中了

2.未追踪代码未被恢复

这些文件没有被 git stash apply 恢复,是因为:

主要原因

  1. git stash 默认不保存未跟踪文件

    • 你最初执行 git stash 时没有加 -u--include-untracked 参数

    • 导致 IDE 配置文件(.idea/)和新创建的 Java 文件未被暂存

如果文件还在本地(未被删除)
  • 这些文件可能仍然在你的工作目录中,只是 Git 没有跟踪它们。你可以手动检查这些路径是否存在:

    ls habbit/.idea/          # 查看 .idea 目录是否存在
    ls habbit/HELP.md         # 查看 HELP.md 是否存在
  • 如果存在,可以直接用 git add 开始跟踪:

    git add habbit/HELP.md
如果文件已被删除
  • 检查 IDE(如 IntelliJ/VSCode)的 本地历史记录(Local History),可能会找到备份。

  • 使用文件恢复工具(如 Recuva)扫描硬盘。


正确操作流程

1. 切换分支前

  • 推荐提交代码(而不是 stash):

    git add .
    git commit -m "临时保存当前修改"

    这样即使切换分支,代码也会在提交历史中。

    后续也能通过git checkout <commit-hash>切换回来

  • 如果必须用 stash

    git stash push -u -m "暂存所有修改"  # -u 包含未跟踪文件

2. 切换分支后

  • 恢复 stash 时正确处理冲突

    git stash pop  # 或 git stash apply

    如果冲突:

    • git status 查看冲突文件。

    • 手动决定保留哪些代码(不要直接 git add .)。

    • 确认无误后再提交。

3. 切换回原分支

  • 确保所有代码已提交或 stash

    git status  # 确认没有未提交的修改
    git checkout master

不添加暂存区直接git checkout 可以吗?

对比项git checkout <commit>(第一种)git stash + git checkout(第三种)
是否保留本地更改✅ 保留(工作目录和暂存区)❌ 不保留(先存到 stash,再恢复)
工作目录状态仍然有未提交的更改切换到历史提交时是干净的
适用场景临时查看历史版本,同时继续修改完全回到历史版本,稍后恢复更改
是否进入 detached HEAD✅ 是✅ 是
冲突风险可能直接冲突(如果历史版本和本地更改冲突)切换时无冲突,stash pop 时才可能冲突
http://www.dtcms.com/wzjs/224346.html

相关文章:

  • 家政服务技术支持东莞网站建设单页网站制作
  • 做网站便宜百度云登陆首页
  • 建设银行网站支付流程苏州百度推广排名优化
  • 网站导航栏字体网络推广方式方法
  • 新网站怎么做才能让搜狗收录东莞头条最新新闻
  • 生态建设研究所网站正规拉新推广平台有哪些
  • 邢台专业做网站价格软文推广营销
  • 政府网站建设运营合同百度号码
  • 国内工程机械行业网站建设现状南京seo推广
  • 上海广告公司招聘信息沈阳seo优化排名公司
  • 会外语和做网站广东seo推广哪里好
  • mac做网站改html文件seo关键字优化教程
  • 微信公众号链接的网站怎么做的短信广告投放软件
  • WordPress 微信采集助手科学新概念seo外链
  • 温州做外贸网站关键词seo公司真实推荐
  • 做美甲的网站网络推广渠道和方式
  • 重庆网站推广外包企业洛阳seo网络推广
  • 酷炫网站设计风格微信小程序官网
  • 深圳网站建设i9988深圳网络推广公司有哪些
  • 自助建站软件杭州seo代理公司
  • 建设银行住房公积金卡网站网站seo入门基础教程书籍
  • 现在给别人做网站还赚钱吗什么企业需要网络营销和网络推广
  • 静态网站托管网站排名查询站长之家
  • 自己做的网站能放到网上么环球网广东疫情最新消息
  • 电子商务网站平台建设前景展望免费网站软件推荐
  • 机械行业网站 方案竞价推广账户竞价托管费用
  • 南京江宁网站制作google chrome浏览器
  • 用dw做的网站容易变形贵阳网站建设公司
  • 福州做网站价格网站关键词排名
  • 石家庄展为网络公司关键词首页排名优化