首页 > 其他分享 >Git学习记录——B站【GeekHour】一小时Git教程

Git学习记录——B站【GeekHour】一小时Git教程

时间:2024-04-18 13:12:20浏览次数:28  
标签:文件 教程 git -- 暂存区 仓库 Git GeekHour 分支

本博客笔记均来自B站up主GeekHour的【GeekHour】一小时Git教程下方为传送门:
【GeekHour】一小时Git教程

急于查看命令直接看这部分,想对命令有更深一步理解见后文:

Git所有学习到的命令集合

/**Git版本查看、用户配置命令:**/
//查看git版本
git -v 

// 配置git用户名(如果用户名有空格则需要用双引号括起来,反之不用)
git config --global user.name "xxx xxx" 

// 配置git用户邮箱
git config --global user.email xxx@xxx.xxx

// 保存git用户名以及密码
git config --global credential.helper store

// 查看上述的配置信息
git config --global --list

/**Git本地仓库创建、拉取远程仓库命令:**/
// git仓库初始化,即在当前目录创建一个本地仓库
git init

// 在当前目录下创建一个目录名为my-git的本地仓库
git init my-git 

// 通过拉取远程存在的仓库进行本地仓库初始化
git clone https://xxxxx

/**Git将文件添加到git仓库的命令**/
// 创建仓库
git init

// 查看仓库的状态
git status

// 添加filename文件到暂存区
git add filename

// 添加所有以.txt结尾的文件到暂存区
git add *.txt

// 将当前文件夹下的所有文件添加到暂存区
git add .

// 将添加到暂存区的filename文件重新拿回
git rm --cached filename

// 提交(只会提交保存在暂存区中的文件)
git commit -m "提交信息"

// 一次完成添加暂存和提交
git commit -a -m "提交信息"

// 查看git提交记录
git log

// 查看git提交记录(只显示每次提交的ID和提交信息)
git log --oneline

/**Git回退版本命令之git reset**/
// 查看暂存区文件
git ls-files

// 回退文件版本
git reset 版本号

// 回退到上一个版本
git reset HEAD^

// 回退文件到某一个版本,并保留工作区和暂存区的所有修改内容
git reset --soft 版本号

// 回退文件到某一个版本,并丢弃工作区和暂存区的所有修改内容
git reset --hard 版本号

// 回退文件到某一个版本,保留工作区的修改内容,丢弃暂存区的修改内容
git reset --mixed 版本号

/**Git命令之git diff查看差异**/
// git diff后不加参数表示默认比较工作区和暂存区之间的差异内容
// 会显示发生更改的文件以及更改的详细信息
git diff

// 比较工作区和版本库的差异
git diff HEAD

// 比较工作区和暂存区的差异
git diff --cached

// 查看不同版本文件之间的差异
git diff 提交版本号1 提交版本号2

// 查看当前版本文件和上一个版本的差异
git diff HEAD~ HEAD

// 查看当前版本文件和上number个版本的差异(number为具体数字如
// git diff HEAD2 HEAD)表示查看当前版本文件和上2个版本的差异
git diff HEAD~number HEAD
// 查看filename文件当前版本和上number个版本的差异
git diff HEAD~number HEAD filename

// 查看文件在不同分支之间的差异
// 查看不同分支之间的差异
git diff 分支名1 分支名2

//**Git删除文件命令**/
// 把文件从工作区和暂存区同时删除
git rm <file> 
// 把文件从暂存区删除,但保留在当前工作区的<file>
git rm --cached <file>
// 递归删除某个目录下的所有子目录和文件
git rm -r * 
//删除后不要忘记提交

/**Git远程仓库相关命令**/
// 添加远程仓库
Step 1
git remote add <远程仓库别名> <远程仓库地址>
Step 2
git push -u <远程仓库名> <分支名>

// 查看远程仓库
git remote -v

// 生成SSH公钥 
// 私钥文件:id_rsa 公钥文件:id_rsa.pub
ssh-keygen -t -b 4096

// 推送更新内容到远程仓库
git push <remote> <branch>

// 拉取远程仓库内容到本地仓库
git pull <远程仓库名> <远程分支名>:<本地分支名>(远程分支名与本地分支名相同可以省略冒号后的内容)

// 关联新的远程仓库地址
git remote add 仓库名 仓库地址

