github和git
最近发现有新生同学知道github,却不知道git,回想起自己以前大一也是瞎摸索,所以决定简单写一篇blog来简单讲讲git相关的事情
什么是github
github是世界上(最大的同性交友网站) 代码托管平台,并且很多都是开源的项目。
这个就连问我git是什么的新生也是知道了,所以先搁置,讲讲git
什么是git
先贴份不错的教程--> 廖雪峰git教程
这里用自己简单通俗的话总结一下git
git是分布式的版本控制系统,是帮助我们个人开发 或团队开发十分强劲的好用工具
列举一下git的几个优点
- 版本管理(可以讲代码回退到之前提交的某个时间节点)
- 就像我们写word作业,有时候需要开好多的副本
- 分支机制 (可以开多个分支写不同的功能,可以随时快速切换,也可以合并分支...)
- 多人协作 (多人合作项目,可以各自写各自的功能,每个人本地都有一个库,可以看到每个人更新了什么,不用给他人传文件)
- 一般多人会到代码托管平台比如
github,gitee(国内版本,有点⑩),gitlab(一般企业是用gitlab 自搭)
- 一般多人会到代码托管平台比如
而且git的实现机制类似主席树,可以有效节省内存空间
git的几个操作
-
init
git init初始化 -
add
git add a.txt将a.txt加到暂存区git add .将目录下所有新增的文件内容加到暂存区
-
commit
- 多次add一次commit就ok了
git commit -m "本次提交的信息,可见提交规范"- 将暂存区加到工作区
-
pull
git pull [remote] [branch]- 这个命令用于从远程获取代码并合并。实际上,
git pull是git fetch和git merge的组合体。使用这个命令,Git 会像服务器请求更新,获取最新版本的代码,然后将这些更新合并到本地的工作分支。
危险git pull先把本地修改的代码add,commit起来,避免冲乱工作区,造成代码丢失或者没开发完成的代码可以
git stash存起来可以
git status查看commit提交的记录确认无语再
git pull拉取远程仓库代码进行合并,冲突处理等 -
fetch
git fetch [remote]- 这个命令用于从远程获取代码,但是它不会自动合并或修改你当前的工作。换句话说,你可以在需要时进行
git fetch,然后在一个合适的时间进行git merge。
-
push:
git push [remote] [branch]- 这个命令用于将你的更改推送到远程分支。这样,你的团队成员就可以获取到你所作的更改。如果你和别人都在同一个分支进行开发,你可能需要先执行
git pull来合并代码,以确保你的更改能够顺利推送到远程。
- 这个命令用于将你的更改推送到远程分支。这样,你的团队成员就可以获取到你所作的更改。如果你和别人都在同一个分支进行开发,你可能需要先执行
-
branch:在 Git 中,分支是代码库不同开发版本的指针。以下是关于
git branch的一些常见用法:git branch:列出所有的本地分支。git branch [branch-name]:创建一个新的分支。这并不会自动切换到这个新分支,你需要使用git checkout命令来切换分支。git branch -d [branch-name]:删除一个分支,但是在你没有合并分支的更改之前,你将不能删除这个分支。git branch -D [branch-name]:强制删除一个分支,即使你没有合并分支的更改,你也能够删除这个分支(谨慎使用)。
-
checkout:
git checkout是切换和恢复工作目录文件的命令,它有多种用法,包括:git checkout [branch-name]:切换到一个已存在的分支。如果你正在进行的更改尚未提交,切换分支可能会有冲突,你可能需要先提交更改,或者取消更改,然后再切换分支。git checkout -b [branch-name]:创建一个新的分支,并立即切换到这个新分支。这是git branch [branch-name]和git checkout [branch-name]的快捷方式。git checkout [commit] [file]:恢复一个文件到指定的提交版本,其中[commit]是你想要切换到的提交 ID,[file]是你想要恢复的文件。
-
stash
- 主要用于代码没开放成功,但是又需要去新的分支开发其他东西,可以将当前的代码存到节点下为一个节点
git stash存git stash list展示git stash apply [node]应用git stash pop应用删除git stash clear清除全部
- 主要用于代码没开放成功,但是又需要去新的分支开发其他东西,可以将当前的代码存到节点下为一个节点
还有变基rebase,cherry pick可以改变顺序,变线性
git lint对代码风格格式校验
新手先注册github,本地安装git工具,配置邮箱等信息,在本地终端或者vscode等试试,再试试push到远程仓库上。
提交规范
提交规范主要是为了让开发者提交完整的更新信息,方便查阅。
目前最为流行的提交信息规范来自于 Angular 团队。
规范中,主要就是要求提交内容要进行分类并填写内容,更为严格的规定是要求标注开发模块,整个语法如下
git commit -m "feat: 增加新功能"
type(scope?): subject #scope is optional; multiple scopes are supported (current delimiter options: "/", "\" and ",")
| type | commit 的类型 |
|---|---|
| feat | 新功能、新特性 |
| fix | 修改 bug |
| perf | 更改代码,以提高性能 |
| refactor | 代码重构(重构,在不影响代码内部行为、功能下的代码修改) |
| docs | 文档修改 |
| style | 代码格式修改, 注意不是 css 修改(例如分号修改) |
| test | 测试用例新增、修改 |
| build | 影响项目构建或依赖项修改 |
| revert | 恢复上一次提交 |
| ci | 持续集成相关文件修改 |
| chore | 其他修改(不在上述类型中的修改) |
| release | 发布新版本 |
| workflow | 工作流相关文件修改 |
以下是一些示例:
| commit message | 描述 |
|---|---|
| chore: init | 初始化项目 |
| chore: update deps | 更新依赖 |
| chore: wording | 调整文字(措词) |
| chore: fix typos | 修复拼写错误 |
| chore: release v1.0.0 | 发布 1.0.0 版本 |
| fix: icon size | 修复图标大小 |
| fix: value.length -> values.length | value 变量调整为 values |
| feat(blog): add comment section | blog 新增评论部分 |
| feat: support typescript | 新增 typescript 支持 |
| feat: improve xxx types |
