![4e8fdaa5087d5e8d925c65bd14700488.png](https://i-blog.csdnimg.cn/blog_migrate/d5ea7056777ff8600395ad27a885b9c7.jpeg)
概述
Git是一个版本管理系统,区别于其他版本管理系统,Git采用一种快照的方式来进行版本管理。
![d80f4e200705b2f53d2426a6dfe5bf8e.png](https://i-blog.csdnimg.cn/blog_migrate/cd7582c4d862e61441c57ecfedb1570a.jpeg)
借鉴:视频教程https://www.bilibili.com/video/BV1wC4y1W7Uh?t=2636
Git四大区域:工作空间 + 暂存区 + 本地仓库 + 远程仓库
先掌握宏观常见知识体系,之后的在工作中进行深化总结掌握。
安装和配置
配置必要的账户信息
//配置用户名和邮箱
git config --global user.name "John"
git config --global user.email ***@yourmail.com
//查看配置
git config --list
使用 Https 或 SSH 的方式来拉取远程仓库
![94fae0358be4f62bc062717f1a6855c9.png](https://i-blog.csdnimg.cn/blog_migrate/3593edf3ca8095eb06439d4b658e50b6.png)
SSH方式需要在本地生成公钥和私钥,然后在服务端保存公钥
之后执行
//进行认证
ssh -T git@github.com
获取和创建仓库
//直接在本地初始化仓库
git ini
//从远程获取 自动在本地建立 master分支 origin是你clone的分支
git clone
添加到暂存区staged
//添加指定文件
git add [filename]
//追踪所有工作区修改的文件 包括删除(2.0后)增加 和 修改
git add .
查看状态status 提示操作
//查看状态 获得一些提示操作
git status
查看区别diff
// 修改的 和 暂存区 之间的不同
git diff
// 暂存区的和上一次提交的不同
git diff --staged
![493ea43e495df3f70a17759f1581b46d.png](https://i-blog.csdnimg.cn/blog_migrate/e708f785f49fb7c732d63b80e05e7f15.png)
提交到本地仓库 commit
//提交 暂存区 到仓库
git add .
//message不带则会在vim格式下要求填写
git commit -m "message"
查看日志
//查看提交日志
git log
//带参数 查看最近 2 次 提交
git log -p -2
分支 branch
// 查看所有分支
git branch
// 创建分支
git branch [branch name]
// 查看分支 状态
git branch -vv
// 删除分支
git branch -d [branch name]
// 查看 所有 远程分支 的状态
git remote -v
![60a69085229ba0b7f2a179a06158308a.png](https://i-blog.csdnimg.cn/blog_migrate/c47500211696a92b8aaf939e261042fe.png)
![ec36a674eb6c2a9398a20f7ffe0b95b3.png](https://i-blog.csdnimg.cn/blog_migrate/ac3679bf3373881f27322f8485abb2d2.png)
添加管理远程分支
//列出所有的远程分支
git ls-remote origin
git remote add [仓库名称] [远程仓库地址]
git remote -v
//列除 仓库下的所有分支
git ls-remote [仓库名称]
// 删除 远程仓库
git remote rm [仓库名称]
![bd5e26f4a8af7916de31d11186ef88cd.png](https://i-blog.csdnimg.cn/blog_migrate/b01a0c5127718bee4ec04d8036e2c937.png)
标签
// 展示标签
git tag
// 添加 标签
git tag -a v3.0 -m "version3.0"
//切换到 tag
git tag -a v2.0 [hash号]
// 从tag位置创建新分支
git checkout -b [branch name] [tagname]
git switch -c [new branch name]
从远程分支添加分支到本地
// 将远程 origin 及附属分支 到本地
git fetch origin
// 在本地创建分支
git checkout origin/[tag name]
![d5757c68bf1677147a3339eeb60e4e98.png](https://i-blog.csdnimg.cn/blog_migrate/235b83fc460a9628526ec52a0fc5e775.png)
拉取
fetch如果不带参数可以将远程分支都拉取到本地的 origin/下
之后你可以使用checkout -b [tagname] origin/[tagname](需要创建名字不同本地的分支)否则直接使用checkout [branchnane]
// 拉取分支
git fetch
// 拉取后进行自动merge 不推荐使用
git pull
合并
// 在当前分支下将 另外的分支进行merge操作
git merge [branch name]
![28f1d3b84d020d92b1e3983d37a138fd.png](https://i-blog.csdnimg.cn/blog_migrate/e5cfa3323e0a1b2e1b292e5c604da38f.jpeg)
![9553294f8c4c0507c2adc59c8d9ff876.png](https://i-blog.csdnimg.cn/blog_migrate/8cfea7ba1faa8c312f64fa119111b5d7.jpeg)
实际使用场景
原则:遇到bug需要fix或者需要开发新的feature都在长期分支上创建新分支进行处理之后再考虑进行合并
常见的flow
![9acf1e4b202e8961c56bc21feb9cf1cd.png](https://i-blog.csdnimg.cn/blog_migrate/44c4888f55c94d966e88652cfb29d3f1.jpeg)