【版本控制】git使用指南

Git 仓库通常分为本地仓库(Local Repository)和远程仓库(Remote Repository)两种类型。

本地仓库 :本地仓库是存储在本地计算机上的 Git 仓库副本。它包含了完整的项目历史记录、分支、提交等信息。本地仓库通常用于开发人员在本地进行代码的修改、提交、版本控制等操作。您可以在本地仓库中创建分支、合并分支、提交更改等操作,所有这些操作都不需要网络连接,而是在本地进行的。

远程仓库:远程仓库是存储在远程服务器上的 Git 仓库副本。它用于多个开发人员之间共享和协作代码,并作为代码的中央存储库。远程仓库通常托管在代码托管平台(如 GitHubGitLabGitee 等)或者公司内部的 Git 服务器上。开发人员可以将本地仓库中的更改推送(push)到远程仓库,或者从远程仓库拉取(pull)最新的代码更改。

2.2 对象数据库(Object Database)

在 Git 中,对象数据库(Object Database)是一个存储 Git 版本库中所有数据对象的重要组成部分。它通常位于 .git/objects 目录下。

Git 中的对象是指存储在版本库中的数据实体,主要包括以下几种类型的对象:

1、Blob 对象(文件内容对象):
Blob 对象存储的是文件的内容。在 Git 中,每个文件的内容都被存储为一个 Blob 对象。Blob 对象通过 SHA-1 校验和来标识,并且它们是不可修改的,即一旦创建就不能修改。

2、Tree 对象(目录对象):
Tree 对象存储的是文件和子目录的列表以及它们的权限和文件名等信息。每个提交对象都包含一个指向根 Tree 对象的引用,通过 Tree 对象可以构建整个目录结构。

3、Commit 对象(提交对象):
Commit 对象包含了一次提交的元数据信息,包括作者、提交者、提交时间、提交信息等。每个提交对象都包含一个指向对应的 Tree 对象的引用,以及可能存在的一个或多个父提交对象的引用(如果是合并提交的话)。

	$ git log
	# commit 8c99d09c27215262526763862d44626ccd7c5875 (HEAD -> master)
	# 上面这串数字是提交对象的哈希值

4、Tag 对象(标签对象):
Tag 对象用于给某个特定的提交打标签,标识出一个重要的里程碑或版本号。Tag 对象通常包含了标签名称、标签信息、标签创建者等信息,以及指向被标记的提交对象的引用。

这些对象被存储在 Git 的对象数据库中,每个对象都有一个唯一的 SHA-1 校验和作为其标识符。Git 使用对象数据库来管理和存储所有的项目数据,包括文件内容、目录结构、提交历史等。

对象数据库是 Git 版本控制系统的核心组件,它提供了高效的数据存储和检索功能,确保了版本库的完整性和可靠性。

2.3 索引(Index)

索引是一个暂存区域,用于存储当前工作目录中的更改,记录了当前工作目录中文件的状态和更改,但尚未提交到仓库中。索引是一个中间状态,介于工作目录和仓库之间。

当对文件进行修改并使用 git add 命令将这些更改添加到索引中时,Git 会根据文件的路径和内容生成一个校验和(checksum)来标识这些更改,用于确定文件内容是否发生了变化。

当执行 git commit 命令时,Git 会使用当前索引中的文件状态创建一个新的提交对象,并为该提交对象分配一个唯一的 SHA-1 校验和作为其标识符。因此,每个提交对象都有一个唯一的 ID。

索引与当前工作目录和提交历史相关联,用于暂存和准备提交更改。提交对象具有唯一的标识符,用于标识每次提交的内容。

2.4 分支(Branch)

在 Git 中,分支(Branch)是指向 Git 仓库中的一个提交对象的可变指针。它实际上是一个轻量级的指针,指向了项目提交历史中的某一个提交对象。分支可以看作是一系列提交的引用,它们按照提交顺序形成了一个分支的历史记录。

每个分支都有一个名称,可以通过这个名称来引用分支。在 Git 中,默认的主分支通常被称为 "master" 分支,但也可以根据项目需求自定义其他名称的分支。分支名称通常用来表示项目的不同功能特性、开发版本或者修复补丁等。

本地会有一个HEAD标签,代表处于工作区的分支。

分支在 Git 中扮演了重要的角色,它们提供了一种轻松管理和组织项目开发的方式。通过分支,可以实现以下功能:

1. 并行开发:多个开发人员可以在不同的分支上同时进行工作,而不会相互干扰。

2. 功能开发:每个功能特性可以在独立的分支上进行开发,便于管理和跟踪功能的开发进度。

3. 版本控制:每个版本或发布可以在单独的分支上进行管理,使得可以方便地回溯历史版本或发布新版本。

4. 修复补丁:可以在分支上快速创建和提交修复程序,然后合并到主分支中。

