零基础学会Git

1,Git的介绍

2,分支的管理

3,GitHub

4,SSH 登录

5,IDEA中使用Git

6,Git 工作流

Git的介绍
  • Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容

1,Git的优势

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

2,Git的下载和安装

3,GIt命令操作

  • 本地库初始化(注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改):
    在这里插入图片描述

  • 项目级别/仓库级别:仅在当前本地库范围内有效

    git config user.name xx(tomzhou)

    git config user.email xx(tomzhou@qq.com)

  • 信息保存位置:./.git/config 文件

在这里插入图片描述

  • 系统用户级别:登录当前操作系统的用户范围

    git config --global user.name tomz

    git config --global tomz@qq.com

  • 信息保存位置:~/.gitconfig 文件

在这里插入图片描述

  • 级别优先级

    就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名

    如果只有系统用户级别的签名,就以系统用户级别的签名为准

    二者都没有不允许

  • 状态查看 git status(查看工作区、暂存区状态):
    在这里插入图片描述

  • 添加 git add [file name](将工作区的 “新建/修改” 添加到暂存区):

    编辑vim good.txt,并保存(esc + :wq)
    在这里插入图片描述

  • 从暂存区中删除 git rm --cached [file name]
    在这里插入图片描述

  • 提交 git commit -m "commit message" [file name](将暂存区的内容提交到本地库):
    在这里插入图片描述
    在这里插入图片描述

  • 修改并提交 也是 git commit -m "commit message" [file name](将暂存区的内容提交到本地库):
    在这里插入图片描述

  • 查看历史记录 git log

    多屏显示控制方式:空格向下翻页,b 向上翻页,q 退出

    git log --pretty=oneline
    在这里插入图片描述
    git reflog(HEAD@{移动到当前版本需要多少步})
    在这里插入图片描述

  • 前进后退:

    基于索引值操作[推荐], git reset --hard [局部索引值],如:git reset --hard a6ace91

    使用 ^ 符号:只能后退 git reset --hard HEAD^(注:一个 ^ 表示后退一步,n 个表示后退 n 步)

    使用 ~ 符号:只能后退 git reset --hard HEAD~n (注:表示后退 n 步)

分支的管理
  • 什么是分支?

    在版本控制过程中,使用多条线同时推进多个任务

  • 分支的好处?

    同时并行推进多个功能开发,提高开发效率

    各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

  • 分支操作

    创建分支:git branch [分支名]

    查看分支:git branch -v

    切换分支:git checkout [分支名]

    合并分支:第一步:切换到接受修改的分支(被合并,增加新内容)上,git checkout [被合并分支名];第二步:执行 merge 命令,git merge [有新内容分支名]

    冲突的表现如下:
    在这里插入图片描述
    冲突的解决:

    • 1,编辑文件,删除特殊符号
    • 2,把文件修改到满意的程度,保存退出
    • 3,git add [文件名]
    • 4,git commit -m "日志信息"
    • 注意:此时 commit 一定不能带具体文件名
Git 基本原理
  • 哈希

在这里插入图片描述

  • 哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:

    ①,不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。

    ②,哈希算法确定,输入数据确定,输出数据能够保证不变

    ③,哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大

    ④,哈希算法不可逆

  • Git 底层采用的是 SHA-1 算法,Git 就是靠这种机制来从根本上保证数据完整性的。

GitHub

1,创建远程库

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

2,GitHup的操作

  • 创建远程库地址别名

    git remote -v 查看当前所有远程地址别名

    git remote add [别名] [远程地址]
    在这里插入图片描述

  • 推送

    git push [别名] [分支名]

  • 克隆

    git origin [远程地址]
    在这里插入图片描述
    完整的把远程库下载到本地,创建 origin 远程地址别名,初始化本地库

  • 团队成员邀请
    在这里插入图片描述

  • 拉取

    pull=fetch+merge

    复杂的使用

    git fetch [远程库地址别名] [远程分支名]

    git merge [远程库地址别名/远程分支名]

    比较简单的情况下用:git pull [远程库地址别名] [远程分支名]

  • 解决冲突

    如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉取,拉取下来后如果进入冲突状态,则按照 “分支冲突解决” 操作解决即可。

  • 跨团队协作 Fork
    在这里插入图片描述
    本地修改,然后推送到远程,Pull Request

SSH 登录
  • 进入当前用户的家目录 cd ~

  • 删除.ssh 目录 rm -rvf .ssh

  • 运行命令生成.ssh 密钥目录 ssh-keygen -t rsa -C TommeyZ[ 注意:这里-C 这个参数是大写的 C]

  • 进入.ssh 目录查看文件列表 cd .ssh ls -lF

  • 查看 id_rsa.pub 文件内容 cat id_rsa.pub

  • 复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像——》Settings——》SSH and GPGkeys——》 New SSH Key,输入复制的密钥信息, 回到 Git bash 创建远程地址别名git remote add origin_ssh git@github.com:TommeyZ/GitTest.git

  • 执行上述命令可能会报错:! [rejected] master -> master (fetch first) error: failed to push some refs to ' 。。。
    在这里插入图片描述
    出现这个问题是因为github中的README.md文件不在本地代码目录中,可以通过命令进行代码合并:git pull --rebase origin master

  • 远程仓库的删除和重命名: git remote rm [删除的名]git remote rename [旧名] [新名]

IDEA中使用Git

1,Idea中使用Git全局配置

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

2,创建本地库

在这里插入图片描述

  • 不需要提交的目录忽略:

    在目录下找到.git(要是未找到点击隐藏的项目)——》info——》exclude,进行修改
    在这里插入图片描述

  • 将项目添加到暂存区,文件变成绿色:
    在这里插入图片描述

  • 将项目提交到本地库
    在这里插入图片描述

3,切换版本

  • 点击历史记录,找到想要切换的版本,点击Copy Revision Number
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4,创建分支及合并分支

  • 分支的创建
    在这里插入图片描述
    在这里插入图片描述
  • 合并分支
    在这里插入图片描述
    在这里插入图片描述

5,解决冲突

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

6,上传本地库到GitHub

在这里插入图片描述

7,更新本地库

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

8,从GitHub上克隆项目

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

Git 工作流

1,分类

  • 集中式工作流:

    像 SVN 一样,集中式工作流以中央仓库作为项目所有修改的单点实体。所有修改都提交到 Master 这个分支上。这种方式与 SVN 的主要区别就是开发人员有本地库。Git 很多特性并没有用到。

  • GitFlow 工作流:

    Gitflow 工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。
    在这里插入图片描述

  • Forking 工作流:

    Forking 工作流是在 GitFlow 基础上,充分利用了 Git 的 Fork 和 pull request 的功能以达到代码审核的目的。更适合安全可靠地管理大团队的开发者,而且能接受不信任贡献者的提交。

2,GitFlow 工作流详解

  • 主干分支 master

    主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境完全一致。

  • 开发分支 develop

    主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。

  • bug 修理分支 hotfix

    主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。

  • 准生产分支(预发布分支) release

    较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除。

  • 功能分支 feature

    为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。 开发完成后会合并到开发分支。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值