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

相关推荐
可乐_不渴7 小时前
【Linux】 项目自动化构建工具makefile&& 版本管理Git&&第一个程序
linux·git·自动化·1024程序员节
lzx_00210 小时前
Linux 开发工具(六) 版本管理器git的简单使用
git·1024程序员节
jiangliushi611 小时前
GPT-6.1 Sol 免费用:git status 里中文文件名变成一串数字乱?条命令改好
git·codex·1024程序员节
import_random1 天前
[git]只有git,没有github, 如何工作
git·github
import_random1 天前
[git]先创建远程仓库or先创建本地项目
git·github
Linux实战笔记1 天前
rebase 变基引发提交哈希重写与指针机制分析
git·rebase·提交哈希·分支模型·代码合并
小稀土1231 天前
私有化研发协同系统并行期:旧 Jira 与新 Git 并存 6 条数据规则
git
Madison-No71 天前
Git版本控制工具(二)
git
Brookty2 天前
Git 与 GitHub|第一阶段:仓库、版本历史与 Git 对象模型(上篇)
git·github
Kimnol2 天前
我的第一次 Git 贡献:从 fork 到合并 PR #3130
git