最近在网易
工做之余,遇到Git上面一些问题,趁此次的机会,补一补Git基础知识。前端
公众号前端UpUp,回复Git,便可获取脑图。node
联系👉TianTianUp,有惊喜噢❤️webpack
脑图👇git
本文更多梳理的是Git经常使用命令,非原理篇,须要这部分知识的能够往下看。github
首先咱们的了解Git一般的操做流程,网上流行的不错一张图👇web
基于上面的图,咱们就有接下来一些概念👇面试
版本库👉.git
浏览器
git init
时,这个时候,会多一个.git
文件,咱们把这个文件称之为版本库。.git文件
另一个做用就是它在建立的时候,会自动建立master分支,而且将HEAD指针指向master分支。工做区缓存
暂存区 (Index/Stage)bash
本地仓库(Repository)
远程仓库(Remote)
git status
复制代码
Changes not staged for commit
git add
Changes to be committed
git commit
nothing to commit, working tree clean
git config --list
复制代码
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这个指令的话,后续会梳理
复制代码
我理解的就是将远程仓库内容更新到本地,最近与师姐开发项目过程当中,使用的就是这个命令。
具体是这样子的👇
git fetch origin <branch-name>:<local-branch-name>
复制代码
branch-name
你要拉取的分支local-branch-name
一般而言,就是你本地新建一个新分支,将origin下的某个分支代码下载到本地分支。举个例子👇
git fetch origin feature/template_excellent:feature/template_layout
// 你的工做目录下,就会有feature/template_layout
// 通常状况下,咱们须要作的就是在这个分支上开发新需求
// 完成代码后,咱们须要作的就是上传咱们的分支
复制代码
git fetch <远程主机名>
复制代码
git fetch <远程主机名> <分支名>
复制代码
git fetch origin :<local-branch-name>
// 等价于👇
git fetch origin master:<local-branch-name>
复制代码
撤销工做区修改
暂存区文件撤销 (不覆盖工做区)
版本回退
git reset --(soft | mixed | hard ) < HEAD ~(num) > |
指令 | 做用范围 |
---|---|
--hard | 回退所有,包括HEAD,index,working tree |
--mixed | 回退部分,包括HEAD,index |
--soft | 只回退HEAD |
添加改动到stash
删除暂存
查看stash列表
删除所有缓存
恢复改动
master分支
develop 分支
feature分支
**这点我深有体会,我在网易,mentor就是这么教个人,**一般建一个feature分支。
release分支
hotfix分支
参考来着:稻草叔叔
有了上述的基本了解后,那么咱们就来看看总体的一个流程吧。
建立本地仓库 git init
git init
连接本地仓库与远端仓库
git remote add origin
origin默认是远端仓库别名 url 能够是可使用https或者ssh的方式新建
检查配置信息
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管理这种,咱们也不但愿出如今未跟踪文件列表。
那么咱们来看看如何配置该文件信息。
# 此行为注释 会被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
复制代码
若是你以为这篇内容对你挺有有帮助的话: