最近oschina的git服务器进行了迁移,导致了原有的git项目push不上去,总是提示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for git.oschina.net has changed,
and the key for the corresponding IP address 112.124.6.106
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.

第一个问题非常简单,就是修改/etc/hosts,添加一个IP与域名的对应关系即可

第二个是要求你更新know_host中的RSA key,执行如下命令即可

1
ssh-keygen -R git.oschina.net
1
cat /.ssh/known_hosts

查看known_host中的数据可以看到key已经更新了

####移动到行首

1
0

####移动到行尾

1
$

####剪切多行

1
2
3
v
向下移动
d

####粘贴

1
P

####在nerdTree光标处新建一个文件

1
m

####删除多行(数字+dd)

1
5dd #删除5行

####多行注释

1
2
3
4
5
6
1.ESC+v
2.方向键向下或者向上选中多行
3.Control+v
4.Shift+i
5.#
6.Esc,Esc

一些全局配置

1
2
3
4
5
6
git config --global push.default matching

git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto

添加所有新文件

1
git add .

从版本中去除一个文件

1
git rm test.html.rb

假设有很多新文件和删除了好多文件

1
git add -A

获取所有远程版本

1
git fetch

创建并切换到新分支

1
git checkout -b newbranch

切换到分支

1
git checkout master

迁移原有git项目到新得项目地址

1
git remote set-url origin git@git.github.com:welsonla/studio.git

查看当前git分支

1
git branch -r

查看git log

1
git log

查看当前tag

1
git tag

创建一个新的tag

1
git tag v1.1

降当前tag推送到服务器

1
2
3
4
git push origin --tags

推送单个
git push origin v1.1

将现有svn项目转换成git项目,并保留所有commit log

1
git svn clone [SVN-Path]

回滚

1
2
3
#http://stackoverflow.com/questions/1338728/delete-commits-from-a-branch-in-git
git reset --hard commitid
git push --force

ignore

