Git 笔记系列(八)—— Git常用命令-Stash
时间 更新备注
2018-03-10 新建文章
2018-06-08 整理补充
2019-01-18 更新链接

引言

暂存未跟踪或忽略的文件
默认情况下,git stash会缓存下列文件:

  • 添加到暂存区的修改(staged changes)
  • Git跟踪的但并未添加到暂存区的修改(unstaged changes)

stash就是存储的意思,比如你在做一件事情的同时,突然又有了别的工作。就把现在的工作存储下来。并不提交到主线任务。而且可以顺利恢复上次的进度。

阅读更多
Git 笔记系列(七)—— Git常用命令-Rebase
时间 更新备注
2018-03-08 新建文章
2018-06-09 整理补充
2019-01-18 更新链接
2020-08-09 补充

rebase 变基

rebase的定义

Integrates the changes from the chosen branch
into your working copy. Your current HEAD branch
will be rebased onto the integrated revisions.

1
git-rebase - Reapply commits on top of another base tip

即将当前分支的提交放在其他分支的最新的提交后。但是这个reapply并非简单地将提交剪切复制到,Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。

阅读更多
Git 笔记系列(六)—— Git常用命令-Reset
时间 更新备注
2018-03-02 新建文章
2018-06-10 添加和revert&checkout的对比
2019-01-18 更新链接

引言

在提交层面上,reset将一个分支的末端指向另一个提交。这可以用来移除当前分支的一些提交。比如,下面这两条命令让 hotfix 分支向后回退了两个提交。

1
2
git checkout hotfix
git reset HEAD~2
阅读更多
Git 笔记系列(五)—— Git常用命令-Branch
时间 更新备注
2018-03-01 新建文章
2018-06-08 整理补充
2019-01-18 更新链接
2020-08-09 补充

引言

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。

Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。 与许多其它版本控制系统不同, 理解和精通Git 分支,你便会意识到 Git 是如此的强大而又独特,并且从此真正改变你的开发方式。

那么,Git 又是怎么知道当前在哪一个分支上呢? 也很简单,它有一个名为 HEAD 的特殊指针。 请注意它和许多其它版本控制系统(如 SubversionCVS)里的 HEAD 概念完全不同。 在 Git 中,它是一个指针,指向当前所在的本地分支(译注:将 HEAD 想象为当前分支的别名)。 在本例中,你仍然在 master 分支上。 因为 git branch 命令仅仅 创建 一个新分支,并不会自动切换到新分支中去。

阅读更多
Git 笔记系列(四)—— Git常用命令-Checkout
时间 更新备注
2018-02-28 新建文章
2018-06-06 添加checkout命令
2019-01-18 更新链接

引言

上篇介绍Git的流程涉及了很多命令,这篇将对介绍Git工作流的命令进行梳理,希望增加对Git的理解,方便大家的使用。

阅读更多
Git 笔记系列(三)—— Git常用命令-一览
时间 更新备注
2018-02-28 新建文章
2018-06-08 整理补充
2019-01-18 更新链接

目录

命令

  • workspace: 本地的工作目录。(记作A)
  • index:缓存区域,临时保存本地改动。(记作B)
  • local repository: 本地仓库,只想最后一次提交HEAD。(记作C)
  • remote repository:远程仓库。(记作D)
    以下所有的命令的功能说明,都采用上述的标记的A、B、C、D的方式来阐述。
阅读更多
Git 笔记系列(二)—— Git工作流程
时间 更新备注
2018-02-28 新建文章
2018-06-07 添加白话Git内容
2019-01-18 更新链接

引言

上一篇简单介绍了Git后,这篇来看看使用Git的工作流程吧。

阅读更多
Git 笔记系列(一)—— Git简介
时间 更新备注
2018-02-27 新建文章
2018-06-07 整理补充
2019-01-18 更新链接

引言

Git很多开发团队在使用,但是Git很多强大的特性不一定都很了解,基于以前的使用以及参考Git的博客,将用一系列文章介绍Git, 从原理到常用命令,希望能更好的使用Git, 提高团队开发效率。

阅读更多
Swift初见

Swift初见

一些Swift的学习记录

类型 Type

隐式转换

  1. Swift不允许类型的隐式转换,如果你需要修改一个变量的类型,请显示转换。
1
2
3
let label = "The width is "
let width = 94
let widthLabel = label + String(width)

假如将第三句的String类型去掉,则会报错:

1
2
3
let label = "The width is "
let width = 94
let widthLabel = label + width

阅读更多
Runtime的魔法世界

Runtime一直被一些开发者津津乐道,它强大的API可以帮助你更好的理解OC的运行时机制,也是项目中不可缺少的“黑魔法”。本篇将结合一些优秀的Runtime文章,简单介绍Runtime原理以及其应用。

一、Runtime运行时的机制

  • 对于C语言,函数的调用在编译的时候会决定调用哪个函数。 在编译阶段,C语言调用未实现的函数就会报错。

  • 对于Objective-C的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。在编译阶段,Objective-C可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。

  • Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。

  • 这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于Objective-C来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以正常的运行。这个运行时系统即Objc RuntimeObjc Runtime其实是一个Runtime库,它基本上是用C和汇编写的,这个库使得C语言有了面向对象的能力。

阅读更多