Git 修改提交历史

在使用 Git 时,我们经常会遇到修改本地提交记录的情况。比如:修改最近一次提交记,还比如:将多次小的 commit 合并成一个大的 commit。 这种做发有利也有弊,利在:review 代码时,可以按功能看,可以省去 review 一些前期写的无效的代码;弊是:一次提交修改过多,如果有问题,不利于调试。 具体情况具体分析,是解决问题的金句。 修改最近一次提交记录 修改提交说明 如果只想更改最近一次的提交说明,只需输入: git commit --amend 然后你就会进入文本编辑器,输入你想要的内容,保存并退出即可 改被提交的快照 如果你完成 commit 后又想修改被提交的快照,增加或者修改其中的文件。 先执行 git add 命令,将修改的文件添加到缓存区,然后运行 git commit -amend 命令,该命令会获取你当前的暂存区的内容一并提交到最后一次 commit 例如:新加了一个文件 new_file.cpp ,想要合并到最后一次提交,过程如下: git add new_file.cpp git commit -amend 也可以直接运行下面的命令,不过要小心,不要提交了多余的文件 git commit -a -amend 将文件从本次提交中移除 如果想把已经 commit 的文件从这次 commit 移除的话,运行命令: git reset [-soft] HEAD~1 # -soft可加可不加,默认就是soft选项 git checkout -filename # 要从本次提交移除的文件名 git commit -m "new commit" 修改多个提交记录 要修改历史中更早的提交,你必须采用更复杂的工具。Git 没有一个修改历史的工具,但是你可以使用 rebase 工具来衍合一系列的提交到它们原来所在的 HEAD 上。 ...

March 13, 2017 · 3 min · 531 words · Me

PHP empty 方法判断 0.0

在使用 empty(mixed $var) 时要考虑 $var 的 类型,尤其是在判断数据库查询后的字段。 bool empty(mixed $var) 以下的东西被认为是空 true 的: ""(空字符串) 0 (作为整数的 0) 0.0 (作为浮点数的 0) "0" (作为字符串的 0) NULL FALSE array() 一个空数组 $var 未初始化的变量 new stdClass() 不包含任何属性的对象 注意: string 的判断要非常注意,数据库查询后的字段常常为 string,应该进行正确的类型转换。 以下的东西被认为是非空 false 的: $var = true; $var = 1; $var = -1; $var = “0.0”; $var = “foo”; $var = array(0); $var = new stdClass(); $var->property = null; $str = '0.0'; echo empty($str); // false 很可能和预期是相反的 echo empty((float)$str); // true – EOF –

March 9, 2017 · 1 min · 79 words · Me

回顾 2016

2016 肯定是很特别的一年。年初离开了老师的队伍,来北京找实习。年中和 318 告别,大学毕业了。年末换房学做饭,开始另种生活。对于 2017 更多了对自己的期待。 2016 是在保定的雾霾中开始。结束了大为,决定离开老师的队伍,来北京实习,这对我来说是一个不大不小的决定。老师带着,跟学长一起走到这里,这里有了很多宝贵的东西,有很多回忆,很多故事可以讲。选择离开,主要还是想看看在这之外的是什么样子。 朋友、老师、爸妈都为我的实习操过心,不过推荐的地方在各种奇怪的理由下都没有成。自己开始在拉勾上投简历,一次次来返在京石铁路上。面试一直是不顺的。完全没有想到对实习生有如此高的要求,很多技术问题正中下怀。心里是有落差的,在我当时的想法里,那些在工程中是用不易用到的,但也感到自己技术知识的浅薄。面试了俩三家后也发现了套路,回答不好的、答不上的问题,回去查查准备准备,下回就能用上。 没什么难度的大学毕业。大学里更多的收获是跟着老师、学长在课堂外搞事,是和宿舍的、好朋友在一起的时间。真的好幸运啊,遇到 318 的舍友们。没想到和你们每一个人都超级聊的来。大四的时候人就渐渐不齐,但只要宿舍在,不到最后毕业真的不知道要分别了。我们相互影响着成长,至少除去了我很多很 low 的思想。我们相互练着酒量、每天演着戏、日常说着骚话。 德育答辩上一个同学说:我常翘课、考试挂科,但我大学四年过的很坦荡,我会因为和舍友游戏上的一个好玩的套路高兴很久。我收获朋友。我没什么后悔的。 这很戳中我的泪点。没什么后悔的,也是对我大学的注脚。愿你们成家的幸福,工作的有成。 从上学到工作,过渡的很平稳。工作中有一些挑战,但总之是还应对的来。可没有什么出众的地方,我不想过的太平凡,愿有一技之长,独挡一面。我常说自己:菜啊、傻啊、什么的,我确实不想用这些来词来逃避问题,我想尽快的甩掉这些。我也愿自己可以更有底气和勇气说出,现在不能说出的话,愿更决绝的对大事小情做决定。 年末随着公司搬家,自己也搬了。炒菜做饭成了每天另一部分。也许才是真正生活二字的开始。 突然想到学长提的一个问题:你们有谁把技术当做以后安身立命的本事? 现在对于我来说,这问题的答案比任何时候都更加清晰。 最后,还是怀揣着 2014 末的敬请期待,让一切皆有可能,开始 2017。 —— 送给 木林木丶 – EOF –

December 31, 2016 · 1 min · 30 words · Me

LeetCode Shell 解题集合

LeetCode Shell 的试题多为文本操作,195. Tenth Line、193. Valid Phone Numbers、192. Word Frequency、194. Transpose File 暂时只有 4 道题,就整合在这一起了 Shell 中文本处理的事情基本 awk sed grep sort uniq tail head 几个命令组合组合就搞定了 195. Tenth Line 大体意思 How would you print just the 10th line of a file? For example, assume that file.txt has the following content: Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10 Your script should output the tenth line, which is: ...