5.实验性开发:可以在单独的分支上进行实验性的开发,不影响主分支或其他稳定分支。

分支的创建、切换、合并和删除等操作都可以通过 Git 提供的命令轻松完成。分支是 Git 版本控制系统中一个非常强大和灵活的特性,它使得团队能够更加高效地进行协作开发,并且更好地管理和组织项目的开发流程。

三、git的基本操作

Git 的基本操作涉及到对仓库的创建、配置、文件的添加、提交、查看状态、查看历史记录等操作。下面是一些常见的 Git 基本操作及其用法:

1. 初始化仓库
git init:在当前目录创建一个新的 Git 仓库。
git clone <remote-url>:从远程仓库克隆一个新的仓库到本地,并将远程仓库的地址保存为origin。也就是说这个origin是指向远程仓库的引用名。

2. 配置用户信息
git config --global user.name "Your Name":配置全局用户名。
git config --global user.email "your.email@example.com":配置全局用户邮箱。

3. 文件
git add <file>:将指定文件添加到索引中。
git add .:将当前目录下所有文件添加到索引中。
git reset HEAD <file_name>:将文件从暂存区回退到工作区
**4.提交更改**:git commit -m “Commit message”:将索引中的更改提交到本地仓库,并附上提交信息。 git commit --amend` : 将索引中的修改合并到最新的提交上。

5. 查看状态
git status:查看工作区和索引的状态,了解文件的修改状态。

6. 查看历史记录
git log:查看提交历史记录。

7.撤销回退
git checkout -- <file>:撤销对文件的修改,将文件恢复到最近一次提交的状态。
git reset HEAD <file>:将文件从索引中移除,取消添加到暂存区的更改。
git reset [commitId]:回退到commitId,改动全部返还给工作区
git reset [commitId] --hard :回退到commitId,但是会删除全部的改动

8. 分支操作
git branch <branchname>:本地仓库创建一个新的分支。
git checkout <branchname>:本地仓库切换到指定分支。
git merge <branchname>:将指定分支合并到当前HEAD分支。
git checkout -b [local_branch_name] origin/[remote_branch_name] : 本地创建一个新的分支,更新到远程的一个分支,然后切换到这个新分支。
git branch --set-upstream-to=origin/master master :将本地的master分支和远程的master分支绑定

9. 远程操作
git remote add origin <remote-url>:添加远程仓库。
git push -u origin master:将本地仓库的更改推送到远程仓库。-u 会将本地分支与远程仓库同名分支关联起来,后续就只用git push了。
git pull origin master:从远程仓库拉取最新更改到本地仓库。如果分支关联起来了也只用git pull
git pull -- rebase:拉取远程分支,使用rebase方式
git push --set-upstream origin [name1]:[name2] :将本地name1分支推送到远程的name2分支,并关联起来
git ls-remote --tags origin : 显示远程仓库的分支的标签

10.文件比较
git diff [commit1]:查看暂存区和commit1(提交对象的哈希值)提交之间的差异
git diff [commit1][commit2]:查看commit2相对commit1提交而言的差异。

四、git实战

# test1 : 初始化git仓并链接到远程分支
git config --global user.email "\*\*\*.\*\*\*.com" # 配置全局邮箱
git config --global user.name "\*\*\*" # 配置全局用户名
git init # 将当前文件夹变成git文件夹
echo "123" > 1.txt # 生成一个txt文件,写入"123"
git add . # 将修改全部添加到暂存区(索引)
git commit -m "\*\*\*" # 将暂存区中的修改添加到本地仓库 PS:必须commit一次
git remote add origin https://gitee.com/***/git-demo.git # 链接远程仓库
git push -u origin master # 推入远程分支并于同名分支相关联

# test2 :推入另一个分支,假设远程有test分支,现在本地只有master
git branch test # 本地创建test分支
git checkout test # 本地切换分支到test分支
echo "123" > 2.txt # 生成一个txt文件,写入"123"
git add .
git commit -m "2"
git push -u origin test # 将本地test分支推入远程同名分支并关联

# test3 : 多人合作,假如远程有你没有的文件,需要先拉取远程pull同步


**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/ccc6d003b9fb2cc2c61be2e56341a061.png)
![img](https://img-blog.csdnimg.cn/img_convert/a5d1b5d02acf1c78bcc5f14a82c66ca3.png)
![img](https://img-blog.csdnimg.cn/img_convert/25b9755c34fdd95991a92e31e0743965.png)
![img](https://img-blog.csdnimg.cn/img_convert/2099b4b3c584fff7f90c8c566c5c2893.png)
![img](https://img-blog.csdnimg.cn/img_convert/42276ef9d6495fb7419987bf6fc9c6eb.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
![img](https://img-blog.csdnimg.cn/img_convert/521437da980ed214bc34237c5d24f11a.png)

伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
[外链图片转存中...(img-uSoYgWdU-1712871797174)]

  • 14
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值