//**Git分支命令**//
// 显示当前仓库的分支
git branch

// 创建仓库的分支
git branch 新要创建分支名

// 切换仓库的分支
git switch  分支名

// 合并分支到当前分支
git merge 要被合并的分支名

// 查看分支图
git log --graph --oneline --decorate --all

// 删除某已经被合并的分支
git branch -d 要被删除的分支名

// 强制删除某未被合并的分支
git branch -D 要被删除的分支名

//**分支合并命令**//
// 终止此次分支合并
git merge --abort

// 可用于任何分支处的合并命令
git rebase 要合并的分支名(适合此分支下仅你一人在开发且希望提交历史更加清晰明了,分支图单一、清晰,但会影响多人在此分支下的操作)
git merge 要被合并的分支名(适合只合并俩分支,不关心提交历史,但分支图复杂,不清晰)
// 恢复某一分支
git checkout -b 要恢复的分支名 提交ID

//查看提交日志及提交ID
git log --online --graph --decorate --all

// 设置某个命令的别名
alias 别名="原命令"

接下里为对上述命令的详细记录:

Git版本查看、用户配置命令:

//查看git版本
git -v 

// 配置git用户名(如果用户名有空格则需要用双引号括起来,反之不用)
git config --global user.name "xxx xxx" 

// 配置git用户邮箱
git config --global user.email xxx@xxx.xxx

// 保存git用户名以及密码
git config --global credential.helper store

// 查看上述的配置信息
git config --global --list

Git本地仓库创建、拉取远程仓库命令:

// git仓库初始化,即在当前目录创建一个本地仓库
git init

// 在当前目录下创建一个目录名为my-git的本地仓库
git init my-git 

// 通过拉取远程存在的仓库进行本地仓库初始化
git clone https://xxxxx

Git的工作区域和文件状态

工作区域:

  • 工作区(Working Directory)

在资源管理器里面能够看到的文件夹便是工作区

  • 暂存区(Staging Area/Index)

一种临时存储区域,用于保存即将提交到Git仓库的修改内容

  • 本地仓库(Local Repository)

即使用git init或者git clone方式创建的git仓库,它包含了完整的的项目历史和元数据,用于存储代码、版本信息的主要区域
image

文件状态:
未跟踪:新创建的文件,还未被git进行管理
未修改:已被git管理的文件,但文件内容没有发生变化
已暂存:已经被修改的文件,但是还没推送到暂存区
已提交:已经被修改的文件,且被推送到暂存区
image

Git将文件添加到git仓库的命令:

// 创建仓库
git init

// 查看仓库的状态
git status

// 添加filename文件到暂存区
git add filename

// 添加所有以.txt结尾的文件到暂存区
git add *.txt

// 将当前文件夹下的所有文件添加到暂存区
git add .

// 将添加到暂存区的filename文件重新拿回
git rm --cached filename

// 提交(只会提交保存在暂存区中的文件)
git commit -m "提交信息"

// 一次完成添加暂存和提交
git commit -a -m "提交信息"

// 查看git提交记录
git log

// 查看git提交记录(只显示每次提交的ID和提交信息)
git log --oneline

Git回退版本命令之git reset:

// 查看暂存区文件
git ls-files

// 回退文件版本
git reset 版本号

// 回退到上一个版本
git reset HEAD^

// 回退文件到某一个版本,并保留工作区和暂存区的所有修改内容
git reset --soft 版本号

// 回退文件到某一个版本,并丢弃工作区和暂存区的所有修改内容
git reset --hard 版本号

// 回退文件到某一个版本,保留工作区的修改内容,丢弃暂存区的修改内容
git reset --mixed 版本号

image

Git命令之git diff查看差异:

可以查看工作区、暂存区、本地仓库之间的差异
可以查看不同版本文件之间的差异
可以查看文件在不同分支之间的差异
image

image

查看工作区、暂存区、本地仓库之间的差异——
1.查看工作区和暂存区之间的差异

// git diff后不加参数表示默认比较工作区和暂存区之间的差异内容
// 会显示发生更改的文件以及更改的详细信息
git diff

git diff查看工作区和暂存区之间的差异内容举例:
image

2.比较工作区和版本库的差异

// 比较工作区和版本库的差异
git diff HEAD

比较工作区和版本库的差异举例:
image

3.比较工作区和暂存区的差异

