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

Git学习脑图

若是以为看完文章有所收获的话,能够关注我一下哦
知乎:秃顶之路
b站:linux亦有归途
天天都会更新咱们的公开课录播以及编程干货和大厂面经
或者直接点击连接
c/c++ linux服务器开发高级架构师
来课堂上跟咱们讲师面对面交流
须要大厂面经跟学习大纲的小伙伴能够加群973961276获取linux
基本概念

基于上面的图,咱们就有接下来一些概念👇c++
- 版本库👉.git
- 当咱们使用git管理文件时,好比git init时,这个时候,会多一个.git文件,咱们把这个文件称之为版本库。
- .git文件另一个做用就是它在建立的时候,会自动建立master分支,而且将HEAD指针指向master分支。
- 工做区
- 本地项目存放文件的位置
- 能够理解成图上的workspace
- 暂存区 (Index/Stage)
- 顾名思义就是暂时存放文件的地方,经过是经过add命令将工做区的文件添加到缓冲区
- 本地仓库(Repository)
- 一般状况下,咱们使用commit命令能够将暂存区的文件添加到本地仓库
- 一般而言,HEAD指针指向的就是master分支
- 远程仓库(Remote)
- 举个例子,当咱们使用GitHub托管咱们项目时,它就是一个远程仓库。
- 一般咱们使用clone命令将远程仓库代码拷贝下来,本地代码更新后,经过push托送给远程仓库。
-
-git
Git文件状态

git status 复制代码github
- Changes not staged for commit
- 表示得大概就是工做区有该内容,可是缓存区没有,须要咱们git add
- Changes to be committed
- 通常而言,这个时候,文件放在缓存区了,咱们须要git commit
- nothing to commit, working tree clean
- 这个时候,咱们将本地的代码推送到远端便可
-
-编程
常见命令 git配置命令

git config --list 复制代码缓存
git config --local --list 复制代码服务器
git config --global --list 复制代码架构
git config --system --list 复制代码 经过上述的命令,发现你并无配置用户信息的话,接下来配置一下👇ssh
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
-
-
文件暂存

- 添加改动到stash
- git 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 --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
