git(一)
一.邮件的格式
抄送:需要知道这件事的人
内容:
大家好:
我是xxx,附件内容是我的简历,请查收,有问题可以随时联系我
susun|开发工程师
电话:1231xxxxx31
地址:xxxxxx
联系电话(公司):010-654654XXX
二.openpyxl
注:其他同类型工具:xlrd\xlwt
1.写操作
注:执行脚本时,要关闭工作表,否则会报错
from openpyxl import Workbook
wb=Workbook()
#添加工作表
方式一
wb1=wb.create_sheet('index') #index代表工作表的名称,工作表默认在最后
方式二
wb1=wb.create_sheet('index',0) #根据索引的位置添加工作表
#添加数据
方式一:用单元格的索引来加
wb1['D3']='单元格'
方式二:根据单元格的位置来添加
wb.cell(row=3,column=5,value=)
#求和计算
wb1['A1']=4
wb1['A2']=3
wb1['A3']='=sum(A1:A2)'
#添加行
l=['姓名',‘性别’,‘年龄’,‘住址’,‘电话’]
wb1.append(l)
#添加到指定行(多加几个空行)
wb1.append(list())
l=['姓名',‘性别’,‘年龄’,‘住址’,‘电话’]
wb1.append(l)
wb.save('shy.xlsx') #表格的名称
2.读操作
from openpyxl import load_workbook
wb=load_workbook('try1.xlsx',dataonly=true,readonly) #要读取的表格的名称
print(wb.sheetnames) #查看有几个工作表
wb1=wb['index1']#读其中的一个工作表
wb1.title='user' #更改 工作表名称
#读取单元格的值
方式一:通过索引
print(wb1['A2']) #A2单元格
print(wb1['A2'].value)#A2单元格的值
方式二:通过位置
print(wb1.cell(row=2,column=2))#单元格
print(wb1.cell(row=2,column=2).value)#单元格的值
#求最大行,列
print(wb1.max_row)
print(wb1.max_column)
#求每一行的值
print(wb1.rows)#得到生成器
#求每一列的值
print(wb1.columns)#得到生成器
#获取表中的每一个
for i in wb1.rows:
for j in i:
print(j.value)
#对于通过函数计算得到的单元格 #手动保存后再读
print(wb1['A3'].value)#前面还要加data_only=True
wb.save('aaa.xlsx')
字体的调整(居中,对齐方式,行高,单元格合并)
三.GIT(版本控制的工具)
1.git工作区
工作区:当前工作的地方(红色)
缓存区:add之后存到的地方就叫缓存区(绿色)
版本库:commit之后存到的地方就叫版本库
2.git命令
git init ##初始化
git status #查看状态
git add 文件 #添加到缓存区
git add . #将当前目录下的所有文件添加到缓存区
git commit -m '描述信息' #提交到版本库
git log #查看提交记录 当前位置往前的提交记录
git reflog #查看所有的提交记录
git head HEAD #从缓存区把文件拉取到工作区
git reset --hard 回滚值 #回滚到某一个版本,可以写长的值,也可以写短的值(md5值)
git diff #对比的是工作区跟缓存区之间的区别
git diff --cached #对比缓存区跟版本库之间的差别
git log -p #用来显示每次提交内容的差异
git log -p -2 #用来显示最后两次提交内容的差异
git log --pretty=online #
git checkout -- filename #取消修改的内容(慎用)
git stash #将当前开发的内容打包放到某个地方
git stash pop #恢复当前的工作目录
git stash list #查看stash列表
git stash drop 值 #删除stash
git stash apply #恢复当前工作目录,不删除stash
git branch name #新建分支
git branch #查看分支
git branch -d name #删除分支
git checkout name #切换到某个分支
git checkout -b name #创建分支并切换分支
git merge name #所在的分支与name分支合并
3.应用案例(购物网站实例)
首次上线代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>欢迎来到买买官方网站</h1>
<h3>鞋包</h3>
<h3>裙子</h3>
<h3>首饰</h3>
<h3>美妆</h3>
</body>
</html>
此时就需要用到了git,做版本控制


在项目文件的该位置,鼠标右击选择‘git bash here’,
git init #初始化,创建一块空间
git status #查看当前状态

git add . #将当前目录下的所有文件添加到缓存区
git status

git commit -m '1.0版本的代码'

git config --global user.email "xxxxx163.com"
git config --global user.name "shy" #根据提示添加邮箱和用户
git commit -m '1.0版本的代码' #重新提交到版本库
git log #查看提交记录 当前位置往前的提交记录


