在Git出现之前,使用集中式版本控制系统(如CVS和Subversion)是常见的做法。集中式版本控制系统是指将代码都存储到一个中央服务器中,但这样失去了开发者对代码的自由度和灵活性有一定的限制。
为了管理Linux内核的开发,Linus Torvalds决定创建一个新的版本控制系统。起初,他使用BitKeeper作为Linux内核的版本控制工具,但是由于与BitKeeper的合作关系出现问题,迫使他开始着手开发自己的版本控制系统。
在2005年,Linus Torvalds发布了Git,并将其用于管理Linux内核的开发。Git的设计目标是速度、简单性和强大的分支和合并功能。
Git拥有庞大的开发者社区,他们贡献了许多工具、插件和扩展,丰富了Git的生态系统。这些社区的贡献者和Git的用户相互交流和分享经验,使Git的使用更加方便和强大。
分布式和集中式是两个相对的概念,前面讲到过 在集中式版本控制系统中,我们的代码都在一台中央服务器上进行管理,也就是中央服务器是一台巨大的代码仓库,这样降低了开发者对于代码的控制。
这个时候就出现了分布式管理系统。
Git是一个免费且开源的版本控制系统.旨在快速高效地处理从小型到超大型项目的所有项目。
Git 易于学习,占用空间小,性能快如闪电。它超越了 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具,具有廉价的本地分支、方便的暂存区域和多个工作流程等功能。
#更新apt源
sudo apt update && sudo apt upgrade
#使用apt安装git
sudo apt install git -y
在使用Git之前,需要先对Git写一个简单的配置,这定义了提交代码时的用户名以及邮箱
在终端输入以下内容:
#配置邮箱
git config --global user.email "邮箱"
#配置用户名
git config --global user.name "用户名"
克隆(clone)指从远程仓库把代码仓库复制下来的过程,这里的远程仓库可以是Gitee,GitHub,GitLab等平台,只要是支持git就可以。亦或者也可以是自己搭建的git服务器(通常在公司企业内部会使用)。
命令很简单,如下:
#克隆仓库
git clone -b 分支名 git仓库地址
#例如:
git clone -b master https://gitee.com/cancerai/web
#其中有个-b的参数,它用来指定远程仓库的分支,因为我这仓库默认就是master分支,所以该参数可以省略不写,如下:
git clone https://gitee.com/cancerai/web
克隆成功后应该是长这样的:
克隆下来的是一个文件夹(git工作目录),这时候可以cd进这个目录中对仓库进行操作
Tip:在那里使用git clone命令即克隆哪个目录下,如上图我在/home/cancerai/Documents/open-source/使用了git clone
那么仓库的目录路径就是/home/cancerai/Documents/open-source/demo
了解git的提交流程能对我们代码的理解更深,下面是大致的一个提交流程,可分为3个步骤:
提交到暂存区 -> 从暂存区提交到本地仓库 -> 提交到远程仓库
#语法:
git add 暂存的文件
#如果需要暂存所有更改的内容,则可以直接输入"."
git add .
可以使用以下命令将暂存区的内容提交到本地仓库中
#语法:
git commit -m "名字"
这里的名字就是你对之前add的文件起个注释,可以用于说明该文件在该版本下的改动,也可以随便写(不影响提交文件)
例如:
git commit -m "file"
在提交到远程仓库的时候也很简单,语法如下:
#语法:
git push origin master:master
这里的参数乍一看有点多,不过没关系,我们一点点来看
首先push是用于提交的参数,而后面的origin代表我们要指定提交到哪个分支
master:master???翻译成中文就是???本地仓库分支名:远程仓库分支名
这样的话这行代码的意思就是把本地名为master的分支提交到远程名为master的分支上。
不过这种写法也可以有简写:在git中当本地和远程的分支名一样时,可以写成一个
git push origin master
但这样还是会觉得有些麻烦,问题不大,git还给出了更为简单的写法
git push
在git中默认的分支就是master,所以你就算不写后面的master,git也知道你要提交到哪个分支 而origin后面没有给具体的参数,所以也可以省略不写
在输入完git push后,系统会提示让你输入你的账号密码,这个是用来验证你的身份信息
在输入密码时,在linux下会有保护机制,不会显示出密码,只要尽管输入就可以,就像这样:
???????Git作为现在主流的版本控制工具已经被众多程序员大量使用,本文仅仅列出了最基础的Git用法,里面还有很多命令值得我们去学习,例如分支的控制,版本控制,历史查询,版本回退等等许多功能,详细可参考官方手册:https://git-scm.com/book/zh/v2