Git保姆级教程

1.Git概述?

1.1 什么是Git?

Git是一个分布式版本控制,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等),在软件开发过程中被广泛使用。

1.2 通过git我们可以:

(1)代码回溯:快速的回到某个代码历史版本
(2)版本切换:同一个项目可以有多个版本,每个版本代码可能不一样。比如mybatisplus有多个版本
(3)多人协作:多个人共同开发同一个项目
(4)远程备份:通过仓库方式管理代码

1.3 Git工作流程图

在这里插入图片描述

(1)本地仓库和远程仓库:
①本地仓库:开发人员自己电脑上的Git仓库
②远程仓库:远程服务器上的Git仓库
(2)commit:提交,将本地文件和版本信息保存到本地仓库
(3)push:推送,将本地仓库文件和版本信息上传到远程仓库
(4)pull:拉取,将远程仓库文件和版本信息下载到本地仓库

1.4 Git的下载与安装

(1)下载地址:https://git-scm.com/download
(2)安装完成后在任意目录点击鼠标右键,如果能看到如下菜单则表示安装完成:
在这里插入图片描述
①Git GUI Here:打开Git图形界面
②Git Bash Here:打开Git命令行

1.5 Git代码托管服务

Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?
我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
(1)GitHub(地址:https://github.com/),是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名gitHub
(2)码云(地址:https://gitee.com/),是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
(3)GitLab(地址:https://about.gitlab.com/),是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务

2.Git常用命令

2.1 Git全局设置

当安装完Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息
(1)设置用户信息
①git config --global user.name “XXX”
②git config --global user.email “XXX”
(2)查看配置信息:git config --list
注意:上面设置的user.name和user.email并不是我们在注册码云账户时使用的用户名和邮箱,此处可以任意设置。

2.2 获取Git仓库

(1)要使用Git对我们的代码进行版本控制,首先需要获得Git仓库
(2)获取Git仓库通常有两种方式:
①在本地初始化一个Git仓库(不常用)
②从远程仓库克隆(常用)

2.2.1 获取本地仓库

(1)在任意目录下创建一个空目录作为我们的本地Git仓库
(2)进入这个目录中,右键打开Git bash窗口
(3)执行命令git init
(4)执行后,如果在目录中看到 .git 文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功
在这里插入图片描述

2.2.2 获取Git仓库—从远程仓库克隆

(1)可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
(2)命令形式:git clone 远程Git仓库地址

2.3 Git工作目录下对文件修改后存在的状态

(1)版本库:.git 隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
(2)工作区:包含 .git 文件夹的目录就是工作区,也称为工作目录(和.git同级的一层),主要用于存放开发的代码
(3)暂存区:.git 文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。缓存区是一个临时保存修改文件的地方。(Changes to be committed)

在这里插入图片描述
(4)Git工作区中的文件存在两种状态:
①unstaged:未暂存(修改已有文件,即:之前已经有人提交过了,你现在又修改了该文件)Changes not staged for commit
在这里插入图片描述

②untracked:未跟踪(新创建的文件,从来没有add过)
在这里插入图片描述

注意:这些文件的状态会随着我们执行Git的命令发生变化
(5)使用命令来控制状态的转换
①git add (工作区 --> 暂存区)
②git commit(暂存区 --> 本地仓库)

2.4 本地仓库操作常用命令

(1)git status 命令用于查看文件状态
(2)git add 命令的作用是将文件的修改加入暂存区
①git add 文件名 // 将指定文件加入缓存区
②git add . // 将当前目录下的所有修改加入缓存区
(3)git reset 命令的作用是将缓存区的文件取消暂存或者是切换到指定版本
例如:git reset --hard 日志版本标识符(日志版本标识符通过git log命令可以查看)

(4)git log [options] (git log命令就能查看日志)
补充options:
--all:显示所有分支
--pretty=oneline:将提交的信息显示为一行
--abbrev-commit:使得输出的commitID更简短
--graph:以图的形式显示
(5)git commit 提交暂存区到本地仓库
①作用:提交暂存区内容到本地仓库的当前分支
②命令格式:git commit -m “提交的注释内容”

(6)为常用指令配置别名(可选)
有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。
①打开用户目录,创建 .bashrc 文件
部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行 touch ~/.bashrc
(~代表当前用户的根目录)
②在 .bashrc 文件中输入如下内容

#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'

在这里插入图片描述
注意:HEAD就是个标记,指向谁,谁就是当前分支
(7)版本回退
①执行commit后,还没执行push时,想要撤销这次的commit,可以进行版本切换
②使用命令:

git reset --soft HEAD^

HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1
如果进行两次的commit,想要都撤回,可以使用HEAD~2
③这样就成功撤销了commit,如果想要连着add也撤销的话,--soft改为--hard(删除工作空间的改动代码)。

④查看已删除的记录

git reflog

(8)添加文件至忽略列表
一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动
生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录
中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。

2.5 远程仓库操作的常用命令

(1)git remote add shortname url 添加一个新的远程Git仓库,同时指定一个可以引用的简写
①shortname:远程仓库名字简称,我们一般定义为origin
②url:远程仓库路径
(2)git remote
①如果想查看已经配置的远程仓库服务器,可以运行 git remote 命令,它会列出每一个远程服务器的简写。
②如果已经克隆了远程仓库,那么至少应该能看到 origin ,这是Git 克隆的仓库服务器的默认名字
(注意:通过git remote -v 还可以查看远程仓库地址)
(3)git clone url
如果你想获得一份已经存在了的Git远程仓库的拷贝,这时就要用到 git clone 命令。Git克隆的是该 Git 仓库
服务器上的几乎所有数据(包括日志信息、历史记录等),而不仅仅是复制工作所需要的文件。
(4)git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名]]
①该命令表示推送到远程仓库
②一般使用下面命令即可:git push origin master
③-f表示本地和远端都修改了同一处代码,有冲突,强制覆盖。公司一般会禁用该功能
--set-upstream:表示推送到远端的同时,建立起本地和远端分支的关联关系;如果当前分支已经和远端分支关联,则使用命令时可以省略分支名和远端名直接git push
⑤如果远程分支名和本地分支名相同,则可以只写本地分支名
⑥远程名称就是我们定义的shortname

(5)从远程仓库抓取和拉取
远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。
1)抓取命令:git fetch [remote-name] [branch-name]
①抓取指令就是将仓库里的更新都抓取到本地,不会进行合并(例如push到origin/master下后,拉取时只会拉取origin/master,而不会将远程仓库的origin/master合并到本地的master下)
②如果不指定远端名称和分支名,则抓取所有分支
2)拉取命令:git pull [remote-name] [branch-name]
①拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge(本地的master下可以合并远程的origin/master)
②如果不指定远端名称和分支名,则抓取所有并更新当前分支

