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

本博客笔记均来自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
// windows下ssh密钥配置
https://www.jianshu.com/p/9317a927e844
// 推送更新内容到远程仓库
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

posted @ 2024-04-18 12:57  LiangXin_Alex  阅读(100)  评论(0编辑  收藏  举报