// 比较工作区和暂存区的差异
git diff --cached

比较工作区和暂存区的差异举例:
image

查看不同版本文件之间的差异——

// 查看不同版本文件之间的差异
git diff 提交版本号1 提交版本号2

// 查看当前版本文件和上一个版本的差异
git diff HEAD~ HEAD

// 查看当前版本文件和上number个版本的差异(number为具体数字如
// git diff HEAD2 HEAD)表示查看当前版本文件和上2个版本的差异
git diff HEAD~number HEAD
// 查看filename文件当前版本和上number个版本的差异
git diff HEAD~number HEAD filename

查看文件在不同分支之间的差异——

// 查看不同分支之间的差异
git diff 分支名1 分支名2

Git删除文件命令:

// 把文件从工作区和暂存区同时删除
git rm <file> 
// 把文件从暂存区删除,但保留在当前工作区的<file>
git rm --cached <file>
// 递归删除某个目录下的所有子目录和文件
git rm -r * 
//删除后不要忘记提交

Git忽略部分文件:

image

需要在.gitignore文件中进行明示所需要忽略的文件如:
.gitignore文件的匹配规则

  • 空行或者以#开头的行会被git忽略。一般空行用于可读性的分隔,#一般用作注释
  • 使用标准的Blob模式匹配,例如:
    星号_通配任意个字符
    问号?匹配单个字符
    中括号【]表示匹配列表中的单个字符,比如:[abc]表示 a/b/c_
  • 两个星号**表示匹配任意的中间目录
  • 中括号可以使用短中线连接,比如:
    [0-9]表示任意一位数字,[a-z]表示任意一位小写字母

举例说明:
image

远程仓库:

// 添加远程仓库
Step 1
git remote add <远程仓库别名> <远程仓库地址>
Step 2
git push -u <远程仓库名> <分支名>

// 查看远程仓库
git remote -v

// 生成SSH公钥 
// 私钥文件:id_rsa 公钥文件:id_rsa.pub
ssh-keygen -t -b 4096

// 推送更新内容到远程仓库
git push <remote> <branch>

// 拉取远程仓库内容到本地仓库
git pull <远程仓库名> <远程分支名>:<本地分支名>(远程分支名与本地分支名相同可以省略冒号后的内容)

// 关联新的远程仓库地址
git remote add 仓库名 仓库地址

Vscode中的Git文件状态

image

Git分支

image

// 显示当前仓库的分支
git branch

// 创建仓库的分支
git branch 新要创建分支名

// 切换仓库的分支
git switch  分支名

// 合并分支到当前分支
git merge 要被合并的分支名

// 查看分支图
git log --graph --oneline --decorate --all

// 删除某已经被合并的分支
git branch -d 要被删除的分支名

// 强制删除某未被合并的分支
git branch -D 要被删除的分支名

image

分支冲突解决:

手动进行修改文件的修改内容,然后重新提交

// 终止此次分支合并
git merge --abort

// 可用于任何分支处的合并命令
git rebase 要合并的分支名(适合此分支下仅你一人在开发且希望提交历史更加清晰明了,分支图单一、清晰,但会影响多人在此分支下的操作)
git merge 要被合并的分支名(适合只合并俩分支,不关心提交历史,但分支图复杂,不清晰)
// 恢复某一分支
git checkout -b 要恢复的分支名 提交ID

//查看提交日志及提交ID
git log --online --graph --decorate --all

// 设置某个命令的别名
alias 别名="原命令"

分支管理和工作流模型

Git-flow工作流:
image

主线分支:
只接受来自hotfix和release分支的合并请求,不允许直接push修改
主线分支main版本号规则:
主版本(Major Version) ion):主要的功能变化或重大更新;
次版本 (Minor Version):一些新的功能,改进和更新,通常不会影响现有功能;
修订版本:(Patch Version): 一些小的bug修复,安全漏洞补丁等。通常不会更改现有功能和接口。
线上版本bug热修复分支:
用于解决线上问题,修复完成后合并回main分支
线上版本bug热修复分支命名规则:
hotfix-#issueid-desc
开发分支develo:
从main分支中分离出来,包含了项目的最新开发版本的代码,用于开发和测试
功能分支:
从开发分支中分离出来,包含了项目某个新功能的代码,用于开发新的功能,待功能分支代码稳定后会被合并回开发分支
预发布分支release:
从开发分支中分离出来,当预发布分支代码稳定后会合并到主分支和开发分支中

