这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战
请看 更多文章阅读:
【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
master
是 git 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~