Git是一个免费的开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目。
版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制的好处在于可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。也可以比较文件的变化细节,从而查看是谁修改了什么地方,导致的一些问题,等等。
*举个例子:假如你今晚需要上线软件的4版本,但在这过程中测试人员发现4版本里有bug,而开发人员无法及时赶来修改bug,这时便可以运用版本控制回溯到之前的3版本。
版本控制系统分为两大类:集中化版本控制系统(常见的有SVN,CVS等)和分布式版本控制系统(常见的有Git)。
集中化版本控制系统都有中央服务器,不同的开发人员可以直接连接服务器获取数据,以及提交下载等等。每个人都可以在一定程度上看到项目中的其他人正在做些什么。但缺点是中央服务器的单点故障。
*举个例子:如果服务器宕机一小时,那么在这一小时中,谁也无法提交更新。假如这个时候你把软件的4版本修改的一塌糊涂,这时你想回溯到3版本,但因为中央服务器宕机,你无法进行操作。(遇到这种情况建议提前备份,这样回溯时可以用备份)。
分布式版本控制系统中,客户端并不只是提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这时每个客户端上都有最新版本和历史版本,这样一来每个客户端都相当于服务器,就算服务器都宕机了,但只要有一个客户端是好的,就没问题。这里也是一个去中心化的思想
而且,许多这类系统都可以指定和若干不同的远端代码仓库进行交互,这样,你就可以在同一个项目中分别和不同工作小组的人互相协作。
分布式版本控制系统在管理项目时存放的不是项目版本与版本之间的差异,他存的是索引(所需磁盘空间很少的所以每个客户端都可以放下整个项目的历史记录)。
*举个例子:假如你用了SVN存储项目(集中化版本控制系统),当你从版本3迭代到版本4的时候,你存储的并不是版本4,而是版本3与版本4的差异。这时你想从版本4回溯到版本1的话,要先从版本4回溯到版本3,再从版本3回溯到版本2……直到版本1,这是非常耗时的。但,假如你用的是git存储项目(分布式版本控制系统),当你从版本3迭代到版本4的时候,你存储的并不是版本4,也不是版本3与版本4的差异,而是版本3的索引,这时你想从版本4回溯到版本1的话,可以直接找到版本1的索引,这是非常快的。
详见博客:https://blog.csdn.net/m0_59188912/article/details/123909979
本地结构:工作区,暂存区,本地库
概念:
写的文件都存在工作区,暂存区里是打算提交的东西,但还没有提交,用作临时存储。本地库里存的都是每个历史版本的信息。
命令:
工作区提交到暂存区:git add
暂存区提交到本地库:git commit
团队内部合作:
跨团队合作:
局域网环境:
搭建GitLab服务器等,适用于团队内部合作。
外网环境:
注册GitHub或Gitee(码云)等,适用于跨团队合作。
GitHub官网:https://github.com/
Gitee官网:https://gitee.com/
*我的这里的一些显示有点问题,为了避免误导大家这里就用马赛克遮掉了。
八. 常用命令
*在Git中命令和Linux是一样的。
注意:
不放在本地仓库中的文件,git是不进行管理的。
即使放在本地仓库的文件,git也不管理,必须通过add,commit命令操作才可以将内容提交到本地库。
当一页显示不下,数据过多的时候会有分屏。
下一页:空格
上一页:b
到尾页显示end
退出:q
本地库的指针移动的同时,重置暂存区,但是工作区不动。
git reset --mixed
本地库的指针移动的时候,暂存区和工作区都不动。
git reset --soft
注意:最常用的就是hard。
删除工作区中的test.txt。
rm test.txt
Git是按照行为单位管理数据。所以,删除一行,添加一行。
git diff 2be3d65 test.txt
九. 分支
概述
在版本控制过程中,使用多条线同时推进多个任务,这里面说的多条线就是多个分支。分支的好处有:同时多个分支可以并行开发,互相不耽误,互相不影响,提高开发效率。
查看当前git里面的所有分支。
git branch -v
当前在那个分支上时通过*来显示
处在合并状态中
出现冲突
在同一个文件的同一个位置,才会出现冲突问题。
解决方法:只能靠人商量,人为决定,留下想要的即可。
十. github注册
注册教程详见博客:https://danbaku.blog.csdn.net/article/details/124912340
十一. 创建github远程库
这就是刚刚创建的远程库的地址
起别名:
git remote add GitRetest https://github.com/Kevinzhushrek/GitRepository.git
fetsh:取回
push:推送
十二. 远程库操作
完成
git clone https://github.com/Kevinzhushrek/GitRepository.git
D盘中出现:
克隆操作可以帮我们初始化本地库、将远程库的内容完整的克隆到本地、替我们创建远程库的别名。
抓取操作:
git fetch GitRetest master
执行抓取操作后,只是将远程库的内容下载到本地。工作区中的文件并没有更新,工作区中还是原先的内容。
这时可以切换到下载下来的远程库的master中查看里面的内容。
git checkout GitRetest/master
发现没有什么问题即可进行合并操作:
git merge GitRetest/master
以上两个操作也可以通过一个操作解决:
git merge GitRetest/master
(未完待续……先学这么多就够了,后面的以后有空更)
本篇博客为本人学习Git时的详细记录,如有错误之处,还望各位指正。
文章为原创,如要转载请注明出处