git常用命令之大白话说明

本文详细介绍了Git的常用命令,包括git reset的--hard, --mixed, --soft选项的区别,git checkout的用法,git stash的缓存和恢复操作,git revert的回滚特定版本,以及git rebase的合并和解决冲突的应用。通过实例解析了每个命令的功能和使用场景,帮助理解Git版本控制的核心操作。" 70740352,1178686,高性能集群架构实践:负载均衡与服务可靠性,"['高性能', '集群架构', '数据库', '缓存', '负载均衡']

首先git是分布式版本管理控制系统,在他的架构中分为以下几个区域

在这里插入图片描述
图中每一个流程代表一个开发人员

git reset 命令之 --hard --mixed --soft 的区别

命令:git reset --hard 版本号

  • soft:仅仅移动当前Head指针,不会改变工作区和暂存区的内容;即回到将文件修改好并且执行add命令后
  • mixed:是reset的默认参数,移动head指针,改变暂存区内容,但不会改变工作区 ;即回到将文件刚刚修改好的时候
  • hard:当前head指针、工作区和暂存区内容全部改变 ;即回到指定版本(自己在改指定版本上的修改全部删除)

git checkout

命令:git checkout 文件名

  • checkout 文件名:使用暂存区的文件覆盖工作区
    所以执行完git add .之后,再执行该命令是无效的 git checkout 和git add是一对反义词;
    比如一个文件我写了3行文字并且add到了暂存区,在还没有提交的时候我又追加了2行,此时文件是5行,就在此时我发现我后边追加的2行是错误的,这个时候我就可以使用checkout命令,使用暂存区的文件覆盖工作区的文件

命令:git checkout 分支名

  • checkout 分支名:切换分支

git stash

命令:git stash

  • stash:将暂时还不想add、commit的修改进行缓存并清空修改的部分。
  • stash list:清空了修改的部分,那刚才修改的部分缓存到哪去了?用git stash list命令看看
  • stash pop :恢复刚刚缓存的,并清空缓存

git revert

命令:git revert 版本号

  • revert:是用于回滚某一个版本(注意:不是回滚到某一个版本),以达到撤销指定版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、
    版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert
    命令来回滚版本二(通常会有冲突,解决冲突进行提交),生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。

例如:

  1. 有一个1.txt的文件,目前我们分别commit了两次

在这里插入图片描述

  1. 分别在commit3次
    在这里插入图片描述
  2. 此时我们突然发现不应该写 “第2次提交”,但是又想保留3、4、5次提交。这个时候就可以使用revert
    在这里插入图片描述
    这里文件就发生冲突了(不要慌,有冲突我们就解决冲突,这也是revert会带来的问题),文件中也告诉我们revert指定版本所提交的内容。
    解决冲突:
    在这里插入图片描述
  3. 解决完冲突进行add 并 commit
    在这里插入图片描述
    这样就“回滚”某一个版本。

reset是“回滚到”某个版本如果使用reset到第二次提交的版本的话,3、4、5就不会保存了。

git rebase

  • 在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决
    冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行
    git-commit,只要执行:git rebase --continue 在任何时候,你可以用–abort参数来终止rebase的行动,并且"mywork"
  • 分支会回到rebase开始前的状态。 git rebase --abort
  • 应用场景一:合并commit;我们在开发一个大功能时,可能大功能是有好几个小功能组合成的,我们本地可能就会有好几个小的commit,但是我们在push到远程时,想将这几个小的commit合并成一个大的commit后一起push;
    命令: rebase -i HEAD~几个commit
    例如:

1).初始状态
在这里插入图片描述
2). 连续提交3个commit(暂时还没有push到远程)
在这里插入图片描述

3).合并本地的3个commit
执行命令git rebase -i head~3 后出现编辑框,注意:红色框是我们对合并的3个提交进行如何处理的逻辑,蓝色框是提示我们各命令的作用
在这里插入图片描述

  • pick:保留该commit(缩写:p)
  • reword:保留该commit,但我需要修改该commit的注释(缩写:r)
  • edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
  • squash:将该commit和前一个commit合并(缩写:s)
  • fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
  • exec:执行shell命令(缩写:x)
  • drop:我要丢弃该commit(缩写:d)

4).输入i进入编辑模式
这里的逻辑可以根据自己的需求输入相应命令
在这里插入图片描述

5).保存退出后,又进入修改提交信息的编辑栏
在这里插入图片描述
这里我们可以对提交信息修改
在这里插入图片描述
6).保存退出后,提示我们成功
在这里插入图片描述
在看看log
在这里插入图片描述

可以看出来我们已经对3个提交进行和合并
7).推送至远程仓库
在这里插入图片描述

在这里插入图片描述
进入commit查看详情,可以看出来我们确实只提交了一次
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值