.gitignore 新文件使用正则匹配
1
2
*.file_extension
.idea/*
remove exist files(现有文件需要软删除)
1
2
3
git rm -r --cached . //soft delete
git add .
git commit -m 'remove ignore files'

Octopress提供很多的Rake任务去创建post和pages,他还会根据你的posts来生成Category,你可以在atom.xml或者blog/categories/\/atom.xml中找到这些内容

####Post

这些Post页面必须存放在Source/_posts目录下面,并且命名方式和jekyll的命名方式一样,会转换成YYYY-MM-DD-Post-title.markdown,这个文件的名字就是你的blog的url slug,日期帮助你排序这些文章

1
rake new_post["Title"]

在使用了ZSH的话,你要这样创建

1
rake new_post或者rake new_post[\"Title\"]

例如

1
2
rake new_post["Zombie Ninjas Attack: A survivor's retrospective"]
Creates source/_posts/2011-07-03-zombie-ninjas-attack-a-survivors-retrospective.markdown

or

1
2
3
4
~/Code/rails/octopress(branch:source) » rake new_post                        
Enter a title for your post: blog-with-github-4
mkdir -p source/_posts
Creating new post: source/_posts/2013-06-03-blog-with-github-4.markdown

生成的内容大致如下

1
2
3
4
5
6
7
8
---
layout: post
title: "Zombie Ninjas Attack: A survivor's retrospective"
date: 2011-07-03 5:59
comments: true
external-url:
categories:
---

你可以关闭comments,或者为他添加categories的tag,并且你还可以添加author: Your Namepublished: false来控制是否发布

####Page

生成Page的命令

1
2
3
4
rake new_page[super-awesome]
# creates /source/super-awesome/index.markdown

rake new_page[super-awesome/page.html]

如果使用了zsh的话,方法要参照post的创建方式

生成的pages的默认内如大致如下

1
2
3
4
5
6
7
8
---
layout: page
title: "Super Awesome"
date: 2011-07-03 5:59
comments: true
sharing: true
footer: true
---

####Content

如果列表中不想显示全文内容的话,可以添加<!-- more -->标签,这将在文章下面生成一个“Continue →” 链接,链接到全文的地址

###Generate & Preview

1
2
3
rake generate   # Generates posts and pages into the public directory
rake watch # Watches source/ and sass/ for changes and regenerates
rake preview # Watches, and mounts a webserver at http://localhost:4000

本地使用http://localhost:4000就可以访问了

Octopress的配置相当的简单,并且一般配置完成后,你不需要再对Rakefile和_config文件进行修改,下面这些是Octopress的配置文件

1
2
3
4
_config.yml       # Main config (Jekyll's settings)
Rakefile # Configs for deployment
config.rb # Compass config
config.ru # Rack config

Rakefile大多是与部署相关的配置,如果不需要同步的话,你就不需要进行修改

####Blog配置

_config.yml有三部分配置,你必须修改url,并且title,subtitle和author也要修改,还有一些第三方的服务需要启用

#####主配置

1
2
3
4
5
6
7
8
9
10
11
url:                # For rewriting urls for RSS, etc
title: # Used in the header and title tags
subtitle: # A description used in the header
author: # Your name, for RSS, Copyright, Metadata
simple_search: # Search engine for simple site search
description: # A default meta description for your site
date_format: # Format dates using Ruby's date strftime syntax
subscribe_rss: # Url for your blog's feed, defauts to /atom.xml
subscribe_email: # Url to subscribe by email (service required)
category_feeds: # Enable per category RSS feeds (defaults to false in 2.1)
email: # Email address for the RSS feed if you want it.

#####Jekyll&Plugins

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
root:               # Mapping for relative urls (default: /)
permalink: # Permalink structure for blog posts
source: # Directory for site source files
destination: # Directory for generated site files
plugins: # Directory for Jekyll plugins
code_dir: # Directory for code snippets (for include_code plugin)
category_dir: # Directory for generated blog category pages

pygments: # Toggle python pygments syntax highlighting
paginate: # Posts per page on the blog index
pagination_dir: # Directory base for pagination URLs eg. /blog/page/2/
recent_posts: # Number of recent posts to appear in the sidebar

default_asides: # Configure what shows up in the sidebar and in what order
blog_index_asides: # Optional sidebar config for blog index page
post_asides: # Optional sidebar config for post layout
page_asides: # Optional sidebar config for page layout

#####第三方配置

1
2
3
4
5
6
7
8
Github - List your github repositories in the sidebar
Twitter - Setup a sidebar twitter feed, follow button, and tweet button (for sharing posts and pages).
Google Plus One - Setup sharing for posts and pages on Google’s plus one network.
Pinboard - Share your recent Pinboard bookmarks in the sidebar.
Delicious - Share your recent Delicious bookmarks in the sidebar.
Disqus Comments - Add your disqus short name to enable disqus comments on your site.
Google Analytics - Add your tracking id to enable Google Analytics tracking for your site.
Facebook - Add a Facebook like button

###使用github pages

如果想使用 http://username.github.io 的域名作为你的blog地址的话,首先要创建一个仓库,名字为你的用户id.github.io(比如我的是welsonla.github.io)

用户使用的是Github Pages的master版本下面的public作为你的网站主目录,你可以通过浏览http://username.github.io 来查看。如果你想在source这个版本上面维护代码,并且把内容提交到master分支,Octopress有一个命令来帮助你完成这些

1
rake setup_github_pages

然后,他将

  1. 询问你的github pages的url
  2. 将远程的重‘origin’重命名为‘octopress’
  3. 在远程的origin讲你的github pages仓库添加进去
  4. 切换当前branch从master切换到source
  5. 根据你的仓库名,重新配置你的blog地址
  6. 在_deploy目录下面设置master分支,用于部署

接下来执行

1
2
rake generate
rake deploy

这将生成你的blog,并将生成的文件copy到_deploy目录下面,并添加到git,将他们commit和push到master分支上面,稍后,你会收到一份来自github的email告诉你,你的提交已经收到,并且很快将发不到你的web上面

并且,不要忘记提交你的代码到source分支

1
2
3
git add .
git commit -m 'your message'
git push origin source

####自定义域名绑定

首先你要source目录下面创建一个CNAME,

1
echo 'your-domain.com' >> source/CNAME

之后去你的域名服务商或者你的dns服务商那里创建一条CNAME记录,记录指向的IP为
(不要使用顶级域名指向到pages,要使用二级域名)

1
207.97.227.245

##开始之前

  1. 安装Git
  2. 使用rbenv或者RVM安装ruby 1.9.3

安装完后确保你的ruby版本是1.9.3

1
ruby -v

##设置Octopress

1
2
git clone git://github.com/imathis/octopress.git octopress
cd octopress

接下来安装一些依赖

1
2
3
gem install bundler
rbenv rehash
bundle install

安装Octopress默认主题

1
rake install

–未完待续,哥去睡觉

当需要重写父类中的方法时,这时候定义子类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@interface JADanSideController : JASidePanelController


@end


@implementation JADanSideController

- (UIBarButtonItem *)leftButtonForCenterPanel{

UIButton *leftBarButton = [UIButton buttonWithType:UIButtonTypeCustom];
[leftBarButton setFrame:CGRectMake(0, 0, 44, 30)];
[leftBarButton setBackgroundImage:[UIImage imageNamed:@"List_NaviSide.png"] forState:UIControlStateNormal];
[leftBarButton addTarget:self action:@selector(toggleLeftPanel:) forControlEvents:UIControlEventTouchUpInside];
__autoreleasing UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:leftBarButton];

return leftBarButtonItem;
}

@end

当需要为父类添加方法时,这时候定义类别

1
2
3
4
5
@interface JADanSideController : JASidePanelController

- (void)setBackGroundColor;

@end

本文主要来自github官方,Generating SSH Keys

1
2
3
4

cd ~/.ssh

ssh-keygen -t rsa -C "your_email@example.com"

下面的步骤可以只敲回车进行确认即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Creates a new ssh key using the provided email

Generating public/private rsa key pair.

#这里直接回车就会生成一个默认名为id_rsa
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]


#这里需要你输入一个你加密的key(一定要记住)
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]


Your identification has been saved in /Users/welsonla/.ssh/id_rsa.
Your public key has been saved in /Users/welsonla/.ssh/id_rsa.pub.
The key fingerprint is:
30:e8:aa:08:ee:bc:76:88:2c:3f:83:39:b0:6e:95:cc wyc.jar@gmail.com
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
| . o |
| . o |
| o o S |
|. E |
|=++ |
|%*o. |
|OO+o |
+-----------------+

看到这个界面说明生成成功

copy加密字符到剪切板

1
pbcopy < ~/.ssh/id_rsa.pub

打开你的github

1
2
3
4
5
6
1. 点击 Account Settings
2. 点击左侧 "SSH Keys"
3. 点击 "Add SSH key"
4. 粘贴你的可以到 "Key" 输入框
5. 点击 "Add key"
6. 输入你的github密码确认

今天突然发现ruby版本不小心又回到了1.8.7,可能是我修改了rvm的配置文件导致的,于是开始折腾安装rvm和ruby

首先还是先安装Homebrew吧
很简单,一行代码搞定

1
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

安装RVM

1
curl -L https://get.rvm.io | bash -s stable --ruby

走着走着发现出错了

1
2
3
4
5
6
Missing required packages: autoconf, automake, libtool, pkg-config, libyaml, readline, libxml2, libxslt, libksba, openssl, sqlite.
RVM autolibs is now configured with mode '2' => 'check and stop if missing',
please run `rvm autolibs enable` to let RVM do it's job or run and read `rvm autolibs [help]`
or visit https://rvm.io/rvm/autolibs for more information.
There were package installation errors, make sure to read the log.
Check Homebrew requirements https://github.com/mxcl/homebrew/wiki/Installation

透过错误信息,发现缺少一写依赖的包,和rvm的autolibs没打开,这时候我们就通过Homebrew先安装上(具体你要看清楚你缺少的是什么)

1
2
3
rvm autolibs enable
rvm reload
brew install autoconf automake libtool pkg-config libyaml readline libxml2 libxslt libksba openssl sqlite

漫长的等带后,依赖包终于装完了
再次安装RVM

1
curl -L https://get.rvm.io | bash -s stable --ruby

就会安装成功,你可以rvm -v查看下版本

安装并设置1.9.3为你的默认版本

1
2
3
rvm install 1.9.3
rvm use 1.9.3
rvm rubygems latest

Finish

1
gem install cocoapods

cd到你的项目的根目录,就是跟project文件同级,建立Podfile文件

1
touch Podfile

加入平台版本,(5.1可以省略,但是最好在podfile中加入,因为一些ARC相关的类库不加的话,会提示错误)

1
platform :ios,'9.0'

搜索第三方的oc库

1
2
3
4
5
6
7
pod search fmdb

-> FMDB (2.0)
A Cocoa / Objective-C wrapper around SQLite.
- Homepage: https://github.com/ccgus/fmdb
- Source: https://github.com/ccgus/fmdb.git
- Versions: 2.0, 1.5.1, 1.5 [master repo]

通过搜索,我们已经找到了该类库的版本的名字,只需要将这些内容加入到podfile文件中即可

1
2
platform :ios, '5.1'
Pod 'FMDB','2.0'

然后执行下面的命令,将这些类库加到到本地

1
pod install

修复Cocoapods,重置repo

1
2
3
pod repo remove master
pod repo add master https://github.com/CocoaPods/Specs.git
pod repo update

减少更新安装的时间,只安装或更新必要的库

1
2
pod install --verbose --no-repo-update
pod update --verbose --no-repo-update

之后将会生成一个workspace文件,以后我们打开项目的时候,就打开workspace文件即可,项目和其所需要的类库都以sub project的方式加到了这个workspace下面

####我常用的一些Mac工具

  1. iTerm2 一个增强的命令终端
  2. SourceTree git代码控制工具
  3. WunderList 一个出色的Todo工具,提供云同步,我把它当做我的任务列表
  4. TextMate2 号称”The Missing Editor for Mac OS X”
  5. SublimeText2 另一个特别出色的Editor
  6. Alfred Option+Space,唤出,提高你打开软件的效率,购买Powerpack还可以使用很多强大的拓展
  7. iFunBox 管理你的苹果设备的文件,可以不通过iTunes直接把文件放到程序的Documents下面
  8. 坚果云 国内一个特别出色的网盘,可以右键添加要同步的文件
  9. Evernote 这个大家都懂的
  10. XtraFinder 为你的Finder增加Tab,剪切等功能
  11. shortcat键盘快捷键,写啥点啥,怒赞
  12. Chameleon 打开第三方SSD的trim

####shortcat快捷键

1
2
cmd+shift+space唤醒
输入关键词后,如果匹配了多个,使用control+字母去点击相应的匹配

####安装HomeBrew

Homebrew是一个管理Mac拓展的工具,他可以很方便的安装你所需要的软件,以及软件的一些依赖包

比如安装mysql,你只需要

1
brew install mysql

Homebrew 安装特别简单,只需要键入

1
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

相关的文档可以到官方去查看http://mxcl.github.io/homebrew/

####安装oh-my-Zsh

Zsh是Mac上面的一个命令行增强工具,他提供了关键字高亮,命令补全,以及一些命令的拓展,

安装步骤

1
2
3
4
5
6
7
8
9
10
11
12
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

#备份你的.zshrc文件
cp ~/.zshrc ~/.zshrc.orig

#创建zsh配置
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

#设置zsh为你的默认shell
chsh -s /bin/zsh

#重启终端就会生效

这里还有一些主题https://github.com/robbyrussell/oh-my-zsh/wiki/themes

如果你要修改zsh的默认主题

1
2
3
vi ~/.zshrc

修改ZSH_THEME为你喜欢的主题名即可

如果不想继续使用,可以使用以下命令卸载

1
uninstall_oh_my_zsh