Git使用和相关原理记录

本文详细介绍了Git作为版本控制工具的功能,包括协同修改、数据备份、权限控制、历史记录、分支管理等。讲解了Git的基本结构,本地库与远程库的交互,团队和跨团队协作,并详细阐述了Git命令行操作,如初始化、设置签名、添加内容、删除、提交、版本回退、找回永久删除文件及比较文件差异。最后,讨论了Git的分支管理及其在不同工作场景的应用。
摘要由CSDN通过智能技术生成
在企业开发中Git和SVN这两类版本控制工具必不可少,SVN属于集中式版本控制工具,Git属于分布式版本控制工具,本文主要对Git的使用和相关原理进行记录

参考视频(尚硅谷Git&GitHub)
https://www.bilibili.com/video/BV1pW411A7a5

1 版本控制工具简介

版本控制工具应具备如下功能:
    1)协同修改 :多人并行不悖的修改服务器端的同一个文件。
    2)数据备份 :不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
    3)版本管理 :在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文 件系统快照的方式。
    4)权限控制 :对团队中参与开发的人员进行权限控制。 对团队外开发者贡献的代码进行审核——Git 独有。
    5)历史记录 :查看修改人、修改时间、修改内容、日志信息。 将本地文件恢复到某一个历史状态。
    6)分支管理 :允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

关于Git的安装较为简单,可参考如下博客
https://www.cnblogs.com/xueweisuoyong/p/11914045.html

2 Git结构

在这里插入图片描述

3 Git与其托管中心

在这里插入图片描述

4 本地库与远程库

4.1 团队协作
4.2 跨团队协作

5 Git的命令行

#先列出常用的命令
git status    //查看工作区或者暂存区状态
git add      //将工作区的内容添加到暂存区
git commit  // 将暂存区中的内容提交到本地库
git log     //查看提交日志
git reflog   //获取日志并显示移动到某一版本需要对head移动几步
git reset --hard [局部索引值] 重新定位版本
git reset --hard HEAD^ //只能后退版本 后面加几个^就会后退几步
git reset --hard HEAD~[n]//只能后退版本,后退n步
git diff [文件名] //工作区和暂存区内的文件进行比较,比较文件之间的差异
git diff [本地库中的历史版本][文件名] //工作区和本地库某一历史版本文件进行比较
git branch -v  //查看有多少个分支
git branch [分支名称] //创建新的分支
git checkout [分支名] //切换分支 
//如果想合并分支,应先切换到接受修改的分支,然后再执行合并操作
git merge [被合并的分支的名字]
git remote add [别名] [github远程地址] //给远程地址起一个别名
git push [远程地址/远程地址的别名] [分支名] //把本地仓库内容推送到远程仓库
git clone [远程地址]   //把远程仓库的内容克隆下来到本地,如想要对其操作要进入到克隆的目录
//pull=fetch+merge
git fetch [远程库地址别名/远程库地址] [远程分支]
git merge [远程地址别名//远程分支名]


5.1 本地库初始化
在本地创建以工作空间来充当自己的项目,比如d:/workspace/gitspace,然后执行如下命令,

git init

命令执行后会在当前目录下自动创建出.git/ 其目录结构如下:
在这里插入图片描述
注意:.git/ 里面存放的是本地库相关的子目录和文件,不能删除
5.2 设置签名
作用:区分不同开发人员的身份;
形式: 用户名:tom Email地址:fhdash@123.com
注意:这里设置的签名和远程库的账号密码完全不是一回事。
命令:该命令可以分为项目级别(仓库级别)和系统级别两种,项目级别签名在项目内有效,而系统级别的签名可以在整个系统用户登录中有效,系统级别的作用范围大。

#仓库级别
git config user.name tom #设置用户名
git config user.emil fhdash@123.com #设置邮箱地址
#系统级别
git config --global user.name tom1
git config --global user.email kdjfkdjfkdf@fd.com

在这里插入图片描述
5.3 向暂存区添加内容
在这里插入图片描述5.4 把某一内容从暂存区删除
在这里插入图片描述执行删除操作后可以看出,对暂存区执行删除操作后,暂存区中的该内容被删除,但是工作区中依旧保存着该内容。
5.5 将暂存区中的内容commit到本地库
执行 git commit good.txt 命令后会进入到如下界面
在这里插入图片描述
这其实是进入了vim,此时要对vim文件insert一些注释信息,表明这次提交的改动。
如果不想进入vim编辑器,也可以采用如下操作进行:
在这里插入图片描述
5.5 实现版本的前进和后退
在这里插入图片描述
git log 可以查log文件,其中head是一个指针,指向着当前的版本
也可以以一种简单的方式对版本链进行显示,如下:
在这里插入图片描述

在这里插入图片描述

版本前进后退的操作:
在这里插入图片描述5.6 永久删除文件后如何找回
其实就是一个版本后退的操作 退回到删除以前的版本

5.7 比较文件差异
在这里插入图片描述

6 git的分支管理

什么是分支:在版本控制过程中,使用多条线同时推进多个任务。
创建项目时(一般是服务型项目,工具型或辅助型项目可以简单一些),会针对不同环境创建三个常设分支:

develop:开发环境的稳定分支,公共开发环境基于该分支构建。
pre-release:测试环境的稳定分支,测试环境基于该分支构建。
master:生产环境的稳定分支,生产环境基于该分支构建。仅用来发布新版本,除了从pre-release或生产环境Bug修复分支进行merge,不接受任何其它修改

平时开发工作中,会根据需要由开发人员创建两类临时分支:

功能(feature)分支:为了开发某个特定功能,从develop分支上面分出来的。开发完成后,要merge到develop分支。功能分支的命名,可以采用feature-*的形式命名(*为任务单号)
Bug修复(fixbug)分支:为了修复某个bug,从常设分支上面分出来的。修复完成后,再merge到对应的分支。Bug修复分支的命名,可以采用fixbug-*的形式命名(*为bug单

远程库中遇到的问题
在这里插入图片描述
跨团队协作

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值