最近在工作之余,遇到Git上面一些问题,趁这次的机会,补一补Git基础知识。
脑图?
「本文更多梳理的是Git常用命令,非原理篇,需要这部分知识的可以往下看。」
一图解天下?
首先我们的了解Git通常的操作流程,网上流行的不错一张图?
Git经典流程图
Git基本命令
基于上面的图,我们就有接下来一些概念?
.git
git init
时,这个时候,会多一个.git
文件,我们把这个文件称之为版本库。.git文件
另外一个作用就是它在创建的时候,会自动创建master分支,并且将HEAD指针指向master分支。git status
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
通过上述的命令,发现你并没有配置用户信息的话,接下来配置一下?
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这个指令的话,后续会梳理
Git命令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花式撤销
Git命令文件暂存
Git文件比较
Git分支管理规范
「master分支」
「develop 分支」
「feature分支」
**这点我深有体会,我在网易,mentor就是这么教我的,**通常建一个feature分支。
「release分支」
「hotfix分支」
参考来着:稻草叔叔
有了上述的基本了解后,那么我们就来看看整体的一个流程吧。
这个文件的作用,会去忽略一些不需要纳入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