Git使用心得

Git使用心得

Git是一款优秀的分布式的代码版本管理系统,它也是我们软件工程系学生必备的一项技能,本文根据孟宁老师公众号的Git教程,总结了以下四大场景实践,希望对自己以及其他看到这篇博客的初学者能有所帮助。

注:本文默认用户已经安装好Git

参考文献:五⼤场景玩转 Git,只要这一篇就够了!

场景一:Git 本地版本库的基本用法

在新建的项目文件夹下用git init初始化,这样这个变成了Git可以管理的仓库(本文在桌面新建文件夹learnGit),在初始化后文件夹中会出现.git目录,这个目录是Git用来跟踪管理版本库的,用户不要手动修改它(如果没看到该目录,可能是被系统隐藏了)。

在此文件夹下用vim hello.txt新建一个hello.txt文件并对其编辑,之后通过git status查看工作区状态,从status可以看出目前没有文件commit,但是有untracked file也就是hello.txt存在

git add hello.txt将hello.txt添加到暂存区,然后再次git status查看状态可以看到已经正常添加到暂存区

之后通过git commit -m "本次提交说明"命令将文件提交到本地仓库,对hello.txt再次修改,并且用git log查看提交记录,在提交记录中,每个记录黄色字commit后面有一大串数字,这串数字是commit id,它的意思是版本号。记录中天蓝色字HEAD指向的是当前版本号,那么上个版本用HEAD^表示,上上个用HEAD^^表示,如果是往前第100个那么是HEAD~100

当我们需要回退到本次代码提交之前的状态时,我们可以使用git reset --hard HEAD^命令回到上一个版本,此处我们回到第一次代码提交后的状态。

上图可以看到HEAD指针指向了上一次提交的记录,下图中hello.txt内容也回退到上一次编写的内容

若此时我们希望回到最新的版本,我们使用git reflog查看最新的版本号,然后根据版本号使用git reset --hard命令将当前工作区的代码替换为最新的版本,git reflog命令能够记录我们每次命令操作。此处是第二次代码提交后的状态。

回退后hello.txt的内容也变为原先编写的新版本内容

场景三:团队项目的分叉与合并

使用git branch

命令可以创建一个新分支new_branch

在新分支,我们可以继续编辑hello.txt,并对其执行提交操作。git reflog能够打印master分支以及其他分支的提交记录,如下图所示

提交后,我们在master分支上用git merge new_branch将两个分支进行合并

我们考虑到在新分支和原有的master分支合并时可能出现冲突,我们通过如下方法模拟一个冲突。

我们在new_branch分支中对hello.txt的首部进行修改,在首部添加一个函数conflict_new_branch(),并执行提交。而后在master分支中对hello.txt进行修改,在首部添加conflict_master()函数

此时我们返回new_branch分支,如果我们此时需要将两个分支进行合并,则自动合并失败,会出现冲突

此时git会让我们自己选择要保留的内容,分割线上面是当前HEAD指针指向的分支所包含的内容,下面是master分支包含的内容

编辑过后我们进行提交等操作

同时我们也可以将内容提交到远程库上,此时远程库也会出现对应的新分支

场景四:Git Rebase

目前合并代码主要有两种方式,一种是使用git merge,另一种是git rebase

在merge操作中,每一个新分支上的结点提交记录仍然是独立的,在最后进行merge时,会产生一个新的文件作为操作的结果,但是如果是使用rebase操作,我们在new_branch上面的操作都会作为一个patch操作使得每个操作都是master上面的直接依赖,这样我们版本的变化就是完全线性的

执行git rebase -i HEAD^^^得到以下纪录

此时将第二次的提交记录删除,对rebase操作中的冲突文件进行修改,解决文件中的冲突问题

下图将修改后的hello.txt文件重新进行提交

再执行git rebase --continue命令完成变基操作,再通过git log查看提交记录,发现第二次的提交记录已经不存在了,如下图所示

心得

之前与本科同学做项目的时候用过git,但关于git很多操作细节包括时间线这些其实了解得并不深,经过这次作业后我对git基本操作有了清楚的认识,当然还有很多知识点上的缺失,在本篇博客后我还会继续总结git的有关操作。

posted @ 2020-10-08 21:23  XieCong1997  阅读(103)  评论(0编辑  收藏  举报