git切换版本后怎么切回去_git本地仓库管理方法总结
发布日期:2021-06-24 11:40:59 浏览次数:3 分类:技术文章

本文共 2123 字,大约阅读时间需要 7 分钟。

Each one of you is better than anybody else at something

930149e66205832fade817040c9b2334.png

前言

hello大家好啊,我是James,这两天学校的服务器被老师关掉了,项目源码被重新迁移到了另一台服务器的仓库里,在迁移过程中,遇到很多代码合并冲突的问题,今天着重总结下在git本地仓库中一些对于维护代码完整性很重要的命令

git简介

Git是由linux之父linus构建的一套分布式版本控制系统,据说最初的版本linus只花了两周就写出来了,git相比于传统的版本控制系统来说,他的最大的好处就是每个系统结点都有自己的本地版本库,我们可以看下传统的版本管理系统SVN和分布式版本控制系统Git的架构区别

5d50d67df5155dcd789fc1d216eca567.png

Git的特点在于,它是分布式的,也就是说,即使是主版本库服务器被搞破坏了,代码的完整性也不会受影响,因为每个分布式结点都保存这代码的一份副本和历史纪录

安装git的方法,在文章中不再赘述,有需要的朋友可以参考我的博客

https://jamesxh.blog.csdn.net/article/details/85037784

本地版本控制方法

初始化一个仓库,同时提交一份文件到本地版本库中去

c0919e1cfd58932c71f09415c3f20b67.png

版本的历史记录很重要的,所以每次修改完重要的内容后,都要记得随时commit,查看本地操作历史记录的命令是git log

aa6196282ae82b2fe2bcc0e4b6fd57fd.png

此时当前版本的头指针是指向master(主分支)的,现在在文件中追加一些内容,我们新添加一行,同时进行版本提交

c52df188e12e97459446a84442fd7382.png
a0aee1d4eaa9e7c9aa5c343814272c0a.png

所以版本库就相当于我们玩游戏时的存档,每一份存档在分布式系统中都是唯一的,所以这就是使用本地版本库的好处,也不难理解,现在我们的提交方式都是线性的

e385ee08c573b53c19adda9bacbc7ba5.png

当想要重新回退到之前操作的某个版本上,就要重新将head指针指向历史版本的id号上,比如现在我们想要回退到第一次创建的文件,就要去拿到这个文件的记录哈希值,再去重置,这里使用的是git reset命令

241e733cc2c8d7994d96986ef8de9a2e.png

77bcea0d2a8167bb53ba92a18c32ead6.png

但是,现在我又后悔了,又想要返回到之前最新修改的文件上,这该咋办?没关系,我们可以使用git reflog查看我们的操作记录

9758597d98ce6930fd0fadb4bb4630a7.png

当我们知道上一步的操作命令的hash值是e699f25,这就好办了,只要重新重置一下head指针指向这个文件即可,这样文件又回到了之前的

3b221e1b27706c3047df8391cc3e305a.png

2 工作区与版本库

git的一大优势就是引入了工作区与暂存区的概念,工作区是我们能看到的目录,比如我们的项目文件夹

f0736fd465529a8b646bcc3773e22c07.png

而版本库其实就是git初始化过后的文件夹里面的.git目录,里面保存了仓库中分支的信息以及头指针head的指向位置,常用的有git add(将文件添加到暂存区)git commit(将文件所有内容提交到版本库的分支上),在commit的同时我们需要给这次操作加上一个标识,方便管理版本历史记录

a15d68e15a2b27ac9cd0ac6d44b05037.png

3 分支管理

git分支对于协同开发来说是很重要的一步,早先我们都是很简单的线性的提交与修改记录,这些提交信息都只是在主分支master上,使用git branch可以查看目前所在的分支信息,使用git checkout -b [分支名]创建一个新分支

6bd4e77a5124d708b0ff3d13df07818f.png

使用git switch [分支名]即可切换到一个新分支上,所以每次修改都只是在你当前的分支上作为修改,即使我们切回master分支,原内容还是之前的

60747c50da2d6a43422ebd932c3ce920.png
e6555e75263dcb73a1dd4b962108a0c0.png

记得小编之前在实习时,能深刻感受到,master分支是禁止随意修改的,一般是由组长锁死的,项目组有新的需求都是在master分支的基础上新建一个新分支,例如dev分支是用来开发新功能的,bug分支是用来解决需求bug的,直到所有功能开发完成测试完毕,再由组长合并到master上,然后发布上线

我们再次切回dev分支,此时head指针重新指向了dev分支当前版本号

88a7cf0185d48877264cd9c61fc43d28.png

当我们在dev上开发结束后,即可进行merge(合并)操作,我们重新切回master分支上,使用git merge [分支名]即可合并,为了给大家讲清晰,我再建一个bug分支,模拟多分支合并

1b994b5a529e8d70280fe8251c8e2347.png

接下来我们把dev分支,bug分支都合并到master上,合并之前,还是别忘了git switch切回到master上

0da8e8f34043df496a02ef87b3c0011f.png

然而,上图显示合并起了冲突,这种原因是因为bug分支修改的地方与dev分支产生了不一致,这个问题有两种解决方式,第一种是我们手动的去解决冲突,然后重新commit

add70f48d7b70134d5f21d1764b5548d.png

第二种解决方法其实就是我们切分支的策略问题了,最好是在当前正在开发的分支上重新切一个bug分支,bug修改完后,再合并到dev分支上,最后才合并到master上

使用git reset回退一下版本到合并之前,然后我们切到dev上,再切一个新的bug分支,在bug分支上进行一些修改

2bfd996c5a6dd8a2310540ae9796aba7.png

然后重新切回到dev上,进行合并f291855f8bd9d80f2bd281104866522c.png操作完成后,就可以删除不必要的分支,使用git branch -d [分支名]即可删除

3f17772eeb027fc4d66395931568a8e0.png

好了,今天就总结到这,如果对git的前世今生感兴趣的朋友,安利给大家一个07年linus介绍git起源的视频

https://www.bilibili.com/video/BV1xb411A7ac?from=search&seid=16420327449660357343

749ca2f78c5cb78db1f17949f44333b3.png

8ea4b11ee4355e1a3a5275655af52cad.gif
490710b2e822efe037ce17dff13f2908.gif

关注我

获取更多精彩

James的黑板报

b0ded3bcc9e60018499b1fef2b55e46e.png

b9b043005b4eb2f95400d05b4f46fb55.gif

转载地址:https://blog.csdn.net/weixin_32553639/article/details/113535065 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mysql事务如何保证持久性_详解MySQL事务持久性实现
下一篇:python人工智能算法包_Python 人工智能算法工具包 SimpleAI

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月16日 06时47分16秒