5 - GitHub && Gitee
GitHub比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap, 点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone:
1git clone git@github.com:michaelliao/bootstrap.git
自己拥有Fork后的仓库的读写权限。如果从bootstrap的作者的仓库地址克隆,因为没有权限,你将不能推送修改。
如果你希望bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个pull request。当然,对方是否接受你的pull request就不一定了。
Gitee使用GitHub时,国内的用户经常遇到的问题是访问速度太慢, 如果想要体验Git飞一般的速度,可以使用国内的Git托管服务——Gitee(gitee.com)。
把learngit库和Gitee的远程库关联:( 使用多个远程库时,我们要注意,git给远程库起的默认名称是origin,如果有多个远程库,我们需要用 ...
4 - 标签管理
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
标签的本质是指向某个commit的指针(跟分支很像,但是分支可以移动,标签不能移动)。本质上讲,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
创建标签首先,切换到需要打标签的分支上, 然后,敲命令git tag 就可以打一个新标签:
1$ git tag v1.0
git tag 用于新建一个标签, 默认为HEAD,也可以指定一个commit id:
123$ git log --pretty=oneline --abbrev-commit(找到历史commit的id)$ git tag v0.9 f52c633
命令git tag -a -m "blablabla..."可以指定标签信息;
用-a指定标签名,-m指定说明文字:
1$ git tag -a v0.1 -m "version 0.1 re ...
3 - 分支管理
分支在实际中的作用:
假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
Git的分支与众不同,无论创建、切换和删除分支, 无论你的版本库是1个文件还是1万个文件,Git都能很快完成。
创建、合并分支每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:
...
2 - 远程仓库
实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
在GitHub上免费托管的Git仓库,任何人都可以看到(但只有自己才能改)。 如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不 ...
1 - 本地版本库
创建版本库版本库又名仓库,英文名repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
创建一个版本库
第一步,创建一个空目录:
123$ mkdir learngit$ cd learngit$ pwd
pwd命令用于显示当前目录。目前这个仓库位于/c/Users/86178/learngit
第二步,通过git init命令把这个目录变成Git可以管理的仓库:
12$ git initInitialized empty Git repository in /Users/michael/learngit/.git/
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的。如果没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
把文件添加到版本 ...
0 - Git 简介
简介Git是目前世界上最先进的分布式版本控制系统(没有之一)。
历史在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!
因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。
不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。
安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的 ...
Markdown中Latex常用语法
Markdown中Latex常用语法常用希腊字母表
Name
Display
Capital Case
Display
Var Case
Display
\alpha
$\alpha$
\beta
$\beta$
\gamma
$\gamma$
\Gamma
$\Gamma$
\theta
$\theta$
\Theta
$\Theta$
\vartheta
$\vartheta$
\mu
$\mu$
\delta
$\delta$
\Delta
$\Delta$
\epsilon
$\epsilon$
\varepsilon
$\varepsilon$
\sigma
$\sigma$
\Sigma
$\Sigma$
\varsigma
$\varsigma$
\pi
$\pi$
\Pi
$\Pi$
\varpi
$\varpi$
\omega
$\omega$
\Omega
$\Omega$
\xi
$\xi$
\Xi
$\Xi$
\zeta
$\zeta$
\chi
$\c ...
markdown基础
一级标题二级标题三级标题四级标题五级标题六级标题
无序列表
都可以
都可以
有序列表
第一条
第二条
列表嵌套
第一项
第一项嵌套的第一个元素
第一项嵌套的第二个元素
第二项
第二项嵌套的第一个元素
第二项嵌套的第二个元素
这里是引用,注意符号和文本间有空格
区块中使用列表
区块中使用列表
列表中使用区块
第一项
这里是区块
插入链接Baidu
插入图片
粗体和斜体两个*包含的就是粗体一个*包含的就是斜体++两个++包含的就是下划线++两个~~包含的就是删除线一个~包含的就是小一号的字
表格
header 1
header 2
header 3
row 1 col 1
row 1 col 2
emmm
row 2 col 1
row 2 col 2
emmm
对齐方式:
左对齐
右对齐
居中对齐
单元格
单元格
单元格
单元格
单元格
单元格
引用代码printf("hello world")
#include<windows.h>
12int a = 0;pr ...
「Django」8-分页
0. 框架自带Django自带的分页功能:
123456789101112from django.core.paginator import Paginator, Page, PageNotAnInteger, EmptyPagedef index(request, a): current_page = request.GET.get('page') user_list = models.UserInfo.objects.all() paginator = Paginator(user_list, 2) # 显示内容,单页最大内容条数 try: posts = paginator.page(current_page) except PageNotAnInteger or EmptyPage as e: posts = paginator.page(1) return render(request, 'index.html', {'posts':p ...
「Django」7-ORM操作
0. 简介ORM:Object Relational Mapping(关系对象映射)
1234567类名对应 → 数据库中的表名类属性对应 → 数据库里的字段类实例对应 → 数据库表里的一行数据obj.id obj.name → 类实例对象的属性
Django orm的优势:
Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句;所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite….,如果数据库迁移,只需要更换Django的数据库引擎即可;
1. 配置
ORM没有创建数据库功能,因此我们首先要自己创建一个数据库。
1> create database djangotestdb2 default character set utf8 collate utf8_general_ci;
修改project中的settings.py文件中设置 连接 MySQL数据库(Django默认使用的是sqllite数据库)
1234567891011DATABASES = { ' ...