小白的git初体验

本文的参考了孟宁老师的课堂教学PPT以及博客https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg

我们都有过写毕业论文的经历,它的大概经过如下图:

这是一个极其痛苦的过程,尤其是当我们在更改了过之后想要回到某一特定的版本,我们需要一个一个打开记录去寻找。做项目开发亦是如此,我们需要版本的不断更迭,需要大量代码的更新,需要多人进行合作。所以版本控制对于一个软件项目的具体实施至关重要,而通常的版本控制系统分为两大类,一个是中心版本控制系统,比如CVS、SVN;另一类就是分布式版本控制系统,比如Git,Git可以说是目前世界上最先进的分布式版本控制系统,那么接下来让我们一起揭开这一强大工具的面纱。

工欲善其事必先利其器,我们先来看一下Git的安装方法:

我们以win操作系统为例,可以借助VS Code强大工具,因为VS Code附带安装了Git。

VS Code下载地址:https://code.visualstudio.com/

点击Download for Windows按钮即可下载

 

而后一直下一步直到完成安装。

工具已经准备完毕,接下来让我们看一下Git的基本操作流程图:

 

是不是看起来非常复杂,没关系,我们先有个印象,下面我们通过几个场景的实战演练逐一介绍这些操作以及它们所实现的功能,让我们开始吧!

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

首先我们先初始化一个本地版本库,在VS Code中打开文件夹( Ctrl+O),初始化本地库主要有两种方法:

1.打开源代码管理(Ctrl+Shift+G),可以直接点击【初始化存储库】按钮,初始化一个Git本地版本库。

 

 

 2.第二种方法是运用git init命令初始化。在项目根目录下执行git init命令,可以完成初始化一个Git本地版本库。

 

 

 

 当然如果您已经在GitHub或者Gitee网站上创建了远程版本库,我们也可以使用git clone命令将远程的版本库克隆到本地。

git clone使用语法如下:

git clone https://github.com/×××  从远程库中克隆,克隆一个版本库到新的目录,可以在当前目录新建一个文件夹,也可以git clone [地址] [本地目录]

查看当前workspace的状态:

完成本地库初始化后我们可以使用git status命令查看当前workspace的状态,也就是当前版本与上一版本的不同:

 

暂存版本库:

 

如下图所示只要在【更改】列表里的文件上点击加号“+”即可暂存更改也可以使用命令行git add,是将更改的文件加入到【暂存的更改】列表里,点击撤销符号即可放弃更改也可以使用命令行git checkout,是将该文件中的更改清除掉

在暂存的更改列表里的文件上点击减号“-”即可取消暂存更改效果等同于使用命令行git reset 。

 

 

 将暂存区的文件提交到仓库:

点击图中的对号按钮,或者使用Crtl+Enter快捷键组合,当然习惯于命令行的也可以使用git commit命令进行提交。提交过后我们可以通过git reflog查看当前 HEAD 之后的提交记录。

提交过后当我们想要回退到前一版本或者某一特定的版本时,可以使用git reset命令行:

那么我们就可以总结一下Git本地版本库的常用操作命令了,如下图:

场景二:远程版本库的操作:

在场景一中我们提到过git clone命令,这个命令可以将远程库中的版本克隆到本地:

 

 

 同时VSCode也提供了一些可视化的操作方法:

 

与之相对应的命令行如下:

git remote是管理本地版本库跟踪的远程存储库的命令;

git pull(拉取)是拉取远程仓库里的提交项到本地仓库并合并到当前分支的命令;

git push(推送)是将本地仓库中的提交项推送到远程仓库,即可完成本地仓库和远程仓库的同步的命令。

 

 此外还有抓取(fetch)、合并(merge),以及分支(branch)、提交项(commits)的操作。

场景三:团队项目中的分叉合作

 当我们进行大规模项目的开发时,一定是一个有着很多工程师的团队的合作,那么我么就要讨论一下多人共同运用Git进行项目代码管理的情况。首先我们要考虑到的就是冲突的情况,其次还要考虑本地库和远程库的同步问题。接下来我们就看一下下Git的操作:

VSCode中分支的使用:

可视化的操作方法大致如图:

与之相对应的命令行如下:

工作区切换到master分支只需要在VS Code中可以使用如下图签出到...菜单,与之相对应的输入git checkout master命令也可以实现:

合并mybranch分支到当前的master分支的操作同样有两种方法,可视化方法如下图,命令行可以使用git merge mybranch来实现:

团队的合作流程以及主要操作大概就是上面介绍的,大概流程总结如下:

1.克隆或同步最新的代码到本地存储库;

2.为自己的工作创建一个分支,该分支应该只负责单一功能模块或代码模块的版本控制;

3.在该分支上完成某单一功能模块或代码模块的开发工作;

4.将该分支合并到主分支。

场景四:Git Rebase

在场景三中我们介绍了分叉,但是当我们完成了相关的本地开发之后我们还需要将本地的代码同步合并到远程库,这就遇到了问题,分叉太多就造成太乱的感觉,这里就用到了Git Rebase了,接下来我们就了解下Git Rebase的使用方法。

rebase的操作原理:

假如有一个项目它的分之合并流程如下图:

 

在使用rebase后就是将分叉进行合并使之尽可能简单,使用rebase后就会变成如下结果:

 

 是不是简单明了了很多。

通过上述例子我们可以发现rebase的作用主要有以下两点:

1.rebase操作可以把本地未push的分叉提交历史整理成直线;

2.rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

总结:

现在让我们再来看下刚开始的这张图片:

 

 是不是明朗了很多,我们通过本地库与远程库的相关操作可以实现代码的克隆,拉取,推送等等操作以实现同步,进而为我们团队的合作提供便利。

以上就是我对Git的基本操作以及应用场景的初步学习和理解,我发现Git是一款非常强大的版本控制工具,同时我对它的理解也仅仅是刚刚开始,接下来在孟宁老师的指导下将继续针对这一软件系统性学习,再次感谢孟宁老师的指导。

 

 

 

 

 

 

 

 

 

 

posted @ 2020-10-10 11:28  陈金涛  阅读(142)  评论(0编辑  收藏  举报