Git学习笔记之常用技巧

Git放弃本地强制更新

git fetch --all
git reset --hard origin/master

撤销暂存的文件(文件已经git add,但是尚未提交)

git reset  HEAD file  

丢弃工作区的修改(还原对文件的修改)

git checkout -- file 

git打包应用

git archive --format zip --output "../e-business.zip" master -0

这里的-0表示不压缩

添加子模块

git submodule add [子模块地址]

初次拉取子模块

git submodule update --recursive --init

删除子模块

git submodule deinit asubmodule
git rm asubmodule
git rm --cached asubmodule

rm -rf .git/modules/asubmodule

子模块更新,拉取最新的子模块代码

git submodule update --remote

删除Gitignore的文件

有时候新增了文件,文件已经被git缓存,但是并没有提交,这时候希望不提交该文件,将其加入到.gitignore文件中,问题是此时再git status,会发现该文件还是在列表中,可以用下列命令将文件缓存清除,解决该问题。

git rm 要删除的文件 --cached

参考自 Stackoverflow

Cherry-pick

如果你不慎忘记切换到master分支,又做了提交,可以用cherry-pick命令挽救。

具体做法如下:

  1. git checkout masterHEAD 从游离状态切换到 master 分支, 这时候,git会报Warning说有一个提交没有在branch上,记住这个提交的change-id(假如change-id为 aaaa)
  2. git cherry-pick aaaa 来将刚刚的提交作用在 master 分支上
  3. git push 将更新提交到远程版本库中

参考 Git Submodule的坑

修改远程仓库地址

get remote set-url origin URL

修改最有一次提交的注释

提交的时候注释写错了怎么修改?使用git commit --amend命令

git commit --amend

Git学习笔记之分支管理

本文并非讲解分支管理知识,而是记录了Git分支管理的一些命令使用方法,供使用时参考。

以下使用 <branch_name>表示用户需要替换的内容

创建分支

git checkout -b <branch_name>

上述命令创建一个新的分支 name,并且切换到新的分支,这里的-b参数表示创建并切换

如果仅仅是创建一个新的分支而不切换到新分支,则直接使用git branch <branch_name>命令。

git branch <branch_name>

Continue reading →

PHP-5.5新特性之yield

PHP5.5.0版本中,新增了生成器 (Generators) 特性,用于简化实现迭代器接口 (Iterator) 创建简单的迭代器的复杂性。

通过生成器,我们可以轻松的使用foreach迭代一系列的数据,而不需要事先在内存中构建要被迭代的对象,大大减少了内存开销。

当生成器函数被调用的时候,它会返回一个可迭代的对象,当对该对象进行迭代的时候,PHP将会在需要的时候调用生成器函数,并且在生成器使用新增的关键字yield产生一个新的值的时候,保存迭代器内部的状态。迭代器没有新的值需要产生的时候,生成器函数就可以直接退出,外部函数继续执行。

注意,在生成器函数中,不能使用return语句返回值,使用return返回值的话会产生编译器错误。但是,使用空的return是可以的,它会使迭代器终止。

生成器函数与普通函数一样的,唯一的区别函数内使用了yield关键字。yield语句可以说是生成器函数的核心,简单来说,yield就像return语句一样,区别是return语句返回后函数就结束了,而使用yield返回后,只是暂停了函数的执行,转到外部函数继续执行,下次调用生成器函数的时候,继续执行生成器函数内部的代码。

Continue reading →

使用Rsyslog管理日志

在 Linux 系统中,日志文件记录了系统中包括内核、服务和其它应用程序等在内的运行信息。
在我们解决问题的时候,日志是非常有用的,它可以帮助我们快速的定位遇到的问题。

在 Cent OS 6中,日志是使用rsyslogd守护进程进行管理的,该进程是之前版本的系统中syslogd的升级版,对原有的日志系统进行了功能的扩展,提供了诸如过滤器,日志加密保护,各种配置选项,输入输出模块,支持通过 TCP 或者 UDP 协议进行传输等。

rsyslog的配置文件为 /etc/rsyslog.conf , 大多数日志文件都位于 /var/log/ 目录中。

Continue reading →

Scroll Up