Git 笔记
何为Git
Git 是一个免费的、开源的分布式版本控制系统,可以方便管理自己的代码、方便多人协作开发
首先需要先安装git:官网
安装教程我就不说了,可能还需要配置一下秘钥
Git命令
仓库操作
设置用户签名
用户签名用于识别区分版本提交者的信息,如果没有则不能提交代码
git config --global user.name 用户名
git config --global user.email 邮箱
git config --global user.name Lrc
git config --global user.email lrcgyh@gmail.com
//设置完毕可以在c盘中个人用户文件夹.gitconfig文件夹中查看
或者用命令cat ~/.gitconfig直接查看
初始化本地库
在一个文件夹下使用此命令,会在该文件夹下初始化一个本地代码仓库,分支名为
master
git init
查看本地库状态
用于查看本地是否有新的文件未提交至暂存区(.git/index)或本地库
git status
将本机文件添加到暂存区
git add 文件名
git add test.txt
git add . // 将所有文件添加至暂存区
将暂存区文件提交到本地库
git commit -m "日志信息" 文件名
git commit -m "my first commit" //提交所有文件
查看历史记录
git reflog
git log:查看日志
git log --graph:查看分支合并日志
版本穿梭
版本穿梭后,本机文件会替换至穿梭后版本的内容
git reset --hard 版本号
git reset // 把暂存区文件退回至工作区
git reset --hard *******(七位数) // 退回指定版本
git reset --hard HEAD^ // 退回上一个版本
git reset --hard HEAD~10 // 退回上第10个版本
删除工作区文件
git rm 文件名
git rm README.md
分支操作
分支就相当于基于当前项目,新建一个副本,用于开发新的功能,最后可以将分出去开发其他功能的新分支直接合并至主分支上,方便快捷
创建分支
git branch 分支名
查看分支
git branch
git branch -v
切换分支
git checkout 分支名
可与用
git checkout -b 分支名快捷创建一条新分支并切换至新分支上
除了checkout命令,切换分支还有个新的命令方式
git switch 分支名
可与用
git switch -c 分支名快捷创建一条新分支并切换至新分支上
合并分支
git merge 分支名:将指定分支名分支合并到当前分支
默认是快速合并(fast forward)模式,如果删除后git log不能查看到被合并分支的历史
我们可以加上参数--no-ff,禁用快速合并模式,普通模式下合并分支删除后可以通过git log查看到被合并分支的历史
git merge --no-ff 分支名
分支冲突:
分支冲突产生原因:
在分支合并时,当同一个文件在两个分支都有新的内容提交,再对两个分支合并,git无法执行快速合并,就会产生分支冲突解决办法:
手动修改冲突文件内容,再重新提交
注意:
- 发生冲突时
commit提交时不能加上文件名。- 合并后只改变了当前分支的文件内容,被合并的分支文件内容不会改变
删除分支
删除:git branch -d 分支名
如果新的分支没有被合并过,只能强制删除
强制删除:git branch -D 分支名
标签管理
用于给每一个commit打上一个别名,方便了解每一个版本都是啥玩意
# 查看所有标签
git tag
# 给当前分支创建标签
git tag 标签名
# 给指定conmmit版本创建标签
git tag 标签名 版本号
# 创建带有说明的标签
git tag -a 标签名 "说明信息" 版本号
# 查看标签详细信息
git show 标签名
# 删除本地标签
git tab -d 标签名
# 将指定标签推送至远程
git push 别名 标签名
# 将所有标签推送至远程
git push 别名 --tags
# 删除远程标签
git push 别名 :refs/tags/标签名 // 先删除本地标签,再删除远程标签
规范
在系统开发过程中常用的环境:
- DEV 环境(Development environment):用于开发者调试使用
- FAT环境(Feature Acceptance Test environment):功能验收测试环境,用于测试环境下的软件测试者测试使用
- UAT环境 (User Acceptance Test environment):用户验收测试环境,用于生产环境下的软件测试者测试使用
- PRO 环境(Production environment):生产环境
分支命名规范
| 分支 | 功能 | 环境 | 可访问 |
|---|---|---|---|
| master | 主分支,稳定版本 | PRO | 是 |
| develop | 开发分支,最新版本 | DEV | 是 |
| feature | 开发分支,实现新特性 | 否 | |
| test | 测试分支,功能测试 | FAT | 是 |
| release | 预上线分支,发布新版本 | UAT | 是 |
| hotfix | 紧急修复分支,修复线上bug | 否 |
Git Commit 规范
完整版
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
或简易版:
<type>(<scope>):<subject>
type类型
- feature: 新增功能
- optimize: 优化
- fix: 修复bug
- docs: 仅文档更改
- style: 不影响代码含义的更改(空白、格式设置、缺失 分号等)
- refactor: 重构,既不修复bug也不添加特性的代码更改
- perf: 改进性能的代码更改
- test: 添加缺少的测试或更正现有测试
- chore: 对构建过程或辅助工具和库(如文档)的更改
- build:改变构建流程,新增依赖库、工具等(例如webpack、gulp、npm修改)
Github
-
首先在
github上创建一个仓库,获取仓库链接,克隆到本地git clone 仓库链接 -
在本地给仓库创建别名,默认别名都是
origingit remote -v:查看当前本地库关联所有的远程库别名git remote add 别名 仓库地址:创建别名并与远程库关联git remote rm 别名:删除与远程库的关联
-
推送本地分支到
github仓库git push 别名 分支名
别名:是本地git仓库与远程仓库链接时设置的别名
分支名:是远程仓库的分支名
git push lrc master:将本地的 lrc 别名仓库提交到远程的 master 分支
git push 别名 <本地分支名>:<远程分支名>:将本地指定分支推送到远程指定分支,也可以用于新建远程分支
第一次推送到仓库如果仓库是空的可能会推送不成功,需要加
-u
git push -u 别名 分支名
也可以直接使用远程仓库链接
git push 远程仓库地址链接
还有一种情况是仓库中已经存在文件了,运行如下命令,可以拉取远程仓库中文件到本地,接下来就可以推送成功了
git pull
git pull origin master
git pull origin master --allow-unrelated-histories
-
将远程仓库拉取到本地,合并远程分支和本地分支
git push相当于两条命令:git fetch(拉取到本地库) +git merge(合并到工作区)-
别名 + 分支名
git pull 远程库地址别名 远程分支名 -
也可以直接使用远程仓库链接
git pull 远程仓库地址链接
-
-
克隆远程仓库到本地
要注意的是克隆的仓库会自动取好别名:origin
git clone 远程地址链接
-
同团队协作
-
跨团队协作
如果不是项目团队成员,需要先fork项目到自己的github,再在线操作项目或者clone到本地修改,最后可以将自己修改的代码提交给项目原来的仓库
vim基础
通过vim命令进入文本后,首先需要选择模式
Insert模式:输入
i,修改文档Visual模式:输入
v,选择文档内容
简单命令
vim + 文件名 打开文本
esc + :wq 保存修改并退出
esc + :q! 强制退出
esc + :q 退出
dd:删除当前行
yy:复制当前行
p: 粘贴当前行

浙公网安备 33010602011771号