September 19, 2016 · 3 min · 574 words · Me

MySQL LIMIT 查询优化

最近常在 SQL 中使用到 LIMIT ? ?,在执行 LIMIT 0, 1000 与 LIMIT 100000, 1000 时,查询速度明显有很大的区别,而且随着 LIMIT 的偏移量的增加,查询速度越来越慢。是否有办法对 SQL 中 LIMIT 查询进行优化呢? LIMIT 速度慢的原因 LIMIT 100000, 1000 的意思扫描满足条件的 101000 行,扔掉前面的 100000 行,返回最后的 1000 行,问题就在这里。 LIMIT 优化思路 1、尽可能从索引中直接获取数据,避免或减少直接扫描行数据的频率 2、尽可能减少扫描的记录数,也就是先确定起始的范围,再往后取 N 条记录即可 LIMIT 优化示例 原始 SQL -- 含条件 SELECT * FROM `t1` WHERE ftype=1 ORDER BY id DESC LIMIT 100, 10; -- 不含 WHERE SELECT * FROM `t1` ORDER BY id DESC LIMIT 100, 10; 子查询优化 SQL -- 采用子查询的方式优化,在子查询里先从索引获取到最大 id,然后倒序排,再取 10 行结果集 -- 注意这里采用了 2 次倒序排,因此在取 LIMIT 的 start 值时,比原来的值加了 10,即 935510,否则结果将和原来的不一致 SELECT * FROM (SELECT * FROM `t1` WHERE id > ( SELECT id FROM `t1` WHERE ftype=1 ORDER BY id DESC LIMIT 935510, 1) LIMIT 10) T ORDER BY id DESC; INNER 优化 SQL -- 采用 INNER JOIN 优化,JOIN 子句里也优先从索引获取 ID 列表,然后直接关联查询获得最终结果,这里不需要加 10 SELECT * FROM `t1` INNER JOIN ( SELECT id FROM `t1` WHERE ftype=1 ORDER BY id DESC LIMIT 935500,10) t2 USING (id); 1、要学着使用 EXPLAIN 对 SQL 进行优化调整 2、推荐使用 INNER 优化 SQL 3、发现了一个 ubuntu 中监控 MySQL 的 mytop 命令,刚刚安装还没细研究 ...

September 18, 2016 · 1 min · 200 words · Me

LeetCode Database Trips and Users 262

262. Trips and Users The Trips table holds all taxi trips. Each trip has a unique Id, while Client_Id and Driver_Id are both foreign keys to the Users_Id at the Users table. Status is an ENUM type of (‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’). +----+-----------+-----------+---------+--------------------+----------+ | Id | Client_Id | Driver_Id | City_Id | Status |Request_at| +----+-----------+-----------+---------+--------------------+----------+ | 1 | 1 | 10 | 1 | completed |2013-10-01| | 2 | 2 | 11 | 1 | cancelled_by_driver|2013-10-01| | 3 | 3 | 12 | 6 | completed |2013-10-01| | 4 | 4 | 13 | 6 | cancelled_by_client|2013-10-01| | 5 | 1 | 10 | 1 | completed |2013-10-02| | 6 | 2 | 11 | 6 | completed |2013-10-02| | 7 | 3 | 12 | 6 | completed |2013-10-02| | 8 | 2 | 12 | 12 | completed |2013-10-03| | 9 | 3 | 10 | 12 | completed |2013-10-03| | 10 | 4 | 13 | 12 | cancelled_by_driver|2013-10-03| +----+-----------+-----------+---------+--------------------+----------+ The Users table holds all users. Each user has an unique Users_Id, and Role is an ENUM type of (‘client’, ‘driver’, ‘partner’). ...

September 14, 2016 · 3 min · 436 words · Me

LeetCode Database Department Highest Salary 184

184. Department Highest Salary The Employee table holds all employees. Every employee has an Id, a salary, and there is also a column for the department Id. +----+-------+--------+--------------+ | Id | Name | Salary | DepartmentId | +----+-------+--------+--------------+ | 1 | Joe | 70000 | 1 | | 2 | Henry | 80000 | 2 | | 3 | Sam | 60000 | 2 | | 4 | Max | 90000 | 1 | +----+-------+--------+--------------+ The Department table holds all departments of the company. ...

September 12, 2016 · 2 min · 281 words · Me

LeetCode Database Consecutive Numbers 180

180. Consecutive Numbers Write a SQL query to find all numbers that appear at least three times consecutively. +----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 1 | | 6 | 2 | | 7 | 2 | +----+-----+ For example, given the above Logs table, 1 is the only number that appears consecutively for at least three times. ...

September 11, 2016 · 1 min · 173 words · Me

LeetCode Database Second Highest Salary 176

176. Second Highest Salary Write a SQL query to get the second highest salary from the Employee table. +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ For example, given the above Employee table, the second highest salary is 200. If there is no second highest salary, then the query should return null. 大体意思 写 SQL 查询出第二高薪水的 Id。如何没有第二高,则返回 null ...

September 11, 2016 · 2 min · 257 words · Me

LeetCode Database Rising Temperature 197

197. Rising Temperature Given a Weather table, write a SQL query to find all dates’ Ids with higher temperature compared to its previous (yesterday’s) dates. +---------+------------+------------------+ | Id(INT) | Date(DATE) | Temperature(INT) | +---------+------------+------------------+ | 1 | 2015-01-01 | 10 | | 2 | 2015-01-02 | 25 | | 3 | 2015-01-03 | 20 | | 4 | 2015-01-04 | 30 | +---------+------------+------------------+ For example, return the following Ids for the above Weather table: ...

September 11, 2016 · 1 min · 127 words · Me