Github-flow工作流
image

分支命名以及管理规范:
image

标签:文件,教程,git,--,暂存区,仓库,Git,GeekHour,分支
From: https://www.cnblogs.com/Alex-goforit/p/18143304

相关文章

  • 这些Git事故灾难, 你经历过几个?
    前言关于Git,相信大家最常用的就是pull和push.但随着协作规模的提升,遇到的问题也会越来越多.本篇文章并不科普一些命令的详细用法,更多的是分享在工作中遇到的Git场景问题以及踩过的坑难办?那就别办咯先来个开胃小菜.一般公司都会有个dev分支用来部署测试版的功能.也......
  • ETL工具-nifi干货系列 第十四讲 nifi处理器QueryDatabaseTableRecord查询表数据实战教
    1、处理器QueryDatabaseTableRecord和处理器QueryDatabaseTable比较相似,该组件生成一个SQL查询,或者使用用户提供的语句,并执行它以获取所有在指定的最大值列中值大于先前所见最大值的行。QueryDatabaseTable的查询结果将被转换为Avro,而QueryDatabaseTableRecord的查询结果则被......
  • Chrome免安装绿色版制作教程
    chrome离线安装包https://downzen.com/en/windows/google-chrome/versions/?page=1方法一:1)下载最新版GoogleChrome离线安装包文件1.Stable版(稳定版、正式版)下载:http://www.google.com/chrome/eula.html?standalone=1注:Stable似乎只有最新稳定版可以从官方下载,尚未找到其它......
  • Git reset 中四大模式:soft、mixed、hard、keep 的区别
    Gitreset中四大模式:soft、mixed、hard、keep的区别目录Gitreset中四大模式:soft、mixed、hard、keep的区别gitreset--soft(常用)gitreset--mixed(默认)gitreset--hard(慎用)gitreset--keep(吃灰)参考工作区暂存区本地版本库soft保持所有保持回退mixed保......
  • centos7 安装 Mysql 5.7.28,详细完整教程
    https://cloud.tencent.com/developer/article/1886339 1. 下载MySQLyum包wgethttp://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm复制2.安装MySQL源rpm-Uvhmysql57-community-release-el7-10.noarch.rpm复制3.安装MySQL服务端,需要等待一些......
  • ImageJ使用教程(一):开始使用
    目录简介界面介绍Edit->Options开始使用打开图片放大拖拽图片信息色彩分析保存图片总结参考文章ImageJ软件简介ImageJ是一个基于java的公共的图像处理软件,它是由美国国立卫生研究院开发的,可运行于Windows、Linux等多种平台。软件下载解压后可直接使用,注意软件目录不要有中文,下......
  • Git学习(一)目录
    1、实操步骤git学习(二)Git生成SSHKEY,实现GitHub免密登录git学习(四)git+github把本地项目上传到github上【快速命令】git学习(五)idea+github把本地idea中项目上传到github上Git学习(八)命令总结2、问题处理GitvsGiteevsGithubGithub相关问题......
  • CMake 入门教程
    什么是CMake你或许听过好几种Make工具,例如 GNUMake ,QT的 qmake ,微软的 MSnmake,BSDMake(pmake),Makepp,等等。这些Make工具遵循着不同的规范和标准,所执行的Makefile格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果......
  • Python科学计算基础教程 ([印] Hemant Kumar Mehta 著;陶俊杰, 陈小莉 译)
    电子版获取:2huo点vip我的读书笔记:NumPy和SciPy:介绍使用NumPy进行数组操作和SciPy进行科学计算的基础知识。数据可视化:使用Matplotlib、Seaborn或其他库创建图表和可视化。数据处理和清洗:使用Pandas进行数据操作、清洗和分析。机器学习和深度学习:使用Scikit-learn、Tens......
  • 【问题解决】Fatal error "unsafe repository ('git目录名' is owned by someone else
    问题复现近期升级了Gitv2.37.0,发现在gitbash进入git目录执行git命令时出现错误:Fatalerror"unsaferepository('git目录名'isownedbysomeoneelse)",无法使用git做一些操作。问题解决两个方法:降级到v2.35.2之前,或者,gitconfig--global--addsafe.directory仓库目录......