一、git简介
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
二、版本控制
1.版本控制工具是什么:
软件:用来保存软件开发中的各个版本
2.为什么要用版本空难感知工具
有利于打造自己的核心竞争力,积累经验,保存项目
能够提供以往的版本记录,便于恢复操作
分清责任不背锅
科学合理地规划工作
进行项目精度和进度的一个把控
三、svn和git
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统。GIT 不仅仅是个版本控制系统,它也是个内容管理系统(CMS), 工作管理系统等。
1. GIT和SVN的区别
(1)GIT 是分布式的,SVN 不是:这是 GIT 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
(2)GIT 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn , .cvs 等的文件夹里。
(3)GIT 分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
(4)GIT 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 GIT 缺少的最大的一个特征。
(5)GIT 的内容完整性要优于 SVN:GIT 的内容存储使用的是 SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
2.SVN优缺点
优点
(1)管理方便,逻辑明确,符合一般人思维习惯
(2)集中式管理
(3)更容易保证代码一致性
(4)更适合项目管理
缺点
(1)服务器压力大(项目越做越大,上传下载压力大)
(2)集中式管理,所有代码都提交的服务器上,服务器出现问题,就无法使用
(3)不太适合开源(权限控制)
3.GIT优缺点
优点
(1)非常适合分布式开发(很多人开发)
(2)灵活快速开发
(3)服务器压力小
(4)离线工作(每个人都从仓库里拉下来一个完整的代码,服务器出现问题,不影响工作)
缺点
(1)学习周期长(SVN有界面,Git更多是命令行)
(2)不太符合常规思维,更符合程序思维
(3)代码保密性差(每个人都能拉下来代码离线工作)
四、git重要概念
1.仓库、分支、提交
仓库(书店):所有版本的代码都在仓库里
分支(书架):不同功能的代码存放的地方
提交(书):每一个版本的代码
2.三区
工作区:工作的目录
暂存区:提交上去还没有放到最终仓库里,项目目录和仓库之间的暂时存储区域
仓库:放着所有的版本
远程仓库:服务器上的仓库
五、Git工作流程
Git 的一般工作流程如下:
- 克隆 Git 资源作为工作目录。
- 在克隆的资源上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
六、Git常用基础操作
1.新建一个本地仓库文件夹
2.初始化一个仓库
git init
3.新建一个文件
4.查看仓库状态(非常重要,会提示该进行哪一步)
git status
有一个hello.txt文件未添加到缓存区
5.将文件添加到缓存区
git add hello.txt # 第一种,添加一个文件
git add . # 第二种,添加目录下所有文件
已经添加到缓存区
6.将暂存区文件提交到仓库
git commit -m '这里写注释'
提交成功
7.增加文件内容
8.放到暂存区再提交
9.查看提交了几个版本
git log
长串数字是提交的ID
10.如果后面有问题,想回到前面版本,使用ID
git checkout id
看HEAD is now at 已经回到第一个版本
11.创建并查看新分支
git checkout -b new_fenzhi # 复制一份原有的东西,新建一个新分支
git branch # 查看分支
git checkout 分支名 # 切换分支
不同分支之间操作不受影响
七、完整代码同步到gitlab
1.创建工程
2.配置账户,确保权限
git config --global user.name ""
git config --global user.email ""
3.将仓库克隆到本地
git clone http://10.1.98.26:30080/BestSonder/changedetection_bit.git
3.初始化一个仓库
git init
4.添加到暂存区
git add .
git status
5.提交到本地仓库
git commit -m 'zqf first'
6.同步到gitlab远程仓库
git push -u origin master # 第一次
git push # 之后
7.git指令大全