需要在完整的项目中去掉某一部分
此时收到有关部门的指令,需要下架'首饰'部分,此时删除项目中的‘首饰’部分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>欢迎来到买买官方网站</h1>
<h3>鞋包</h3>
<h3>裙子</h3>
<h3>美妆</h3>
</body>
</html>
git status #查看状态(检查到更改了web中的templates中的index.html)

git add . #将有所更改的文件添加到缓存区
git commit -m '下线首饰部分内容' #提交到版本库
git log #查看提交记录(显示一共做了两次更新)


回滚到某一版本(长的MD5值)
有关部门核实之后,发现没有违规商品
git reset --hard ac29c1e15a41dfae80347220cc11adc8de45cabf #回滚到1.0版本

此时的index文件回到了1.0版本,首饰部分回来了


回滚到某一版本(短的MD5值)
此时另一个有关部门觉得’首饰‘部分的商品不合格,需要将项目回滚到首饰下线的版本
git reflog #查看所有的提交记录(git log只能查询当前位置往前的提交记录)

git reset 17ea0be #回滚到首饰下线的版本


回到缓存区的状态

此时项目又开发了新的功能’生活用品‘

git add . #添加到了缓存区,但是此人忘了提交到版本库
将生活用品项目改成了’生活‘


此时想回到生活用品的状态
git status #当前状态

git checkout -- web/templates/index.html #回到刚刚缓存区生活用品的状态()


对比的是工作区跟缓存区之间的区别(对比缓存区跟版本库之间的差别)
将生活用品区域改成专门是女士的生活用品


查看改了哪些东西
git diff web/templates/index.html #对比的是工作区跟缓存区之间的区别

git diff --cache web/templates/index.html #对比缓存区跟版本库之间的差别


在保留现有开发内容的基础上,回滚到某一版本
儿童专区的内容开发了1/2


此时有关部门要求美妆专区下线
git stash #将代码回滚到儿童专区开发前(同时把开发了1/2的儿童专区存起来)

修改文件


git add .
git commit -m '美妆下线'
git stash pop #把开发了1/2的儿童专区找回来


产生冲突的情况
在下线'美妆'的过程中,可能会与儿童专区的开发修改同一行代码
解决方式1
母婴专区的内容开发了1/2,此时有关部门要求裙子专区下线
git stash #将代码回滚到母婴专区开发前(同时把开发了1/2的儿童专区存起来)

修改文件(修改的过程中动了这行代码)


git add .
git commit -m '裙子下线'
git stash pop #把开发了1/2的母婴专区找回来

结果:此时需要手动处理冲突结果
解决方式2(分支法):
git branch #查看分支

git branch dev #新建分支
git checkout dev #切换到dev分支
git branch #查看分支

注:通常master分支是线上环境,dev分支是开发环境
守望先锋部分开发完毕


git add .
git commit -m '守望先锋上线'
git check -b bug #创建分支并切换分支

此时有关部分要求下线儿童专区
修改代码


