码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • git学习笔记-发现问题如何恢复


    1.概要

    git总出各种问题,不清楚原因。所以准备了解的跟深入些。本来的理解是这样的:

    下载我就pull

    修改完就

    commit然后push

    怎么会有问题的,结果还总有。

    既然问题无法避免,那就提高解决问题和恢复问题的能力。如果问题能够恢复就没有什么可担心的。那么恢复问题的方法就那些呢?有如下两种,一种是回退,回退到某一个正确的版本,一种是对某一个错误的版本重新处理。

    二 常用的处理流程

    1.reset 回退

    1.1 基本步骤

    1.1.1 git reset --hard

    1.1.2 git push -f 因为你push的版本较低,需要强制提交

    1.2 回退的基本原理:git reset --hard命令会将HEAD指针、当前分支指针和索引区都移动到指定的commit ID,从而重置工作区为该版本。

    1.3 重置的几种类型

    1.3.1 --hard 最危险、但也最简单有效

    --hard是最直接,最危险,同时也是使用最频繁的选项。当我们传入 --hard 执行 git reset 时,Commit History会被更新到指定的commit,同时暂存索引和工作目录也会被重置到对应commit的状态。这意味着,指定你工作目录和暂存索引里的内容会丢失。

    1.3.2 --mixed 
    --mixed 是默认的选项。这种模式下,引用指针会更新。暂存索引被重置到指定commit的状态,任何暂存索引未提交的变更都会被移动到工作目录中。

    1.3.3 --soft
    我们传递--soft 选项时,引用指针被更新, 暂存索引和工作目录保持不变。

    2. revert 重做某一个版本

    2.1 基本步骤如下

    2.1.1 git revert -n 版本号

    2.2.2 git commit -m 版本名

    2.2.3 git push

    这个步骤多半是会有问题的,因为如果再去掉这个版本的过程中,往往会有合并,如果有合并的话,这里就需要你处理冲突,没有冲突的情况特别扫,除非这个版本中你做的就是添加或者删除文件的事。

    基本上可以把这两种情况教主 revert commit 和revert merge commit ,如果有merge是需要处理冲突的。

    2.2  两种不桶的从做方法

    git revert --abort  合并后如果有冲突,恢复原状,就像什么都没发生过一样

    git revert --quit 和并后,保留处理的结果,如果有冲突,需要手动合并。

    3.放弃本次修改

    3.1 没有提交的情况

    3.1.1 未git add

     git checkout – filepathname 

     git checkout .//全部文件

    3.1.2 已经git add

    git reset HEAD filepathname

    git reset HEAD .

    3.1.3 已经 git commit

    git reset --hard commitid //任意版本

    git reset --hard HEAD^ //上一版

    3.1.4 对于本地的项目中修改不做任何理会,就需要用到Git pull的强制覆盖

    git fetch --all
    git reset --hard origin/master
    git pull

    4 其他命令

    4.1 git status 查看工作区文件的状态

    4.2 git-ls-files  -    显示有关索引和工作树中文件的信息

         -s --stage在输出中显示暂存内容的模式位,对象名称和阶段编号

    4.3 git rm --cached 文件名 删除缓冲区的文件

          git stash 删除.git 文件中index文件夹中的全部文件

    4 参考连接

    Git回退版本的几种操作_git回滚到指定版本-CSDN博客

    Git恢复之前版本的两种方法reset、revert(图文详解)_git reset 回退以前某个版本_chentiebo的博客-CSDN博客

    git如何放弃本地修改操作_git放弃本地修改_北漂燕郊杨哥的博客-CSDN博客

    git: 放弃所有本地修改_git放弃本地修改-CSDN博客

    Git杂谈—— 万字长文详解git reset - 知乎

    https://www.cnblogs.com/ahzxy2018/p/14521922.html

  • 相关阅读:
    Pandas数据分析开发实战博文集锦
    【JavaEE进阶】锁策略, 和 synchronized 优化过程
    高性能本地缓存Ristretto(一)——存储策略
    java使用拦截器进行接口签名验证
    查看BIOS 传递过来的acpi 表
    Python程序生成斐波那契数列
    java的Timer全网最详细总结
    李一鹏:一份让我无法拒绝的offer | OneFlow U
    电脑恢复删除数据的原理和方法
    Java面试之JavaWeb常用框架(offer 拿来吧你)
  • 原文地址:https://blog.csdn.net/xie__jin__cheng/article/details/134088736
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号