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

前言

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

公众号前端UpUp,回复Git,便可获取脑图。node

联系👉TianTianUp,有惊喜噢❤️webpack

脑图👇git

Git脑图

本文更多梳理的是Git经常使用命令,非原理篇,须要这部分知识的能够往下看。github


首先咱们的了解Git一般的操做流程,网上流行的不错一张图👇web

Git经典流程图


基本概念

Git基本命令

基于上面的图,咱们就有接下来一些概念👇面试

  • 版本库👉.git浏览器

    • 当咱们使用git管理文件时,好比git init时,这个时候,会多一个.git文件,咱们把这个文件称之为版本库。
    • .git文件另一个做用就是它在建立的时候,会自动建立master分支,而且将HEAD指针指向master分支。
  • 工做区缓存

    • 本地项目存放文件的位置
    • 能够理解成图上的workspace
  • 暂存区 (Index/Stage)bash

    • 顾名思义就是暂时存放文件的地方,经过是经过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 HEAD
  • 版本回退

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

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

状态查询

  • 查看状态
    • git status
  • 查看历史操做记录
    • git reflog
  • 查看日志
    • git log

文档查询

  • 展现Git命令大纲
    • git help (--help)
  • 展现Git命令大纲所有列表
    • git help -a
  • 展现具体命令说明手册
    • git help

文件暂存

Git命令文件暂存

  • 添加改动到stash

    • git stash save -a “message”
  • 删除暂存

    • git stash drop <stash@{ID}>
  • 查看stash列表

    • git stash list
  • 删除所有缓存

    • git stash clear
  • 恢复改动

    • git stash pop <stash@{ID}>

差别比较

Git文件比较

  • 比较工做区与缓存区
    • git diff
  • 比较缓存区与本地库最近一次commit内容
    • git diff -- cached
  • 比较工做区与本地最近一次commit内容
    • git diff HEAD
  • 比较两个commit之间差别
    • git diff

分支命名

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 -v
  • 远端仓库从新命名

    • git remote rename old new
  • 提交到缓存区

    • git add . 所有上传到缓存区
    • git add 指定文件
  • 提交到本地仓库

    • git commit -m 'some message'
  • 提交远程仓库

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

    • git branch
  • 建立新分支

    • git branch
  • 切换分支

    • git checkout
  • 建立分支并切换

    • git checkout -b
  • 删除分支

    • git branch -d
  • 删除远程分支

    • git push -d
  • 切换分支

    • git checkout

忽略文件 .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

复制代码

参考

❤️ 感谢你们

若是你以为这篇内容对你挺有有帮助的话:

  1. 点赞支持下吧,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)
  2. 关注公众号前端UpUp,按期为你推送好文。
  3. 以为不错的话,也能够阅读TianTian近期梳理的文章(感谢掘友的鼓励与支持🌹🌹🌹):
相关文章
相关标签/搜索