关于Git——开源的分布式版本管理系统
简介
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
应用场景
版本控制
针对工程中的不同版本进行管理。
分支管理
针对工程中的不同分支进行管理和合并
代码项目管理
可以将仓库放在服务器,这里的服务器可以是自己搭建的服务器或者github,gitlab等开发的平台进行托管。
集中式和分布式(SVN VS Git)
集中式
集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
缺点
- 受限于互联网或者局域网
- 对中央的安全性和可靠性要求高
- 不能脱离中央服务器单独工作
分布式
分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
优点
- 不受限于互联网或物联网
- 去中心化
- 分支管理
Git的使用
关于工作区、暂存区和版本库
工作区
当前的工作目录,就是你所看到的文件
暂存区
Git工具提供的一个临时存放空间,一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
版本库
Git工具提供的提交版本存放空间,存放在.git目录下
应用场景——新增文件与提交
新增文件,然后提交到仓库中,这是非常简单的操作。
例子涉及命令如下:
1.初始化仓库
git init
2.添加文件到暂存区
git add README.md
3.提交改动
git commit
应用场景——版本回滚
在实际开发过程中,难免会遇到一些bug,为了快速调试和定位,我们可以使用git的版本回滚功能。
例子涉及命令如下:
1.查看历史记录
git log
2.查看所有历史记录
git reflog
3.版本回滚(HEAD)
git reset --hard HEAD^
4.版本回滚(commit id)
git reset --hard 90871fa(commit id)
应用场景——新增分支与合并分支
有一些大型项目往往需要多人合作开发,在开过程中都是各自完成各自的任务,但是进行合并时就头疼了,会出现各种意外状况。再者,对于一些项目,我们会做一些新增功能开发,但是这些功能是没经过测试的,如果我们在已经发布的代码上做修改,会有一定的风险。因此我们需要用到git的分支管理功能。
例子涉及命令如下:
1.新增研发分支
git checkout -b develop
2.在develop分支上新增“新特性分支”
git checkout -b feature-upgrade
3.查看当前有哪些分支
git branch
4.添加文件
git add .
5.提交
git commit
6.切换到develop分支
git checkout develop
7.将最近特性合并到当前分支
git merge feature-upgrade
8.删除分支
git branch -d feature-upgrade
应用场景——GitHub创建远程仓库
在实际应用中会把本地的仓库上传到服务器,可用作备份,可用作共同开发,当然也可用于分享。下面主要介绍一下如何把在github上创建远程仓库,并发本地仓库同步到远程仓库。
例子涉及命令如下:
1.将远程仓库地址添加到本地仓库
git remote add origin https://github.com/YuHuaYoung/1th
2.将本地内容推送到远程仓库
git push origin master -f
应用场景——文件暂存和恢复
我们实际工作中,在进行文件修改时,在调试阶段需要对文件进行撤销,备份等操作。利用Git我们可以把文件存放在暂存区,进行文件比较,文件回滚等操作。
例子涉及命令如下:
1.将当前所有修改保存在暂存区
git stash
2.查看当前有哪些储存
git stash list
3.查看存储的具体改动
git stash show
4.将存储的内容恢复到工作区
git stash apply
5.将存储的内容恢复到工作区并删除该存储内容
git stash pop
6.删除指定储存内容
git stash drop stash@{$num}
7.清空所有存储内容
git stash clear
Git Gui的使用
git的操作是通过命令行实现的,对于不熟系命令行的同学来说,通过图形界面的客户端更加方便。我可以通过安装Git for Windows或者GitHub Desktop来进行一些简单的操作。
创建一个空的仓库
添加文件到仓库
将新增文件等添加到仓库(stage区)
提交到版本库
将修改内容提交到版本库
查看历史提交记录
克隆远程仓库
从服务器如github,将远程仓库克隆到本地
推送到远程仓库
将本地的修改推送到远程仓库
同步远程仓库
将远程仓库的最新修改内容同步到本地仓库
[外链图片转存失败(img-sBGOU7hu-1563852050803)(images/同步远程仓库.png)]
新建分支
新建分支是指在原有分支中新建出跟原来分支一模一样内容的分支,分支命令有使用者决定
合并分支
合并分支需要切换到你要“合并到”的分支,再将选择需要合并的分支
配置Beyond Compare作为Git的比较工具
在开发过程中,我们需要对不同版本中的源文件进行比较。使用git时,我们除了使用原生的比较工具git diff
进行比较之外,还可以使用第三方工具,如我们比较常用的Beyond Compare
工具进行比较。而且还可以帮我解决分支合并的一些问题。
1.设置合并工具
git config --global merge.tool bc3
2.设置合并工具路径
git config --global mergetool.bc3.path "D:\\Program Files\\Beyond Compare 4\\BCompare.exe"
3.设置比较工具
git config --global diff.tool bc3
4.设置比较工具路径
git config --global difftool.bc3.path "D:\\Program Files\\Beyond Compare 4\\BCompare.exe"