「一劳永逸」一张脑图带你全面掌握 Git 命令

news/2024/7/24 9:24:53 标签: git, java, docker, python, github

前言

最近在网易工作之余,遇到Git上面一些问题,趁这次的机会,补一补Git基础知识。

后台回复 git,即可获取脑图原文件。

「本文更多梳理的是Git常用命令,非原理篇」


一图解天下????

首先我们的了解Git通常的操作流程,网上流行的不错一张图????

Git经典流程图

基本概念

Git基本命令

基于上面的图,我们就有接下来一些概念????

  • 版本库????.git

    • 当我们使用git管理文件时,比如git init时,这个时候,会多一个.git文件,我们把这个文件称之为版本库。

    • .git文件另外一个作用就是它在创建的时候,会自动创建master分支,并且将HEAD指针指向master分支。

  • 工作区

    • 本地项目存放文件的位置

    • 可以理解成图上的workspace

  • 暂存区 (Index/Stage)

    • 顾名思义就是暂时存放文件的地方,通过是通过add命令将工作区的文件添加到缓冲区

  • 本地仓库(Repository)

    • 通常情况下,我们使用commit命令可以将暂存区的文件添加到本地仓库

    • 通常而言,HEAD指针指向的就是master分支

  • 远程仓库(Remote)

    • 举个例子,当我们使用GitHub托管我们项目时,它就是一个远程仓库。

    • 通常我们使用clone命令将远程仓库代码拷贝下来,本地代码更新后,通过push托送给远程仓库。


Git文件状态

  • 通常我们需要查看一个文件的状态

git status
  • Changes not staged for commit

    • 表示大概就是工作区有该内容,但是缓存区没有,需要我们git add

  • Changes to be committed

    • 一般而言,这个时候,文件放在缓存区了,我们需要git commit

  • nothing to commit, working tree clean

    • 这个时候,我们将本地的代码推送到远端即可


常见命令

git配置命令

Git配置命令
  • 列出当前配置

git config --list	
  • 列出Repository配置

git config --local --list
  • 列出全局配置

git config --global --list
  • 列出系统配置

git config --system --list

通过上述的命令,发现你并没有配置用户信息的话,接下来配置一下????

  • 配置用户名

git config --global user.name "your name"
  • 配置用户邮箱

git config --global user.email "youremail@github.com"

分支管理

Git分支管理
  • 查看本地分支

git branch
  • 查看远程分支

git branch -r
  • 查看本地和远程分支

git branch -a
  • 从当前分支,切换到其他分支

git checkout <branch-name>
// 举个例子
git checkout feature/tiantian
  • 创建并切换到新建分支

git checkout -b <branch-name>
// 举个例子????
git checkout -b feature/tiantian
  • 删除分支

git branch -d <branch-name>
// 举个例子????
git branch -d feature/tiantian
  • 当前分支与指定分支合并

git merge <branch-name>
// 举个例子????
git merge feature/tiantian
  • 查看哪些分支已经合并到当前分支

git branch --merged
  • 查看哪些分支没有合并到当前分支

git branch --no-merged
  • 查看各个分支最后一个提交对象的信息

git branch -v
  • 删除远程分支

git push origin -d <branch-name>
  • 重命名分支

git branch -m <oldbranch-name> <newbranch-name>
  • 拉取远程分支并创建本地分支

git checkout -b 本地分支名x origin/远程分支名x


// 另外一种方式,也可以完成这个操作。
git fetch origin <branch-name>:<local-branch-name>
// fetch这个指令的话,后续会梳理

fetch指令

Git命令fetch

我理解的就是将远程仓库内容更新到本地,最近与师姐开发项目过程中,使用的就是这个命令。

具体是这样子的????

fetch推荐写法

git fetch origin <branch-name>:<local-branch-name>
  • 一般而言,这个origin是远程主机名,一般默认就是origin。

  • branch-name 你要拉取的分支

  • local-branch-name 通常而言,就是你本地新建一个新分支,将origin下的某个分支代码下载到本地分支。

举个例子????

