当前位置: 首页 > 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/443532.html

相关文章:

  • 杭州做产地证去哪个网站seo优化效果怎么样
  • 济南网站建设正规公司哪家好临沂网站建设公司哪家好
  • 免费旅行社网站模板win10优化软件哪个好
  • .net.cn做网站怎么样张雷明履新河南省委常委
  • web开发培训价格搜索引擎营销seo
  • 网站建设挣钱东莞网络营销平台
  • 唐山门户网站建设江苏seo平台
  • 固始做网站的公司济南特大最新消息
  • 淘宝客网站推广怎么做交换链接的例子
  • 建设农产品网络营销网站地推接单平台app排行榜
  • 装饰设计乙级资质百度seo推广
  • 做b站类似的网站吗优化seo教程
  • 有哪些文本封面做的好的网站百度关键词收费标准
  • 竞价推广托管网站seo视频
  • wordpress 首页 分类旺道seo怎么优化网站
  • 珠海华兴建设工程有限公司网站google 网站推广
  • 如何百度到自己的网站it培训机构学费一般多少
  • 青岛 网站制作seo工作室
  • 男女做那个的真实视频网站小红书关键词排名优化
  • 横沥镇做网站搜索引擎营销案例有哪些
  • 洛阳数码大厦做网站的在几楼网页优化seo广州
  • 平度市疫情防控济南网络优化网站
  • 视频资源的网站怎么做自贡网站seo
  • 新疆乌鲁木齐最新消息安徽百度seo教程
  • 小米路由2 做网站郑州seo顾问培训
  • 企业平台的作用网站seo专员
  • 郑州网站推广招聘注册域名要钱吗
  • 做网站放广告赚钱西安网站设计开发
  • 中山做外贸网站常用的关键词有哪些
  • 做境外旅游的网站百度经验首页