git add .
git commit -m '下线儿童专区'
git checkout master #切换到master
git merge bug #合并master与bug,此时的master也下线了儿童专区
注:如何做版本管理(协同开发)
有一个master分支,用于存放生产环境的代码,还有一个dev分支,在dev分支上做开发,会临时创建bug分支,用于修改线上的bug,开发完成测试没有问题后,合并到master分支上,然后再去做代码的上线
git log --pretty=format 常用的选项 列出了常用的格式占位符写法及其代表的意义。
| 选项 | 说明 |
|---|---|
%H |
提交对象(commit)的完整哈希字串 |
%h |
提交对象的简短哈希字串 |
%T |
树对象(tree)的完整哈希字串 |
%t |
树对象的简短哈希字串 |
%P |
父对象(parent)的完整哈希字串 |
%p |
父对象的简短哈希字串 |
%an |
作者(author)的名字 |
%ae |
作者的电子邮件地址 |
%ad |
作者修订日期(可以用 --date= 选项定制格式) |
%ar |
作者修订日期,按多久以前的方式显示 |
%cn |
提交者(committer)的名字 |
%ce |
提交者的电子邮件地址 |
%cd |
提交日期 |
%cr |
提交日期,按多久以前的方式显示 |
%s |
提交说明 |
使用方式:git log --pretty=format:%"H,%an"
git log 的常用选项
| 选项 | 说明 |
|---|---|
-p |
按补丁格式显示每个更新之间的差异。 |
--stat |
显示每次更新的文件修改统计信息。 |
--shortstat |
只显示 --stat 中最后的行数修改添加移除统计。 |
--name-only |
仅在提交信息后显示已修改的文件清单。 |
--name-status |
显示新增、修改、删除的文件清单。 |
--abbrev-commit |
仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。 |
--relative-date |
使用较短的相对时间显示(比如,“2 weeks ago”)。 |
--graph |
显示 ASCII 图形表示的分支合并历史。 |
--pretty |
使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。 |
在 限制 git log 输出的选项 中列出了常用的选项
| 选项 | 说明 |
|---|---|
-(n) |
仅显示最近的 n 条提交 |
--since, --after |
仅显示指定时间之后的提交。 |
--until, --before |
仅显示指定时间之前的提交。 |
--author |
仅显示指定作者相关的提交。 |
--committer |
仅显示指定提交者相关的提交。 |
--grep |
仅显示含指定关键字的提交 |
-S |
仅显示添加或移除了某个关键字的提交 |
参考博客:https://blog.51cto.com/wangfeng7399/2352524
git(一)的更多相关文章
- Git 子模块 - submodule
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另 ...
- Git 在团队中的最佳实践--如何正确使用Git Flow
我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...
- Git与Repo入门
版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文 ...
- Git Bash的一些命令和配置
查看git版本号: git --version 如果是第一次使用Git,你需要设置署名和邮箱: $ git config --global user.name "用户名" $ gi ...
- 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net
1. 注册一个账号和创建项目 先在git.oschina.net上注册一个账号和新建一个project ,如project name 是"myTest". 2.安装git sudo ...
- 史上最详细git教程
题外话 虽然这个标题很惊悚,不过还是把你骗进来了,哈哈-各位看官不要着急,耐心往下看 Git是什么 Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别 SVN是集中式版本控制 ...
- [版本控制之道] Git 常用的命令总结(欢迎收藏备用)
坚持每天学习,坚持每天复习,技术永远学不完,自己永远要前进 总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------- ...
- 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解
工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...
- git 命令
切换仓库地址: git remote set-url origin xxx.git切换分支:git checkout name撤销修改:git checkout -- file删除文件:git rm ...
- git亲测命令
一.Git新建本地分支与远程分支关联问题 git checkout -b branch_name origin/branch_name 或者 git branch --set-upstream bra ...
随机推荐
- 【Codeforces Round #438 C】 Qualification Rounds
[链接]h在这里写链接 [题意] 给你n个问题,每个人都知道一些问题. 然后让你选择一些问题,使得每个人知道的问题的数量,不超过这些问题的数量的一半. [题解] 想法题. 只要有两个问题. 这两个问题 ...
- Struts2——(5)转发和重定向(跨业务模块)
一.重定向redirect(默认是转发dispatcher)和转发的区别? 1.重定向浏览器的网址发生变化(相当于请求了两次),转发浏览器的网址不发生变化(只请求了一次). 2.重定向的过程:发送请求 ...
- HTML5 的成长之路
html5历史 w3c从2008年提出html5的概念,目前html5的版本已经趋于稳定,也逐步得到了业界的认可和接受. 以前我们有一个疑问,HTML5与Flash究竟谁将在移动互联网时代称霸市场?这 ...
- Optimizing concurrent accesses in a directory-based coherency protocol
In one embodiment, the present invention includes a directory to aid in maintaining control of a cac ...
- 封装QtCore(在非Qt项目里使用QString,QJson,QFileInfo,QFile等类)
单独封装QtCore 一直以来使用QT的特性使用惯了,很多东西QT都封装得很好.如果突然有一天,不使用QT开发了,是不是不习惯. 比如我们经常使用QString很多方法,string,wstring之 ...
- matlab 矢量化编程(四)—— 标量函数转化为能够处理矢量的函数
1. 组合的矢量实现 nchoosek(n, k) 的第二个参数在 matlab 下是不支持矢量化的,必须是标量形式.但 matlab 下的 gamma 函数,却可支持,矢量形式,又因为,gamma ...
- HQL链接查询
和SQL查询一样,HQL也支持各种各样的连接查询,如内连接.外连接.我们知道在SQL中可通过join字句实现多表之间的连接查询.HQL同样提供了连接查询机制,还允许显示指定迫切内连接和迫切左外连接.H ...
- mac 端安装JAVA开发环境
一.maven安装 下载地址 https://maven.apache.org/download.cgi 下载 apache-maven-3.5.2-bin-zip 将下载的文件放在某路径下 修改 ...
- iphone开发技巧整合
1.NSCalendar用法 -(NSString *) getWeek:(NSDate *)d { NSCalendar *calendar = [[NSCalendar alloc] initWi ...
- 通通WPF随笔(1)——基于lucene.NET让ComboBox拥有强大的下拉联想功能
原文:通通WPF随笔(1)--基于lucene.NET让ComboBox拥有强大的下拉联想功能 我一直很疑惑百度.谷哥搜索框的下拉联想功能是怎么实现的?是不断地查询数据库吗?其实到现在我也不知道,他们 ...













