什么是Git
简单说,git就是版本管理工具。
Git解决的问题
试想一下,你是公司的设计人员。老板要求你设计一份海报。你花了3天时间,画好了,并命名为海报1.0.然后你给老板看,老板看了说“设计的很好,要是能再改一下就好了。”
于是你保存了海报1.0,并基于海报1.0开始修改, 改了后 ,命名为海报2.0.给老板看。
老板说“你要是再改…, 就更完美了。”
于是就出现了以下情况:
这有两个大的问题:
- 随着修改版本越多,这个包会越来越大,难以管理。
- 这个海报我可能只需要修改一点点内容,但是却要用一个新的版本命名,非常麻烦。
Git的核心原理
把当前阶段的修改 作为一个 快照 进行保存。
- 注意是,修改,Git只关注修改。
- 快照,它像照相机一样记录下这一刻的修改。
试想一下,如果你拥有一台时空相机,你拍下 “1999年的香港”,“2002年的雪”,“2008年的北京奥运会”的相片,现在2022的你,可以随时通过相机进入到当年那个场景。
关于仓库Repository
仓库就是Git中用于存放项目文件的容器。
它分为本地仓库和远程仓库。
我们从实际公司项目说起:
公司有个项目A,它把项目配置在GitLab网站上,这个就是远程仓库,只要有权限都可以访问到。(gitHub也同理)
如果别人有代码修改提交到远程仓库,其他小伙伴就能及时看到(但要记得Fetch更新)。
本地仓库,就是放置在个人设备上的,只有你自己看得到。别的小伙伴是看不到的,除非他走过来,瞄一眼你的电脑。
我们从远程仓库中, 克隆 项目地址 https://xxxx.xxx.xxxx. git.,选择克隆的本地路径,那么远程仓库项目就会被下到你的个人设备上。
关于分支Branch
可以这么说,拥有记录快照的功能绝对难以让Git拥有如此高的地位,而让Git真正占领高地的是它强大、便捷的分支管理。
对于一个项目仓库,我们在创建仓库时,就有一个默认的分支,名为Master,当然你也可以自定义修改,不过一般都不会去改,因为几乎所有的项目都会以Master作为主分支的命名。
除了Master以外,我们也可以从主线上分离出来,进行另外的操作,既不影响主线Master, 主线Master又可以继续干它的事。
关于常见的Git一些操作
Clone:克隆,就是我们常说的“你把项目拉下来”。一般有两种方式,SSL和Https.
HTTPS是通过验证远程仓库权限账号和密码,而SSL是需要验证远程配置的rsa公钥和个人设备的rsa私有密钥。
Check Out: 检出分支,就是我们常说的“切分支”。
Commit: 提交分支的修改,修改是提交到本地的,commit会提交到本地仓库。
Push:推送,将本地提交的修改推送到远程仓库,只有推送了,远程仓库的分支才有修改。
Pull: 拉取,将一个远程仓库的分支的代码拉取到你的当前分支。
Merge:合并,将一个A分支的代码修改并入另外一个B分支,使得B分支拥有了A分支的代码。
Fetch:抓取或者叫获取, 就是让本地能够获取到 远程仓库的最新代码,可以理解为刷新。