Markdown的学习
标题
示例
标题用#开头 从一级到六级从大到小 所需要的#从1-6
#一级标题
##二级标题
以此类推
说明
给出的格式中,文字与符号之间需要空格隔开
锚点
示例
格式
[链接名](跳转的地址(类似#xxx)) # xxx
比如这里的锚点就是下面的格式
[Git的学习](#Git的学习) # Git的学习
除此之外
在Typora里的锚点跳转都是Ctrl+鼠标左键
引用
示例
这是一级引用
这是二级引用
这是三级引用
回到二级引用
回到一级引用
标题
说明
当你需要使用引用时,在文字前面加上 > 即可
随着>的增多会进入相应的更高级引用
>这是一级引用
>>这是二级引用
>>>这是三级引用
>>回到二级引用
>回到一级引用
补充
1.当你需要从高级引用转回低一级引用时需要多按一次空格(typora是这个情况)
2.其余Markdown语法在引用的区块内也可以使用
列表
无序列表
示例
- 列表元素1
- 列表元素1
说明
文字前用星号,减号,加号,并以空格分隔可以实现无序列表的样式
有序列表
示例
- 列表元素1
- 列表元素1
说明
文字前用数字,并以空格分隔可以实现有序列表的样式
代码块
示例
var a = 1
var b = 2
说明
在你要标注代码块的地方前后加上反引号即可以代码的样式去呈现内容,一对和两对反引号可以创建代码区域,三个反引号加Enter键可以创建出带选择语言类型的代码块,如下图点击代码区即可显示所用语言类型
let a = 'Hello world'
斜体与加粗
示例
斜体:我是斜体,我是斜体
加粗:我是加粗,我是加粗
说明
斜体
在文字前后加上一个星号或者下划线,即可实现效果
加粗
在文字前后加上两个星号或者下划线,即可实现效果
链接
示例
说明
同锚点一样,需要Ctrl+左键点击,不同的是,如果在括号内部填入http开头的网址,Markdown会自动将其转化为链接,#开头就是本页的锚点跳转
表格
示例
| First Header | Second Header | Third Header |
|---|---|---|
| Content Cell | Content Cell | Content Cell |
| Content Cell | Content Cell | Content Cell |
| First Header | Second Header | Third Header |
|---|---|---|
| Left | Center | Right |
| Left | Center | Right |
说明
First Header | Second Header | Third Header
------------ | ------------- | ------------
Content Cell | Content Cell | Content Cell
Content Cell | Content Cell | Content Cell
//这一种是正常表格
First Header | Second Header | Third Header
:----------- | :-----------: | -----------:
Left | Center | Right
Left | Center | Right
//这是居中对齐表格
格式如上(真奇怪昨天Typora都不给我显示)
分割线
示例
用三个以上的-(短横线)就可以呈现分割线的效果,如下
甘特图&流程图&时序图
甘特图
说明
gantt //代表图类型
title 这是个练习 //图的名字
dateFormat YYYY-MM-DD //图上时间的显示格式
section 部分一//每一个总任务以section为快分开
第一任务:done, des1, 2019-09-06, 5d
//参数可以填写的值有完成状态、起始时间,任务所需时间,起始位置(after des1)
第二任务:crit, active,after des1,2019-09-10,5d
第三任务:after des1,2019-09-16,5d
//done代表已完成呈现灰色 active代表正在完成
section 部分二
第一任务:done, des1, 2019-09-06, 3d
第二任务:active,after des1,2019-09-08,3d
第三任务:crit, 2019-09-13,6d
流程图
说明
1、graph关键字
graph TB表示流程图从上到下开始,TB表示设置该图起始的方向,方向的定义如下:
- TB( top bottom)表示从上到下
- BT(bottom top)表示从下到上
- RL(right left)表示从右到左
- LR(left right)表示从左到右
2、节点形状
大写字母表示节点,name表示节点的名字,主要形状如下:
- 文本节点 B[bname]
- 圆角节点 C(cname)
- 圆形节点 D((dname))
- 非对称节点 E>ename]
- 菱形节点 F{fname}
时序图
补充
->是实线
-->是虚线
-->>是虚线箭头
->>是实线箭头
Git的学习
流程
Git的下载与配置
下载去官网就好 https://git-scm.com/
点击download就OK
关于配置
https://www.cnblogs.com/hglibin/p/11876730.html
创建文件夹
先在指定位置创建文件夹
初始化仓库
对指定文件夹右键,点击Git Bash Here,弹出命令行窗口
运行git init
配置用户名和邮箱
git config --global user.name “xxx”
git config --global user.email “xxx@163.com”
配置完了可以使用命令
git config --list 查看你的配置信息
保存账户和密码
使用git常常涉及到向远程仓库提交代码
所以每次无论是clone还是push等等每次都需要登录
使用以下命令,在需要输入的时候再输入一次,以后就不用再输入
git config --global credential.helper store
git的常规操作
概念
四个工作区域
Workspace: 工作区,就是你平时存放项目代码的地方
Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
工作流程
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
详细流程
工作区(编辑,修改)
— add —>暂存区
— commit —>本地库(Repository)
— push —> 远程仓库
— merge —>master(需要管理员审核通过)
—> 当他人也提交并merge之后自己再去基于master更改的时候
—>git pull origin master (等同于 fetch 远程的变化到本地 查看通过之后 并merge到当前分支)然后在回到当前操作流程的第一行循环操作
(上面的流程是当你处于项目的成员进行代码操作与管理员的交互流程)
这里顺便说一下 不同项目组合作开发之间的流程
主者就保持上面的流程 次者要先fork主者的整个仓库,下面的操作形同上面的操作
不过当次者要合并代码到主者的仓库中需要向主者发起pull request 待主者审核之后 即可合并到主者的仓库中,然后分属于主者仓库下的开发者就可以pull远程仓库的代码到本地库然后编辑了
Git的一些理解
局域网下(GitLab)(这个是自己搭建的,私有的)
外网或者公网下(GitHub,码云等等)
涉及到的命令
首先是在本地仓库随意创建一个文件夹,下面放个txt文件
使用git status 查看状态
Untracked files:
(use "git add <file>..." to include in what will be committed)
ss/
这时你创建的文件夹处于未跟踪的状态
使用git add ss/ 将该文件夹加入暂存区
再使用git status
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: ss/ss.txt
这个时候就代表添加进入git仓库了
此时使用git commit -m ‘填入备注信息’,执行完毕才代表真正提交完成
完成之后使用git log 查看提交记录
完成之后再去修改ss文件夹下的ss.txt的内容
再使用git status查看
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: ss/ss.txt
第一行的意思是文档的内容改变没有被提交
modified就是说该文件被修改了
使用git add ss/ss.txt 然后再提交就OK
分支
Git 分支简介
Git分支是由指针管理起来的,所以创建、切换、合并、删除分支都非常快,非常适合大型项目的开发。
在分支上做开发,调试好了后再合并到主分支。那么每个人开发模块式都不会影响到别人。
创建分支
创建并切换分支:git checkout -b < 分支名称>
这条命令和下面两条命令效果相同。
创建分支:git branch <分支名称>
切换分支:git checkout <分支名称>
注解:创建分支的目的在于面对大型项目需要多人开发时,各自编写自己的模块提交到各自分支下而不受时间空间影响,即可以并行做对项目的不同模块的开发
查看分支
git branch -a (该命令也会查看到远程仓库的所有分支)
合并分支
git checkout master 先切换到master分支
git merge B 再将B分支的代码合并到master
注解:项目组的开发人员完成了各自的功能在leader的检查之后将其它分支做好的代码合并到主分支
删除分支
git branch -d 分支名称
git branch reflog 可以查看所有分支的散列值
找到删除分支的散列值
然后使用git branch <分支名称> <散列值>
即可恢复已删除分支
注解:要养成习惯,本地仓库和远程仓库你的分支是都有的,也就是删除完了本地分支还要去删除远程分支,管理分支是一个很重要的习惯,人员繁多的时候保持自己所属分支干净整洁会减少不必要的leader对整个项目的分支管理,简而言之就是节省时间提升效率
远程仓库和分支
关联远程仓库
git remote add origin 远程仓库URL 这一句
添加完成后使用git remote -v 查看远程仓库是否添加进来
拉取远程仓库所有分支
git fetch -a
单一拉取
git fetch origin 分支名
切换远程分支
git checkout -b 分支名称
如本地没有该分支会自动创建该分支
将本地分支关联到远程仓库分支
创建分支git branch 分支名
查看分支git branch
切换分支git checkout 分支名
如果本地新建了一个分支 branch_name,但是在远程没有。使用
git push --set-upstream origin 分支名如果远程新建了一个分支,本地没有该分支。使用
git checkout --track origin/分支名
clone远程仓库工程
添加完成之后
使用git clone URL可以将关联的远程仓库的工程克隆下来到本地
提交与拉取
提交
本地文件更改完成之后
先将文件添加到暂存区git add 文件名
提交到本地仓库git commit -m '提交注释'
提交到远程仓库git push
拉取
git pull 实际上也是一个fetch+merge的过程,只不过对象成了本地仓库。
一般来说我们先去clone远程仓库的代码,当其他人提交了代码之后远程仓库的代码更新之后,我们去提交就会冲突。
所以每次完成本次代码编写commit到本地仓库之后先去pull远程仓库代码(可能会有更新,就算没有也要养成这个习惯),确认与本地仓库的代码没有冲突之后再push到你的远程分支。
然后在远程仓库创建merge request交由leader查看之后合并之后,你的更改就已经存在于远程仓库的master主分支上,之后他人更新(pull)代码到他自己的本地仓库时就会存在你的新增代码
冲突
说到pull 就无可避免的会出现一个问题,就是冲突,很烦躁的!
我最开始是偷懒的处理,把原来的本地项目删除,本地分支远程分支一起删除重新clone
然后把修改的代码复制再去粘贴hhh,那是真的懒
所以这边就要好好说一下冲突的解决方式
git pull --rebase的理解
在使用git的过程中经常需要使用到git pull命令,在更新远端代码的同时如果与本地代码产生冲突了,那么冲突的文件中就出现了需要手动合并的部分,而git pull --rebase不同的地方则是当有这些冲突存在时,
git帮我们自动创建了一个新的分支,并且git告诉你接下来你要在这个新的分支上处理这个冲突,
此时执行git status命令后可以看到首要的提示是这样的:
rebase in progress; onto 24f42c6
You are currently rebasing branch ‘master’ on ‘24f42c6’.
(fix conflicts and then run “git rebase --continue”)
并且git还告诉我们 fix conflicts and then run “git rebase --continue”,意思是解决冲突然后执行git rebase --continue命令,
其实git rebase --continue的正确操作应该是确认处理好冲突后则将调整好的文件添加到暂存区,并执行git rebase --continue命令告诉git,我已经解决好冲突了,
并且已经将处理后的文件添加到了暂存区,现在可以将这些文件commit了,
简单来讲就是正常的解决冲突过程是
1,git add .
2,git commit -m “…”
3,git push时因为本地仓库代码与远程仓代码有冲突,所以接下来
4,git pull拉取远程代码,而冲突需要手动解决
5,解决好后重新进行git add . git commit -m"…" git push
而git pull 这一步如果加上了 --rebase的选项,那么第5步操作将变成如下
git add .
git rebase --continue
git push
所以git pull --rebase用在合并代码的时候其作用就是在一个随机创建的分支上处理冲突,避免了直接污染原来的分区