声明:博客知识内容多来源于网络“狂神说java”的视频教程,记录此博客仅用于学习交流。
一、GIT和SVN对比
GIT 和 SVN 最大的区别就在于: SVN是分布式的,因此他支持离线工作,在本地可以进行很多的操作,它是把内容按元数据方式存储; GIT是集中式的,它是按文件进行存储的,必须联网才能进行正常工作,并且GIT支持分支工作。目前版本控制分为三大类:
- 本地版本控制:是将文件的个版本存到本地,无法解决多人协作的问题;
- 集中式版本控制:相对于本地版本控制,只是多了一个中央服务器,通过控制开发人员的权限进行管理,缺点是只要中央服务器一旦损坏,损失将不可估量;
- 分布式版本控制:系统保存的不是文件各个变化的差,而是整个文件的快照,当从中央服务器拷贝下来代码时,拷贝的是一个完整的版本库,这样即使一台机器损坏,也能通过其他拷贝的机器找到完整的备份。
SVN | GIT | |
---|---|---|
优点 | 管理方便,逻辑简单,易上手;代码一致性较高;集中式服务器更能保证安全性;适合少量人数开发的项目 | 适合分布式开发;服务器压力较小;项目管理较为灵活;较容易解决开发者之间的冲突;支持离线工作 |
缺点 | 服务器压力较大;必须要连接服务器才能提交还原等操作;不适合大型项目开源类项目的开发 | 概念较多,学习周期较长;代码的安全性较差,如果把整个库克隆下来就可以完全公开所有代码和版本信息 |
二、GIT 的各种状态
我们在本地创建的git项目,都会有一个隐藏文件 .git 。该文件意味着这个目录就是本地参仓库,如果按照文件的存放位置,他有四个区域:
- 工作区:就是受 GIT 控制的文件夹,所有被跟踪记录的文件都在这个里面,方代码的地方;
- 暂存区:临时保存改动的缓存区;
- 仓库区(本地库):就是安全存放数据的位置,这里面有自己提交的所有版本的数据。其中HEAD指向最新放入仓库的版本
- 远程的git库:托管代码的服务器。
按照文件的状态分:
- Untracked:未跟踪,此文件在工作目录中,但是并没有加入到git库,不参与版本控制,通过 git add 状态变为 staged
- Unmodify:文件已经入库,没有修改,即版本库汇总的文件快照和工作目录中的完全一致,此处文件有两种去处,如果被修改则变成 Modified, 如果使用 git rm 移出版本库,则成为 Untracked 状态的文件;
- Modified:文件已经修改,仅仅是修改,没有其他操作,通过 git add 可以进入暂存,使用 git checkout 则丢弃修改过,返回到 unmodify 状态,指令 git checkout 即从库中取出文件,覆盖当前修改。
- Staged:暂存状态,执行 git commit 则将修改同步到库中,这时候库中的文件和本地文件变为一致,状态为 Unmodify ,执行 git reset HEAD filename 取消暂存,文件状态为 Modified
三、GIT 的工作流程及命令
git status --查看所有文件的状态
git status [文件名] --查看指定文件的状态
git init --初始化项目,会成成 .git 隐藏文件;
git clone [url] --克隆远程仓库到本地;
git add . --将没有被跟踪的文件,添加到暂存中,被跟踪[ideal文件为绿色]
git reset HEAD . --移除文件的暂存状态,变为为跟踪文件[ideal文件为红色]
git commit -m [提交的信息] -- 提交暂存区文件,到本地仓库中[ideal文件为白色]
git branch --列出所有本地的分支
git branch -r --列出所有远程的分支
git branch [newbranchname] --新建一个分支(本地),默认是当前分支的基础上
git checkout -b [newbranchname] --新建一个分支,并切换到该分支
git checkout -b [newbranchname] [oldbranchname] --根据已有分支创建新的分支
git checkout [branchname] --切换到该分支
git merge [branchname] --no-ff -m [提交的信息] --合并指定分支到当前分支
git push origin [branchname]:[branchname] --推送本地的branchname分支(冒号前面的)到远程origin的branchname分支(冒号后面的),没有会自动创建
git branch -d [branchname] --删除指定分支(本地)
git push origin --delete [branchname] --删除指定分支(远程)
git log --查看操作日志(详细)
git log --oneline --查看操作日志(简略版)
git log --oneline --graph --查看操作日志(看到各分支版本)
0.要存放项目的路径下,右键运行 GIT Bash Here,克隆项目 git clone
1.在工作目录中添加、修改文件;
2.将需要进行版本管理的文件放入暂存区域 git add . ;
3.将暂存区域的文件提交到 git 仓库 (本地库) git commit;
4.将本地仓库推送到远程仓库 git push ;
四、GIT 分支
分支的功能就是将一些开发从主线上分离出来,可以实现分支的并行开发,这样能解决代码的冲突,系统的代码也可以按照版本多样的存在。
git常用分支及含义:
常用分支:
master 分支:主分支,版本非常的稳定,一般不允许在上面工作,需要保证随时都能发布。
develop 分支:开发分支,工作完成后,如果要发布正式版,或者是比较稳定可以合并到主分支上去。
临时性分支:
临时性分支使用完以后,应该删除,使得代码库的常设分支始终只有 master 和 develop
feature 分支:功能分支,开发特定的功能,开发完成后合并到 develop 分支上,可以采用feature-*的形式命名
fixbug 分支:修补bug分支,对于发布的软件初心的bug,新建一个分支进行修复,是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug-*的形式。