Git 快速入门
文章目录
基础篇重点回顾
git commit 主要将本地目录进行提交,相当于另外复制一份
git branch 新建一个分支,如果你不想和主分支一起修改,你可以新建一个分支
git merge 对分支进行合并
git rebase 也是对分支进行合并,与git merge不同的是,它合并成线性
git checkout 进行分支切换
举例:
git branch bugFix; //初始分支为master,现在新建一个分支bugFix
git checkout bugFix; //将当前分支转换为bugFix
git commit; //在当前分支提交修改
git checkout master; //转换master分支为当前分支
git commit; //在当前分支master提交修改
git merge bugFix; //将bugFix分支的修改合并到当前分支master上
运行结果图示:
高级篇学习
本篇主要介绍git的一些特性
在接触git更高级的功能之前,有必要先学习一下在你的项目的提交树上前后移动的几种方法,一旦你熟悉了如何在Git提交树上移动,你驾驭其他命令的能力也会水涨船高。
HEAD分离特性
HEAD是一个对当前检出记录的符号引用,就像指针一样,指向你正在其基础上进行工作的提交记录。HEAD总是指向当前分支最近的一次提交记录。HEAD通常情况下是指向分支名的(如bugFix),在你提交时,改变了bugFix的状态,**分离的HEAD 就是让其指向了某个具体的提交记录,而不是分支名。**话不多说,请看下面例子。
图示举例:
在分离之前
运行如下代码,看分离之后图示,c1指的是提交记录的哈希值,实际中很长的,这里只用简短的c1代替。注:git log可以查看提交记录的哈希值。
git checkout c1; //利用HEAD进行分离,让其指向具体的提交记录c1,而不是master
相对引用
前面说过,如果想让HEAD指向任意一个提交记录,我们可以用git checkout 哈希值,将HEAD指向对应的提交记录,但是哈希值也太长了!一个一个输人都🐎了。所以Git引入了相对引用,相对引用用法如下:
- 使用^向上移动一个提交记录
- 使用~num向上移动num个提交记录
图示举例:
分离之前,注意看当前HEAD指向的是master分支,有个*号
运行如下代码,将HEAD指向c1,注意:如果存在多个分支,我们需要先转换到该分支,然后再通过下面的命令进行分离。
git checkout master^
除了^上移的方式,还有~数字的形式,如下图,在未执行前
git checkout HEAD~4
强制修改分支位置
现在你已经学会了相对引用,接下来我们用相对引用做点实际的事,我们可以使用相对引用移动分支,可以使用下面的命令让分支指向另一个提交。
git branch -f master HEAD~3 //将master分支强制指向HEAD的第3级父提交
图示举例:
如图所示,可以看到有两个分支,HEAD指向c2这个提交记录,我们现在来移动分支,让bugFix指向c0,master指向c6。
git branch -f bugFix HEAD~2; //bugFix指向c0
git checkout c6; //HEAD指向c6
git branch -f master HEAD; //master指向c6
可以结合图片理解。
撤销变更
在Git里撤销变更的方法很多,撤销变更由底层部分(暂存区的独立文件或片段)和上层部分(变更到底是通过哪种方式撤销的)组成,我们主要介绍第二种。
主要由两种方法撤销变更:
- git reset
- git revert
git reset 图示举例:
git reset 通过把分支记录回退几个提交记录来实现撤销改动,就像是在改写历史。
git reset HEAD~1
git把master分支移回到了c1,本地代码库就没有c2这个提交了。这种方法适用于本地分支。
git revert 图示举例:
git revert HEAD
这里的c2’其实是撤销了c2里的修改的,c2’和c1一样。这种方法适用于远程分支。