Git 复习记录

log命令

git log –pretty=oneline //精简版显示log

git log –graph//显示合并分支图

git log –graph –pretty=oneline –abbrev-commit //显示精简版合并分支图

 

本地回退总结(工作区,stage区,commit后)

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout — file(checkout命令是用版本库文件替换工作区文件)。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,直接回退一次命令git reset –hard HEAD^

场景4:已经提交了不合适的修改到版本库时,想要撤销本次提交,直接回退多次后发现回退过了,就需找到commit id回退到指定的commit,通过命令git log 找到想回退的commit id(电脑重启用git reflog), 再命令git reset –hard f80150a2c356768825f14e105e019eb1673d31d5

本地删除总结

场景1:工作区误删文件想找回,参考回退场景1,git checkout –file(checkout命令是用版本库文件替换工作区文件)

场景2:彻底删除,工作区删除文件后,命令git rm file(对比git add,都是把改动放到stage区),再提交这次改动(删除), 命令git commit -m “rm file”

branch常用命令

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

 

stash命令

git stash//添加stash

git stash list//查看stash

git stash apply//应用stash但并不删除stash

git stash drop//删除stash

git stash pop//应用stash且删除stash (=git stash apply + git stash drop+

tag命令

命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;

git tag -a <tagname> -m “blablabla…”可以指定标签信息;

git tag -s <tagname> -m “blablabla…”可以用PGP签名标签;

命令git tag可以查看所有标签。

命令git push origin <tagname>可以推送一个本地标签;

命令git push origin –tags可以推送全部未推送过的本地标签;

命令git tag -d <tagname>可以删除一个本地标签;

命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

Merge

1.Fast forward 没分叉Merge

3.三方合并,两个分支都进行了改变,合并会把共有节点,Branch1改变,Branch2改变三方合并成一个新的commit

Rebase

假设有master分支,dev1分支,实际生产环境中master不断在变,dev1也不断在变,当合并dev1到master之前,应该先进行一次rebase,让dev1补上master的改变,详细的来说举个例子:
master提交了N次,Head向前N次commit(别的同事合并的),同时dev1提交一次,Head向前一次commit(我自己开发分支),现在我想合并代码到master了,在dev1分支这么搞

1.先执行命令 git rebase master

这个命令干了这些事儿:

  • 把dev1到和master共同节点之间的所有提交暂存起来,图中C4
  • 把master最新Head到和dev1共同节点之间的所有提交合并到Dev1(fast forward dev1合并相当于,因为dev1暂存了改变,是和master共同节点状态),图中C3
  • 把暂存的dev1提交接着fast forward合并到dev1,图中C4

2.切换到master分支,执行git merge dev1

这时候相当于dev1已经补全了master后来其他同事提交的代码,再合并

Rebase只是对dev1自己工作目录操作,不要尝试对公共分支使用

 

 

Nginx+PHP+PHPFPM环境搭建(2)-子目录API

上一篇文章记录了最基础的nginx+php-fpm的环境搭建,可以用浏览器访问一个demo的php返回phpinfo()信息,跑通了最基本的环境相当于helloword已经完成。这篇文章是记录怎么实现API的子目录,便于整理API,实现不同的请求。就像这样:

Continue reading ‘Nginx+PHP+PHPFPM环境搭建(2)-子目录API’ »

Nginx+PHP+PHPFPM环境搭建(1)-基础

For What?

一直想把学习Server的过程记录下来。

前面有零零散散的文章讲PHP处理Http基础请求,NodeJS聊天程序,使用过Server软件集成环境,内置Apache,后来又想学Java后端开发,准备使用Nginx上面跑Tomcat来运行Spring框架的Server逻辑,或者用Spring-boot自带Tomcat,但是真正搭建环境的时候又发现很麻烦,好像对新手来说不友好,且工作也很忙就耽搁了。总之一直很浮躁的没有将学习Server的事情系统的进行下去,后来根据和后端工程师朋友聊天,纠结了很久以后,决定用简单的Nginx+php+phpfpm来搭建后端服务,这个最常见的技术选型确定了,第一步,开始搭建环境。

Continue reading ‘Nginx+PHP+PHPFPM环境搭建(1)-基础’ »

VoiceOver经验

VoiceOver是一个语音辅助软件,具备屏幕阅读器的功能,因此视障者及其他无法正常使用App的用户都可以通过VoiceOver来进行操作,位置在设置-通用-辅助功能-VoiceOver。

但是VoiceOver并不是万能的,并不能兼容开发者自定义的控件和视图,因此作为开发者,需要通过一些额外的工作让APP可以支持无障碍使用。

参考:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/iPhoneAccessibility/Introduction/Introduction.html

Continue reading ‘VoiceOver经验’ »