git fetch origin feature/template_excellent:feature/template_layout
// 你的工作目录下,就会有feature/template_layout
// 一般情况下,我们需要做的就是在这个分支上开发新需求
// 完成代码后,我们需要做的就是上传我们的分支

fetch其他写法

  • 将某个远程主机的更新,全部取回本地。

git fetch <远程主机名>
  • 这样子的话,取回的是所有的分支更新,如果想取回特定分支,可以指定分支名????

git fetch <远程主机名> <分支名>
  • 当你想将某个分支的内容取回到本地下某个分支的话,如下????

git fetch origin :<local-branch-name>
// 等价于????
git fetch origin master:<local-branch-name>

花式撤销

Git花式撤销
  • 撤销「工作区」修改

    • git checkout --

  • 暂存区文件撤销 (不覆盖工作区)

  • 版本回退

    • git reset --(soft | mixed | hard )  < HEAD ~(num) > |

    • 指令作用范围
      --hard回退全部,包括HEAD,index,working tree
      --mixed回退部分,包括HEAD,index
      --soft只回退HEAD


工作区命令


状态查询

  • 查看状态

  • 查看历史操作记录

  • 查看日志


文档查询

  • 展示Git命令大纲

    • git help (--help)

  • 展示Git命令大纲全部列表

  • 展示具体命令说明手册


文件暂存

Git命令文件暂存
  • 添加改动到stash

    • git stash save -a “message”

  • 删除暂存

    • git stash drop <stash@{ID}>

  • 查看stash列表

  • 删除全部缓存

    • git stash clear

  • 恢复改动

    • git stash pop <stash@{ID}>


差异比较

Git文件比较
  • 比较工作区与缓存区

  • 比较缓存区与本地库最近一次commit内容

    • git diff -- cached

  • 比较工作区与本地最近一次commit内容

  • 比较两个commit之间差异


分支命名

Git分支管理规范

「master分支」

  1. 主分支,用于部署生产环境的分支,确保稳定性。

  2. master分支一般由develop以及hotfix分支合并,任何情况下都不能直接修改代码。

「develop 分支」

  1. develop为开发分支,通常情况下,保存最新完成以及bug修复后的代码。

  2. 开发新功能时,feature分支都是基于develop分支下创建的。

「feature分支」

  1. 开发新功能,基本上以develop为基础创建feature分支。

  2. 分支命名:feature/ 开头的为特性分支, 命名规则: feature/user_module、 feature/cart_module。

**这点我深有体会,我在网易,mentor就是这么教我的,**通常建一个feature分支。

「release分支」

  1. release 为预上线分支,发布提测阶段,会release分支代码为基准提测。

「hotfix分支」

  1. 分支命名:hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似。

  2. 线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支。

参考来着:稻草叔叔


基本操作

有了上述的基本了解后,那么我们就来看看整体的一个流程吧。

  • 创建本地仓库 git init

    git init

  • 链接本地仓库与远端仓库

    git remote add  origin

    origin默认是远端仓库别名  url 可以是「可以使用https或者ssh的方式新建」

  • 检查配置信息

    • git config --list

  • Git user name 与email

    git config --global user.name "yourname"

    git config --global user.email  "your_email"

  • 生成SSH密钥

    ssh-keygen -t rsa -C "这里换上你的邮箱"

    cd ~/.ssh 里面有一个文件名为id_rsa.pub,把里面的内容复制到git库的我的SSHKEYs中

  • 常看远端仓库信息

  • 远端仓库重新命名

    • git remote rename old new

  • 提交到缓存区

    • git add .  全部上传到缓存区

    • git add指定文件

  • 提交到本地仓库

    • git commit -m 'some message'

  • 提交远程仓库

    • git push <远程主机名> <本地分支名>:<远程分支名>

  • 查看分支

  • 创建新分支

  • 切换分支

  • 创建分支并切换

    • git checkout -b

  • 删除分支

  • 删除远程分支

  • 切换分支

忽略文件 .gitignore

这个文件的作用,会去忽略一些不需要纳入Git管理这种,我们也不希望出现在未跟踪文件列表。

那么我们来看看如何配置该文件信息。

# 此行为注释 会被Git忽略


# 忽略 node_modules/ 目录下所有的文件
node_modules




