这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记
一、Git概述
Git是一个免费、开源的分布式版本控制系统,旨在快速、高效的处理从小型到超大型项目的管理。
1.1 关于版本控制
-
什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,记录文件修改的历史版本的系统,以便将来查阅特定版本修订情况,方便进行版本切换(将文件回溯到之前的某个状态)。
-
我们为什么需要版本控制? 从个人开发过渡到高效的团队协作。在接触到版本控制工具之前,我在需要不断修改某个项目的时候,最简单的做法就是修改一次就复制整个目录,并在命名时加上备份时间加以区分。但是修改频率高了就很难实施了,而且有不小心删掉或者覆盖掉某些重要版本的风险。最重要的是如果多人合作时,两个人同时修改某个文件的某个部分,到时候要如何做合并?如何记录谁在什么时候修改了什么内容?使用版本控制系统能几乎不增加额外工作量的情况下解决上面的问题。
1.2 版本控制工具
- 集中式 VS 分布式
- 集中式版本控制系统 (Centralized Version Control Systems) 比如SVN,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。这种做法的好处是每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个服务器要远比在各个客户端上维护本地数据库来得轻松容易。缺点就是中央服务器单点故障,在自己的本地工作区上不能做版本控制。
- 分布式版本控制系统(Distributed Version Control System) 比如Git,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。相比集中式这样做的好处一是版本控制在本地进行,远程服务器断网也能进行开发;二是每个客户端都保存完整的项目和历史记录,更加安全。
Git与SVN的区别
【参考菜鸟?】
1.3 Git简史
- 1991-2002年间,Linux内核开源项目有着为数众广的参与者。绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(Linus Torvalds手动合并代码)。
- 到2002年,整个项目组开始启用一个专有的分布式版本控制系统BitKeeper来管理和维护代码。
- 到了2005年,开发BitKeeper的商业公司同Linux内核开源社区的合作关系结束,他们收回了Linux内核社区免费使用BitKeeper的权力。
- 从2005年4月3号开始开发, Linux之父Linus到4月7日仅四天时间就开发出了Git雏形。到同年6月份,Linux已经在使用Git管理代码了。
- Github诞生于2008年,现在已经是全球最大的代码托管平台。他们使用的技术栈非常简易,Ruby、Shell和C。
1.4 工作机制
。。。
1.5 托管中心/远程库
代码托管中心是基于网络服务器的远程代码仓库,比如GitHub(全球最大)、Gitee码云(中国)、GitLab(局域网)
二、Git客户端安装
Windows平台安装,下载exe文件并 官网 git-scm.com/download/wi… 官网慢,可以用国内镜像 npm.taobao.org/mirrors/git…
2.1 安装
- 运行exe文件,一直点Next下一步保持默认即可,部分可选项的含义如下
- 安装成功:右键菜单有git bash和git gui选项,打开git bash,可以用Ctrl+滚轮调整字体大小,输入git --version可以查看版本号
2.2 配置
- git config用来配置或读取相应的工作环境变量。这些环境变量,决定了 Git 在各个环节的具体工作方式和行为,遵循就近原则。
git config --system #系统中对所有用户都适用的配置,读写的是安装目录[mingw64]/etc/gitconfig文件
git config --global #对当前用户的所有项目有效,读写的是[系统用户目录]/.gitconfig文件
git config #仅仅针对当前项目有效,读写的是当前项目的.git/config文件
- 当安装完 Git 应该做的第一件事就是设置用户名称与邮件地址,每一次Git提交都会使用这些信息,修改了文件总得让git知道是哪个用户修改的吧
git config --global user.name "TTK"
git config --global user.email test@qq.com
# 配置成功后可以看在[系统用户目录]下生成了.gitconfig文件,里面有刚配置的信息
# 也可以直接在文件里修改配置信息
-
可以使用
git config --list命令来显示所有Git当时能找到的配置,用git config user.name来查看具体某个配置。 -
可以用
git config --global core.editor vim命令配置默认文本编辑器 -
还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:
git config --global merge.tool vimdiff,