一、什么是Git

       Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件

二、与SVN有何区别?

1)Git是分布式的,SVN不是:

这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以不用联网在本地提交;

2)GIT与SVN版本机制不一样:

Git 只关心文件数据的整体是否发生变化,而SVN这类版本控制系统则只关心文件内容的具体差异。这类系统(如SVN)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容,然而Git 并不保存这些前后变化的差异数据。实际上,Git更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。

3)GIT不需要联网:

SVN 断开网络或者断开v*n就无法commit代码,但是Git 可以先commit到本地仓库。用SVN的话,没有网络或者断开v*n时,你当然也可以继续在本地开发,但是无法commit代码,因为SVN 每次commit都必须联网,长时间不commit代码会丢失大量开发进程的历史纪录。有个比喻是:不能commit就像用word写文档不能save一样危险。而且有网络的情况下每一次commit都会花上数秒甚至更长时间。但用 Git 的话,就算你在飞机或者火车上,都可以非常愉快地频繁提交更新,因为是在本地仓库commit所以几乎不需要时间,而且commit一定要频繁,不然无法记录你的改动,如果你一天commit一次,中间的修改你就找不回来,然后等到了有网络的时候再将版本纪录和代码一起上传到远程仓库。

4)Git 的内容完整性要优于SVN:

因为Git 在commit(存储在本地)或者push(上传到远程仓库)之前,通过对文件的内容或目录的结构计算出一个 SHA-1哈希值,作为指纹字符串进行内容的校验,并将此结果作为数据的唯一标识和索引,在远处仓库接受到commit的文件之后,会再计算一遍哈希值然后跟传递过来的哈希值做比较,如果不一致,说明文件在传输时变得不完整,或者磁盘损坏导致文件数据损坏。另外在 Git 数据库中的东西都是用此哈希值来作索引,而不是靠文件名;

三、为什么要用Git?

1) git每台电脑都有一个版本库,可以在本地做版本管理;

2) 速度快。git的速度远超大部分版本管理系统,包括svn

3) 强大的分支管理功能

4) 活跃的开源社区,如最著名的github

四、Git安装、部署和运行

下载 Windows版 git(windows环境默认安装即可)。

下载地址:https://git-scm.com/downloads

图形化工具SourceTree:https://www.sourcetreeapp.com/

五、GIT指令模式

1、初始化

安装完git后,在任一一个文件夹(我自己的一个简单项目:D:\work\enjoy-git),右键进入git bash

Git随手记

在命令窗口中输入git init,即就在些目录中创建一个.git的文件夹,如下图

Git随手记

2、管理文件

记得提交前设置下操作者的姓名和email ,不然会报错提交不了。一般会出现下面这样的错误

Git随手记

主要做以下这两个配置

Git随手记

3、提交版本

检查版本状态  命令: git status

Git随手记

如图中所示,表示这些文件还没有被git加以版本控制。

提交到本地时,按照以下两个步骤实施

  • git add . 或git add -A或git add filename (点代表所有新增、修改;  -A 代表新增、修改、删除),加入缓存区(.或者-A表示全部,也可单独文件)
  • git commit -m ‘new project’   提交版本  ‘版本提交描述’

提交到本地时,还可以按照以下一个步骤实施

git commit -a -m   "ew project"   加入缓存区并提交

Git随手记

如果,其中一个类发生改变了,我们可以再次使用git status命令查看,如图

Git随手记

4、删除本地缓存

这个操作,一般情况下不要做,除非你确定需要将代码重新加入版本控制时,可以这样实施

命令:  git rm --cached 文件名

效果如图

Git随手记

5、忽略排除

忽略那些不需要管理的文件夹或文件(比如此项目中.idea文件就需要忽略掉)。可以使用以下命令

命令: touch .gitignore    // 创建一个.gitignore文件

输入一下内容,因为.gitignore本身就需要忽略,所以此文件需要忽略

Git随手记

此时我们再查看一下状态,发现好像这个忽略的操作没有起到什么作用。

Git随手记

看到这种情况,先不要急,这主要是因为先前已经将所有的文件都加入控制中了。我们这里需要做的是,将控制取消掉,如图

Git随手记

Git随手记

可以看到,再次提交时,就会将要忽略的文件自动地的过滤掉。

补充说明:

  • “.gitignore”文件的影响范围是它所在的文件夹和所有的子文件夹
  • 每一个文件夹沟可以创建自己的“.gitignore”文件,如果它上层的文件夹也有“.gitignore”文件,这个文件夹也会受到它的影响。
  • “.gitignore”文件中可以使用“#”字符开头表示注释,文件夹路径是用“/”字符,文件名可以使用通配符“*”,另外还可以使用“!”字符表示排除。

6、分支管理

1、创建分支

命令:     git branch 分支名称

Git随手记

2、查看分支

命令:       git branch

Git随手记

3、切换分支

命令       git checkout 目标分支名称

Git随手记

4、冲突解决

首先切换到dev分支

Git随手记

作如下改动

Git随手记

提交

Git随手记

然后,再切换到master分支

Git随手记

作如下改动

Git随手记

提交

Git随手记

合并两个分支,将dev合并到master上。切换到master分支上

Git随手记

如上图,合并之后,已经提示存在冲突了。

打开代码,会看到如下图

Git随手记

那么这时候,就需要我们开发人员自己决定保留哪一部分了。这里我手动的处理了

Git随手记

将改动后的代码提交

 

相关文章:

  • 2021-12-25
  • 2021-11-09
  • 2021-06-23
  • 2022-02-19
  • 2022-03-05
  • 2021-06-23
  • 2021-06-07
猜你喜欢
  • 2022-01-23
  • 2021-12-26
相关资源
相似解决方案