本文共 2123 字,大约阅读时间需要 7 分钟。
Each one of you is better than anybody else at something
前言
hello大家好啊,我是James,这两天学校的服务器被老师关掉了,项目源码被重新迁移到了另一台服务器的仓库里,在迁移过程中,遇到很多代码合并冲突的问题,今天着重总结下在git本地仓库中一些对于维护代码完整性很重要的命令
git简介
Git是由linux之父linus构建的一套分布式版本控制系统,据说最初的版本linus只花了两周就写出来了,git相比于传统的版本控制系统来说,他的最大的好处就是每个系统结点都有自己的本地版本库,我们可以看下传统的版本管理系统SVN和分布式版本控制系统Git的架构区别
Git的特点在于,它是分布式的,也就是说,即使是主版本库服务器被搞破坏了,代码的完整性也不会受影响,因为每个分布式结点都保存这代码的一份副本和历史纪录
安装git的方法,在文章中不再赘述,有需要的朋友可以参考我的博客
https://jamesxh.blog.csdn.net/article/details/85037784
本地版本控制方法
初始化一个仓库,同时提交一份文件到本地版本库中去
版本的历史记录很重要的,所以每次修改完重要的内容后,都要记得随时commit,查看本地操作历史记录的命令是git log
此时当前版本的头指针是指向master(主分支)的,现在在文件中追加一些内容,我们新添加一行,同时进行版本提交
所以版本库就相当于我们玩游戏时的存档,每一份存档在分布式系统中都是唯一的,所以这就是使用本地版本库的好处,也不难理解,现在我们的提交方式都是线性的
当想要重新回退到之前操作的某个版本上,就要重新将head指针指向历史版本的id号上,比如现在我们想要回退到第一次创建的文件,就要去拿到这个文件的记录哈希值,再去重置,这里使用的是git reset
命令
但是,现在我又后悔了,又想要返回到之前最新修改的文件上,这该咋办?没关系,我们可以使用git reflog
查看我们的操作记录
当我们知道上一步的操作命令的hash值是e699f25,这就好办了,只要重新重置一下head指针指向这个文件即可,这样文件又回到了之前的
2 工作区与版本库
git的一大优势就是引入了工作区与暂存区的概念,工作区是我们能看到的目录,比如我们的项目文件夹
而版本库其实就是git初始化过后的文件夹里面的.git
目录,里面保存了仓库中分支的信息以及头指针head的指向位置,常用的有git add(将文件添加到暂存区)
,git commit(将文件所有内容提交到版本库的分支上)
,在commit的同时我们需要给这次操作加上一个标识,方便管理版本历史记录
3 分支管理
git分支对于协同开发来说是很重要的一步,早先我们都是很简单的线性的提交与修改记录,这些提交信息都只是在主分支master上,使用git branch
可以查看目前所在的分支信息,使用git checkout -b [分支名]
创建一个新分支
使用git switch [分支名]
即可切换到一个新分支上,所以每次修改都只是在你当前的分支上作为修改,即使我们切回master分支,原内容还是之前的
记得小编之前在实习时,能深刻感受到,master分支是禁止随意修改的,一般是由组长锁死的,项目组有新的需求都是在master分支的基础上新建一个新分支,例如dev分支是用来开发新功能的,bug分支是用来解决需求bug的,直到所有功能开发完成测试完毕,再由组长合并到master上,然后发布上线
我们再次切回dev分支,此时head指针重新指向了dev分支当前版本号
当我们在dev上开发结束后,即可进行merge(合并)操作,我们重新切回master分支上,使用git merge [分支名]
即可合并,为了给大家讲清晰,我再建一个bug分支,模拟多分支合并
接下来我们把dev分支,bug分支都合并到master上,合并之前,还是别忘了git switch
切回到master上
然而,上图显示合并起了冲突,这种原因是因为bug分支修改的地方与dev分支产生了不一致,这个问题有两种解决方式,第一种是我们手动的去解决冲突,然后重新commit
第二种解决方法其实就是我们切分支的策略问题了,最好是在当前正在开发的分支上重新切一个bug分支,bug修改完后,再合并到dev分支上,最后才合并到master上
使用git reset
回退一下版本到合并之前,然后我们切到dev上,再切一个新的bug分支,在bug分支上进行一些修改
然后重新切回到dev上,进行合并操作完成后,就可以删除不必要的分支,使用git branch -d [分支名]
即可删除
好了,今天就总结到这,如果对git的前世今生感兴趣的朋友,安利给大家一个07年linus介绍git起源的视频
https://www.bilibili.com/video/BV1xb411A7ac?from=search&seid=16420327449660357343
关注我
获取更多精彩
James的黑板报
转载地址:https://blog.csdn.net/weixin_32553639/article/details/113535065 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!