分类 代码人生 下的文章

删除本地提交并推至origin

# 第一步
## 删除本地提交(HEAD为最近一次提交,HEAD^上上次)
git reset --hard commit-id

# 第二步
## 强制推送
git push origin +master
## 或
git push origin HEAD --force

RESET

根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:

git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息 git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可 git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

关闭ISSUE

在提交的message中添加如下内容会自动与issue #id关联。是不是很方便啊!

  • fixes #xxx
  • fixed #xxx
  • fix #xxx
  • closes #xxx
  • close #xxx
  • closed #xxx

效果图

Reference:

http://www.cnblogs.com/shure/archive/2012/11/07/2758663.html http://blog.csdn.net/hshl1214/article/details/8084423

今天在V2EX上发现了一个上搜索微信内容的好网站

http://weixin.sogou.com/

练习爬虫的同学有福了,没事儿干可以试试。

接口地址:

http://weixin.sogou.com/gzhjs

获取方式:

GET

参数:

  1. cb 必须 固定值 sogou.weixin.gzhcb

  2. openid 必须 公众号的唯一ID,可以通过搜索结果页面获得

  3. page 可选 页码 默认第一页 每页最多十条记录

  4. t 可选 请求发送的时间,目测没啥大用

最近貌似对openid加密了,等高人破解吧。

dmsYotdg%2F1V4oas03wIdducg7w5SL9M%2BYAL3GsHdR%2Fw9aG9Qzsh6XnA%2FUqKuQ66p8tRkK

oIWsFt4Dl6kREBsD_KrMA84ThiIA

wDssoe6gmmM8o%2FDMnpcWKuHwEPHxqeOZXzd%2FXytWShm4vQlImQmVes2pA7cYWfc%2FwudCK

oIWsFt5sM7wz7isNXkl01is9M834

IAsHogvgG8dho2KKG6sO2uI3QooM18Hx%2BZF7o7%2BjinhzOVx5t3EcYmhn93gQQgsYira4N

oIWsFt0fiD095kHlyHMIXEM7PrZc

M8sGoC2gu6ZRohqri5nKnuau%2FD8g0jkqKyfAW8cjgPLn1e3wwAZSEM%2FMsVhWFQqp7%2Bz%2B9

oIWsFtwFWRis8pbm2-hOgllnpZfw

6Ss7od5gsiLBoala%2BGkVduU4PRslLs6USIzFeWxJXDR4oyMBZNvWwNovVPSmZJ6GVI7PG

oIWsFt4UdPREjjItJo-JsJhoTjSU

Qqsoo2gg7EDuovYnPkpxGu22Hv1%2FLF9MkC4AtaAGVcP%2B49dhr5tmnOpMZFpMtNQfp%2BnRv

oIWsFt-abnxH6yhUGXNtgwhtsvS4

调试程序的时候,如果需要打印出变量的信息,在python中很容易,一句print即可,他几乎可以打印任何类型的对象,不像PHP中,有一堆echo(),print(),print_r(),var_dump(),让人头疼!

但是PHP的打印函数有个好处,就是打印格式良好,而Python的打印信息就不是很友好了,如

# 模拟一个很大的键值对
dic = {}
for i in xrange(201):
	dic[i] = "value for %d" % i
print dic

其结果我就不打印了,总之很难看!

如何让python那冗长而且没有格式的打印变得更直观,方法有两种。

自定义dump

此方法来自stackoverflow


# 以后需要有格式的打印一个集合对象,直接使用dump(xxx)即可!
# 不要忘了import sys
import sys

def dump(obj, nested_level=0, output=sys.stdout):
    spacing = '   '
    if type(obj) == dict:
        print >> output, '%s{' % ((nested_level) * spacing)
        for k, v in obj.items():
            if hasattr(v, '__iter__'):
                print >> output, '%s%s:' % ((nested_level + 1) * spacing, k)
                dump(v, nested_level + 1, output)
            else:
                print >> output, '%s%s: %s' % ((nested_level + 1) * spacing, k, v)
        print >> output, '%s}' % (nested_level * spacing)
    elif type(obj) == list:
        print >> output, '%s[' % ((nested_level) * spacing)
        for v in obj:
            if hasattr(v, '__iter__'):
                dump(v, nested_level + 1, output)
            else:
                print >> output, '%s%s' % ((nested_level + 1) * spacing, v)
        print >> output, '%s]' % ((nested_level) * spacing)
    else:
        print >> output, '%s%s' % (nested_level * spacing, obj)

pprint

此方法来自官方,可以自定义缩进,宽度等信息。

import pprint

dic = {}
for i in xrange(201):
    dic[i] = "value for %d" % i

# 自定义缩进为4空格
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(dic)

老高推荐官方的pprint,自定义格式很不错!

Reference:

http://stackoverflow.com/questions/15785719/how-to-print-a-dictionary-line-by-line-in-python https://docs.python.org/2/library/pprint.html

昨天晚上用wget命令下载了WOW客户端,要是搁到往常,还必须开机电脑下载,现在只需要再路由器的ssh里执行以下即可!

离线下载BT和ED2K还在研究中

wget http://wow.zip 2>&1 >/dev/null &

你是不是已经厌倦了每次git push的时候每次都要输入用户名密码,使用下面的方法可以让你使用ssh协议通过密钥验证的方式让你得到解脱。

有两种修改方法

不过再实施前,请先准备好自己的密钥

ssh-keygen -t rsa -C "your_name"

然后登录https://github.com/settings/ssh,添加当前计算机的~/.ssh/id_rsa.pub公钥内容到github。

之后我们使用ssh [email protected]验证是否添加成功,如果返回以下内容,即代表添加成功!

Hi phpgao! You've successfully authenticated, but GitHub does not provide shell access.

下一步就是让我们的git使用公钥验证。

clone

保存你的最后一次修改并提交。

删除项目

使用下面的命令clone项目

# 采用ssh的方式克隆项目
# someaccount/someproject.git 中 some account为github用户名/someproject为仓库名

git clone [email protected]:phpgao/BaiduSubmit.git

修改https

git remote set-url origin [email protected]:someaccount/someproject.git

顺便提一下,老高的git push总是报warning: push.default is unset错误,今天终于知道为啥了。原来是版本兼容性的原因,低版本的git push如果不指定分支名,就会全部推送,而新版只会推送当前分支。

解决的办法也很简单,我们只需要明确指定应该推送方式即可,至于选择哪种方式,It's up to you.


# 全部推送
git config --global push.default matching

# 部分推送
git config --global push.default simple