一张脑图带你彻底掌握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 addChanges to be committed一般而言,这个时候,文件放在缓存区了,我们需要git commitnothing to commit, working tree clean这个时候,我们将本地的代码推送到远端即可*

-

常见命令 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 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指令

我理解的就是将远程仓库内容更新到本地,最近与师姐开发项目过程中,使用的就是这个命令。 具体是这样子的? 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 checkout --暂存区文件撤销 (不覆盖工作区)git reset HEAD版本回退git reset --(soft | mixed | hard ) < HEAD ~(num) > |

指令

作用范围

状态查询

查看状态git status查看历史操作记录git reflog查看日志git log*

文档查询

展示Git命令大纲git help (--help)展示Git命令大纲全部列表git help -a展示具体命令说明手册git help*

-

文件暂存

添加改动到stashgit stash save -a “message”删除暂存git stash drop <stash@{ID}>查看stash列表git stash list删除全部缓存git stash clear恢复改动git stash pop <stash@{ID}>*

-

差异比较

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

-

分支命名

master分支

主分支,用于部署生产环境的分支,确保稳定性。master分支一般由develop以及hotfix分支合并,任何情况下都不能直接修改代码。

develop 分支

develop为开发分支,通常情况下,保存最新完成以及bug修复后的代码。开发新功能时,feature分支都是基于develop分支下创建的。

feature分支

开发新功能,基本上以develop为基础创建feature分支。分支命名:feature/ 开头的为特性分支, 命名规则: feature/user_module、 feature/cart_module。

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

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

hotfix分支

分支命名:hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似。线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支。

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

创建本地仓库 git init git init链接本地仓库与远端仓库 git remote add origin origin默认是远端仓库别名 url 可以是可以使用https或者ssh的方式新建检查配置信息git config --listGit 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

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

加个好友,技术交流

1628738909466805.jpg