2.5.1配置SSH钥

(1)生成SSH公钥
①打开git窗口输入命令:ssh-keygen -t rsa
②不断回车,如果公钥已经存在,则自动覆盖
(2)Gitee设置账户共公钥
获取公钥:cat ~/.ssh/id_rsa.pub

在这里插入图片描述

2.6 分支操作

分支是Git使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发
主线。同一个仓库可以有多个分支,各个分支相互独立,互不干扰。
注意:通过git init 命令,创建本地仓库时默认会创建一个master分支
(1)git branch // 查看所有本地分支
①git branch -r // 列出所有远程分支
②git branch -a // 列出所有本地分支和远程分支
③git branch -vv // 查看本地分支与远程分支的关联关系
(2)git branch name // 创建本地分支
(3)git checkout name // 切换分支
注意:我们还可以直接切换到一个不存在的分支(创建并切换)
git checkout -b 分支名
(4)推送到远程仓库

git push [-f] [--set-upstream] [远程名称 [本地分支名][:远程分支名]]

1)如果远程分支名和本地分支名称相同,则可以只写本地分支
git push origin master
①-f 表示强制覆盖(如果远程和本地内容不同,本地新修改的内容强制覆盖远程,基本不用)
--set-upstream 推送到远程的同时并建立起和远程分支的关联关系

git push --set-upstream origin master:master

③如果当前分支已经和远端分支关联,则可以省略分支名和远端名
此时git push就是将master分支推送到已关联的远端分支
2)查看本地分支与远程分支的关联关系
git branch -vv
(5)git merge name // 合并分支(一般我们都是切换到主分支下,合并其他分支内容到主分支下)
(6)删除分支
①git branch -d b1 删除分支时,需要做各种检查
②git branch -D b1 不做任何检查,强制删除
(7)解决冲突
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解
决冲突,解决冲突步骤如下:
① 处理文件中冲突的地方
② 将解决完冲突的文件加入暂存区(add)
③ 提交到仓库(commit)
(8)开发中分支使用原则与流程
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来
进行重大的Bug修改、开发新的功能,以免影响开发主线。在开发中,一般有如下分支使用原则与流程:
①master (生产)分支
线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;
②develop(开发)分支
是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线
要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。
③feature/xxxx分支
从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完
成后合并到develop分支。
④hotfix/xxxx分支,
从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支。
⑤还有一些其他分支,例如test分支(用于代码测试)、pre分支(预上线分支)等等。

2.7 标签操作

Git中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以方便的切换到标记时的状态。比较
有代表性的是人们会使用这个功能来标记发布结点(v1.0、v1.2等)。下面是mybatis-plus的标签:
在这里插入图片描述

(1)git tag 列出已有标签
(2)git tag name 创建标签
(3)git push shortName name 将标签推送至远程仓库
(4)git checkout -b 【branch】【name】 检出标签,检出标签时需要创建一个分支
在这里插入图片描述

3.在Idea中使用Git

3.1 在Idea中配置Git

在idea中使用Git,本质上还是使用本地安装的Git软件,所以需要在Idea中配置Git
在这里插入图片描述

3.2 获取Git仓库

(1)本地初始化仓库(仓库选择默认的项目目录就可以)
在这里插入图片描述
(2)从远程仓库克隆
在这里插入图片描述
注意:.gitignore文件定义了项目中哪些文件不需要Git管理

3.3 本地仓库操作

(1)将文件加入暂存区(右键点击需要加入的文件)
在这里插入图片描述
(2)将暂存区的文件提交到版本库
①方式一:
在这里插入图片描述
②方式二:
在这里插入图片描述

(3)查看日志
在这里插入图片描述

3.4 远程仓库操作

(1)右键点击可以查看并管理远程仓库
在这里插入图片描述
(2)推送至远程仓库
在这里插入图片描述

(3)从远程仓库拉取

在这里插入图片描述

3.5 分支操作在右下角

在这里插入图片描述

3.6 IDEA集成GitBash作为Terminal

(1)配置
在这里插入图片描述
(2)鼠标右击文件进入termial目录
在这里插入图片描述

4.解决安装TortoiseGit后不显示图标问题

(1)win+R,输入regedit打开注册表
在这里插入图片描述
(2)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer

新建(如果有则直接修改)Max Cached Icons的值为2000
(3)重启

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值