代码版本控制-更好操作代码版本-git分支操作(二)

313 阅读5分钟

这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战

请看 更多文章阅读:

【Git】代码版本控制-git 初识&基本操作(一)

【Node.js】搭建自动化开发环境-基本介绍【工具准备】【开工】【详细步骤(四)】【模块处理工具(五)】【模块化编程的理解】

本文将会学习 代码版本控制, git的分支操作及一些高级用法

一、代码版本控制 git diff

接上文【Git】基本操作(一), 这里穿插一句:

执行 git diff 命令的时候,可以查看一些当前工作区与暂存区(.git)的代码区别

我们第二天上班的时候,发现代码中有大问题,不能运行,我们必须回退到上一个版本了,我们先利用 git log 查看一下有哪些版本

我们准备回退到上一个版本,所以我们记录了版本号 74e4f4c636e7710fa0f878d74a641b2de502e74a,准备回退

git reset --hard HEAD^ --------->回退到上一个版本

git reset --hard HEAD^^ --------->回退到上上个版本

git reset --hard HEAD~N --------->回退到第N个版本 N是一个整数

git reset --hard 版本号 --------->回退到指定版本

注意,版本号回退的方式不需要把整个版本号都写上,写上前 6,7 位

我本来共有三个版本,最近的第三个版本是坏的,所以我应该回退到第二个版本,但是一不小心回退到了第一个版本,现在我要想办法再回到第二个版本,此时我们 git log 的时候已经看不到第二个版本了,所以我们执行

git reflog

这样,我们就能看到我们每一次的版本操作,就能找到第二个版本的版本号了:74e4f4c

git reset --hard 74e4f4c

GIT 分支操作

目前我们的项目中有两个功能模块: love-letter.md / introduce.md ,刚才love-letter 写错了,想回退的时候,结果 introduce 也回退了, 所以我们想,能不能分开的对这个功能模块进行管理呢?

git 中提供了分支管理这样的机制,我们可以针对不同的功能模块利用不同的分支来管理 (branch)

首先针对项目中的这两个功能模块创建对应的分支:

git branch 分支名

git branch love-letter

git branch introduce

我们执行 git branch 命令就可以查看当前本地所有的分支已经当前所处的分支

  introduce
  love-letter
 * master

mastergit init 之后就自动创建好的本地主分支,上面的是我们刚刚创建的本地子分支, master 前面有个小 * 号,这个符号代表 master 是当前所处的分支。

接下来,我们准备去开发 love-letter,所以我们要切换到 love-letter 分支

git checkout 分支名

git checkout love-letter

切换分支后,进行操作之后,记得也要提交,并且,分支里面的各种操作对于其他分支来说都是独立的,彼此之间不能相互控制版本

现在我们的分支处理号了,再 love-letter 分支中只管理 love-letter.md, introduce 也是如此,但是,所有的代码其实还是存在于主分支的,也就是说主分支上才是完整的项目

接下来,我们就可以再各个分支上进行对应的项目开发, 当我们项目中某个功能模块开发完成后,比如 introduce 已经开发完成了,需要切换回 master 分支,因为 master 分支上的代码才是真正的项目代码,最终上线的代码都在 master 中

我们需要将 master 中的关于 introduce 的代码和 introduce 分支中最终的代码进行合并

合并分支: git merge 分支名 ,在 A 分支中执行 git merge B ,就是把 B分支 的代码合并到A分支

当我们合并了分支之后,可能 master中有a这个文件,但是在B分支中没有a这个文件,所以合并后可能 a 这个文件就被误删,这个时候执行:

git log --diff-filter=D --summary

可以看到是哪个版本在提交的时候删除了 a,假设是 486532 版本,就执行

git checkout 486532~1 a.jpg

这样的话,a文件就回来了,然后再去提交

其实刚才的情况主要是因为, master 中有两个文件,但是在分支中都各只有一个文件,导致合并过来的时候出现了问题,所以,其实我们应该保证,分支中的代码和 master 中的文件应该是只能多不能少

尽量保证进入新创建的分支后,别删除之前的其他的文件,不然的话在和主分支合并的会误删文件

当在A中修改了某个文件,在master中合并了,在 B 中也修改了这个文件,

master中合并的时候会出现冲突>>>><<<<<=====>>>>>描述,更改的地方,

所以可以利用编辑器来处理冲突,也可以手动的删去不想要的内容,冲突解决完成后,才能再次提交。。。

更多详细的内容请查看学习廖雪峰 GIT 教程

下文更新预告, 跟上节奏, 一步一步

接下来会继续学习代码托管网站 github 的一些功能, 冲鸭!! xdm

提高开发效率, 为我们的开发提效赋能!

跟上前进的步伐, 向前加油

加油!! go~