一篇文章搞定Git

为什么需要Git

😄协同修改

  • 多个人可以并行不悖的修改服务器端的同一个文件,实现跨区域多人协同开发。

😆数据备份

  • 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。

🤭版本管理

  • 在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。

🤨权限控制

  • 对团队中参与开发的人员进行权限控制,且会对团队外开发者贡献的代码进行审核。

😶历史记录

  • 可以查看修改人、修改时间、修改内容、日志信息,同时也可以将本地文件恢复到某一个历史状态。

😬分支管理

  • 允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

版本控制

版本控制是一种在开发过程中用于管理我们对文件、目录或者工程等内容的修改历史,方便查看修改历史记录,备份以便于恢复到以前版本的软件工程技术。

主流的版本控制器

  • 集中式版本控制工具:CVS、SVN、VSS 等。

特点:所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。且用户本地只有自己以前所同步的版本,若不联网,用户就看不到历史版本,也无法切换版本,或者在不同的分支工作。且所有数据都保存在单一的服务器上,若服务器损坏则会丢失所有数据。

在这里插入图片描述

  • 分布式版本控制工具:Git、Mercurial、Bazaar、Darcs 等。

特点:所有的版本信息全部同步到每个用户的本地,这样用户就可以在本地查看所有历史版本,也可以离线地在本地提交,只需要在联网时push到相应的服务器或者其他用户即可。由于每个用户都保存着所有的版本数据,那么只要有一个用户的设备正常,就可以恢复所有数据。

在这里插入图片描述

Git的优势

  • 大部分操作在本地完成,不需要联网
  • 完整性保证
  • 尽可能添加数据而不是删除或修改数据
  • 分支操作非常快捷流畅
  • 与 Linux 命令全面兼容

Git安装

官网地址:https://git-scm.com/

Git结构

Git本地有三个工作区域,工作目录(Working Directory)、暂存区(Stage / Index)、仓库区(Repository)。如果算上远程的Git仓库(Remote Directory),就可以分为四个区域,其中它们的转换关系如下:
在这里插入图片描述
工作目录:就是平时存放代码的地方。

暂存区:用于临时存放改动的信息,实际上是一个文件,保存着即将提交的文件列表信息。

仓库区:又称本地仓库,安全存放数据的位置,里面有历史提交的所有版本的数据。其中Head指针指向最新存入仓库的版本。

远程仓库:托管代码的服务器,任务是维护远程库,可用于远程数据交换。
在这里插入图片描述
Directory:使用Git管理的一个目录,就是一个仓库。

WorkSpace:工作空间,里面包含了需要通过Git进行版本控制的目录和文件。

.git:一个隐藏文件,在初始化仓库时创建,存放着Git管理信息的目录。

Stage / Index:又叫待提交更新区,在提交到Repo之前,把所有的更新存放到这里。

Local Repo:一个存放在本地的版本库,可以控制Head指针指向当前开发的分支。

State:一个工作状态保存栈,用于保存或恢复WorkSpace中的临时状态。

Git 和代码托管中心

内网环境下

  • GitLab服务器

外网环境下

  • GitHub
  • 码云

本地库和远程库的交互

团队内部协作

在这里插入图片描述

  • 团队中用户1创建了远程库,然后将本地库内容Push到了远程库中。
  • 用户2可以通过Clone将远程库中的内容克隆下来。若用户2非团队成员,则无法之间将自己本地库中的内容Push到远程库中,需要先加入团队才可进行Push操作。
  • 用户2Push完毕后,用户1可以通过Pull操作来获取用户2的修改到本地库中。

团队间协作

在这里插入图片描述

  • 团队2中的用户3想要获取团队1的远程库的内容,可以通过Fork操作复制一个完全一样的远程库,用户3可以将其Clone下来,也可以将本地库中的内容Push到该远程库中。
  • 用户3若想向团队1的远程库中Pull内容,需要向团队1的远程库的创建者用户1发起一个Pull request,待其审核完毕后,用户1便可以通过Merge操作把用户3Pull的内容合并到团队1的远程库中。然后团队1成员便可通过Pull操作获取到远程库中的内容。

Git的命令行操作

初始化本地库

  • 我们在D盘下新建一个workspaces目录作为工作空间,然后右键选择Git Bash Here可以进入Git的命令行界面
    在这里插入图片描述
  • 创建一个目录WeChat,假设将其作为我们开发的一个项目,然后使用git init来初始化本地库
    在这里插入图片描述
  • 此时会生成一个隐藏的.git文件
    在这里插入图片描述

设置签名

初始化完本地库后可以为其设置项目级别 / 仓库级别的签名,若没有设置则使用系统用户级别的签名。其中项目级别 / 仓库级别的签名仅在本地库范围内有效,若两种签名都有则就近原则以仓库级别的为准。

  • 设置仓库级别的签名

在这里插入图片描述

  • 设置系统用户级别的签名

    • git config --global user.name xxx
    • git config --global user.email xxx
    • 签名信息保存在~/.gitconfig文件中
  • 查看系统用户级别的签名
    在这里插入图片描述

添加提交和查看状态

  • 查看状态:git status
    在这里插入图片描述
    没有任何commit,也没有东西可以commit,可以创建或者复制文件,然后使用git add命令来追踪管理文件。

  • 使用vim编辑器来创建文件,然后再次查看状态

在这里插入图片描述
没有任何commit,未追踪的文件有good.txt,没有东西被放到暂存区中,可以使用使用git add命令来追踪管理。

  • 提交到暂存区:git add
    在这里插入图片描述
    此时再次查看状态,good.txt已经被放到暂存区中,可以使用git rm --cached <file>来将文件从暂存区移除。

  • 从暂存区提交到本地库:git commit <file>
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

版本的前进和后退

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

reset命令的三个参数对比

  • –soft参数:仅在本地库移动Head指针。
  • –mixed参数:在本地库移动Head指针,并重置暂存区。
  • –hard参数:在本地库移动Head指针,并重置暂存区和工作区。

把删除记录提交到本地库:

在这里插入图片描述
在这里插入图片描述

找回把删除提交到暂存区的文件

在这里插入图片描述

文件的比较

在这里插入图片描述
在这里插入图片描述

分支

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Git的文件管理机制

在这里插入图片描述

Git的分支管理机制

在这里插入图片描述
在这里插入图片描述

本地库和远程仓库交互

在GitHub中创建远程仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

克隆操作

在这里插入图片描述
在这里插入图片描述

拉取(Pull)操作

现在Wechat用户想要把QQ用户push的内容拉取到本地库中,可以使用pull操作。而pull操作可以分为fetch和merge两个步骤:

  • fetch抓取:git fetch <远程仓库地址><远程分支名>
  • merge合并:git merge <远程仓库地址 / 远程分支名>

这是一种保险的方式,先抓取确认内容没有问题后再合并。进行当然也可以一步到位:

  • git pull <远程仓库地址><远程分支名>

跨团队操作

在这里插入图片描述

  • 最后由Wechat用户(远程仓库的创建者)来审核即可

文章notion链接

https://www.notion.so/Git-85f9e7c47656410e999ed255f8b767b8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值