Git0基础从入门到精通

早期版本控制系统

在Git出现之前,使用集中式版本控制系统(如CVS和Subversion)是常见的做法。集中式版本控制系统是指将代码都存储到一个中央服务器 中,但这样失去了开发者对代码的自由度灵活性有一定的限制。

Linux内核开发

为了管理Linux内核的开发,Linus Torvalds决定创建一个新的版本控制系统。起初,他使用BitKeeper作为Linux内核的版本控制工具,但是由于与BitKeeper的合作关系出现问题,迫使他开始着手开发自己的版本控制系统。

Git的诞生

在2005年,Linus Torvalds发布了Git,并将其用于管理Linux内核的开发。Git的设计目标是速度简单性强大的分支合并功能

社区和生态系统

Git拥有庞大的开发者社区,他们贡献了许多工具、插件和扩展,丰富了Git的生态系统。这些社区的贡献者和Git的用户相互交流和分享经验,使Git的使用更加方便和强大。

什么是分布式

分布式管理系统介绍

分布式和集中式是两个相对的概念,前面讲到过 在集中式版本控制系统中,我们的代码都在一台中央服务器上进行管理,也就是中央服务器是一台巨大的代码仓库,这样降低了开发者对于代码的控制。

这个时候就出现了分布式管理系统

  • 怎么理解分布式: 用通俗点的话来说,分布式实际上就是众多开发者把远程仓库克隆(clone)到本地进行管理的方式,开发者可以把clone下来的代码仓库在本地进行版本的管理,最后再把成果提交到远程仓库进行代码合并。他可以把一个大的工作拆分成无数个小的工作来完成。

什么是Git

Git简介

Git是一个免费且开源 的版本控制系统.旨在快速高效地处理从小型到超大型项目的所有项目。 Git 易于学习占用空间小性能快如闪电。它超越了 Subversion、CVS、Perforce 和 ClearCase 等 SCM 工具,具有廉价的本地分支、方便的暂存区域和多个工作流程等功能。

Git的基础使用

下载与安装

bash 复制代码
#更新apt源
sudo apt update && sudo apt upgrade
#使用apt安装git
sudo apt install git -y

配置Git

在使用Git之前,需要先对Git写一个简单的配置,这定义了提交代码时的用户名以及邮箱 在终端输入以下内容:

bash 复制代码
#配置邮箱
git config --global user.email "邮箱"
#配置用户名
git config --global user.name "用户名"

克隆(clone)代码

克隆 (clone)指从远程仓库把代码仓库复制下来的过程,这里的远程仓库可以是Gitee,GitHub,GitLab 等平台,只要是支持git就可以。亦或者也可以是自己搭建的git服务器(通常在公司企业内部会使用)。 命令很简单,如下:

bash 复制代码
#克隆仓库
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提交流程

了解git的提交流程能对我们代码的理解更深,下面是大致的一个提交流程,可分为3个步骤:

提交到暂存区 -> 从暂存区提交到本地仓库 -> 提交到远程仓库

提交到暂存区

  • 什么是暂存区 英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index),相当于内存的缓存。 代码如下:
bash 复制代码
#语法:
git add 暂存的文件

#如果需要暂存所有更改的内容,则可以直接输入"."
git add .

提交到本地仓库

可以使用以下命令将暂存区的内容提交到本地仓库中

bash 复制代码
#语法:
git commit -m "名字"

这里的名字就是你对之前add的文件起个注释,可以用于说明该文件在该版本下的改动,也可以随便写(不影响提交文件) 例如:

bash 复制代码
git commit -m "file"

提交到远程仓库

在提交到远程仓库的时候也很简单,语法如下:

bash 复制代码
#语法:
git push origin master:master

这里的参数乍一看有点多,不过没关系,我们一点点来看 首先push是用于提交的参数,而后面的origin代表我们要指定提交到哪个分支 master:master 翻译成中文就是 本地仓库分支名:远程仓库分支名 这样的话这行代码的意思就是把本地名为master的分支提交到远程名为master的分支上。

不过这种写法也可以有简写:在git中当本地和远程的分支名一样时,可以写成一个

bash 复制代码
git push origin master

但这样还是会觉得有些麻烦,问题不大,git还给出了更为简单的写法

bash 复制代码
git push

在git中默认的分支就是master,所以你就算不写后面的master,git也知道你要提交到哪个分支 而origin后面没有给具体的参数,所以也可以省略不写

perl 复制代码
在输入完git push后,系统会提示让你输入你的账号密码,这个是用来验证你的身份信息
在输入密码时,在linux下会有保护机制,不会显示出密码,只要尽管输入就可以,就像这样:

总结

Git作为现在主流的版本控制工具已经被众多程序员大量使用,本文仅仅列出了最基础的Git用法,里面还有很多命令值得我们去学习,例如分支的控制,版本控制,历史查询,版本回退等等许多功能,详细可参考官方手册:git-scm.com/book/zh/v2

相关推荐
l and2 小时前
Git 行尾换行符,导致无法进入游戏
android·git
风行男孩2 小时前
Git 中忽略文件的版本跟踪(初级方法及高级方法)
git
ziyu_jia2 小时前
【日常开发】Git Stash使用技巧
git·git stash
catmes9 小时前
Git开发常用命令总结
git
是姜姜啊!14 小时前
git命令
git
云只上18 小时前
git更改当前项目的远程仓库,保留原始仓库提交记录提交到新仓库
git
__zhangheng19 小时前
Mac 查询IP配置,网络代理
linux·服务器·网络·git
乐闻x19 小时前
VSCode 插件开发实战(十二):如何集成Git操作能力
ide·git·vscode
旺旺大力包1 天前
【 Git 】git 的安装和使用
前端·笔记·git
Domain-zhuo1 天前
Git和SVN有什么区别?
前端·javascript·vue.js·git·svn·webpack·node.js