首先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.txt的文件,目前我们分别commit了两次

- 分别在commit3次

- 此时我们突然发现不应该写 “第2次提交”,但是又想保留3、4、5次提交。这个时候就可以使用revert

这里文件就发生冲突了(不要慌,有冲突我们就解决冲突,这也是revert会带来的问题),文件中也告诉我们revert指定版本所提交的内容。
解决冲突:

- 解决完冲突进行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查看详情,可以看出来我们确实只提交了一次

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

12万+

被折叠的 条评论
为什么被折叠?