# 忽略所有.vscode结尾的文件
.vscode


# 忽略所有.md结尾的文件
*.md


# 但README.md 除外
!README.md


# 会忽略 doc/something.txt 但不会忽略doc/images/arch.txt
doc/*.txt


# 忽略 doc/ 目录下所有扩展名为txt文件


doc/**/*.txt


◆ ◆ ◆  ◆ ◆

在看抽奖(48h)

记得先添加方小勤微信,

不然看不到哪些小伙伴点再看

随机抽取3位点击在看的小伙伴送出「18.88元」红包。

留言抽奖(48h)

留言点赞最多的2位送出「18.88元」的小红包鼓励分享!

你的在看我当成喜欢


http://www.niftyadmin.cn/n/1252103.html

相关文章

前端如何在项目中做出亮点

&#xff08;给前端大全加星标&#xff0c;提升前端技能&#xff09;作者&#xff1a;磐冲https://segmentfault.com/a/11900000227954841、你负责的业务是什么&#xff1f;(学会发现问题)之前在群里参加活动的同学&#xff0c;有不少说在小公司&#xff0c;被业务需求压着。既…

linux的ping结果分析,linux – 来自ping的奇怪结果

如果通过IP ping而不是hostname,则会收到预期的行为.我仍在调查,以了解为什么会这样.# find IP address of host$host -t a google.comgoogle.com has address 74.125.225.17google.com has address 74.125.225.19google.com has address 74.125.225.20google.com has address …

JavaScript 红宝书第4版上市啦!「文末送几本给大家」

文末有活动人的一生中总要读几本经典书&#xff0c;在这个“经典”泛滥的年代&#xff0c;什么才是权威的代表&#xff0c;我想大概是一本的书的口碑&#xff0c;能积累下上佳口碑的书&#xff0c;往往也是能经得住时间推敲的。比如这本&#xff1a;我相信所有前端开发者的案头…

什么时候轮到我涨薪?

为了涨薪&#xff0c;也是拼了&#xff01;经常有小伙伴留言问有什么好的学习资料推荐&#xff0c;针对大家平时提到的一些学习上问题&#xff0c;比如&#xff1a;成长速度过慢&#xff0c;难以突破现在的瓶颈&#xff1b;学习没有条理、吸收慢&#xff1b;自己学习太孤单&…

linux用shell写c,用vi编写c语言 linux shell的说明

先创建一个用户 useradd -d /home/abc abc -m -s /bin/bash -s代表指定一个shell登录到用户用vi写一个c语言的hello world文件名叫a.c 如果是c语言的源代码文件&#xff0c;扩展名必须是.c编译这个程序&#xff0c;最后成功运行gcc -o a a.c -o指定编译后的程序名&#xf…

学习 Vue3.0,先从搭建环境开始

本文将带您从零搭建一个基于Vue3.0与vite的Vue3.0开发环境&#xff0c;通过本文的学习&#xff0c;你将学习到以下内容&#xff1a;使用vite初始化Vue3.0项目配置ts配置vue-router配置vuex使用Vue3.0开发一个TodoList示例一、使用vite初始化项目vite 介绍vite是尤大大在今年新鼓…

在 JavaScript 中使用 Promises 时最常见的 3 个错误

❝本文对开发者编写 Promise 时常出现的几种错误进行了总结&#xff0c;剖析的一针见血&#xff0c;来看看是不是你平时所写&#xff1f;❞时至今日&#xff0c;即使有 async / await 的引入&#xff0c;JavaScript 中 Promises 的编写规则对于所有的 JS 开发者来说仍然是必不可…

linux 蓝牙5.0,USB蓝牙适配器5.0在Deepin 20.1、Ubuntu 20.04系统上的安装

本文以奥睿科ORICO BTA-508 USB蓝牙适配器5.0为例&#xff0c;说明其安装方法&#xff0c;可应用在Deepin 20.1、Ubuntu 20.04等系统上。同时附上蓝牙Realtek 8761B不适用于Ubuntu 20.04.1 LTS&#xff0c;内核5.9.8-050908-generic的解决方法。USB蓝牙适配器信息和系统信息型号…