コピペコードで快適生活

明日使えるソースを自分のために

gitでたまに使うコマンド集

たまにしか使わなくて、よく忘れるコマンドをメモしていく。

リモートリポジトリ系

# リモートリポジトリの変更
git remote set-url origin <新しいリポジトリURL>

# リモートリポジトリの追加
git remote add hogehoge <追加したいリポジトリURL>

# リモートリポジトリの削除
git remote rm hogehoge

# リモートリポジトリ名の変更
git remote rename <old_name> <new_name>

やりなおし系

# 間違ってaddしたやつを取り消す
git reset config/environments/development.js

# commitを打ち消し(逆向きのcommitをする)
git revert コミットのハッシュ値

# 直前のcommitをなかったことにする
# --hardオプション:コミット取り消した上でワークディレクトリの内容も書き換えたい場合に使用。
git reset --hard HEAD^

# 特定のコミットまで戻す
git reset --hard #{コミットハッシュ}

# 間違ってcommitしたものをステージ前まで戻す
git reset --soft HEAD^
git reset HEAD

# 直前のコミットの差分を見る
git diff HEAD^ HEAD

# ステージしたファイルと最新コミットの差分を見る
git diff --staged

# 直前のコミットメッセージを修正する
git commit --amend

タグ系

# タグを作る
git tag TAGNAME

# タグでブランチ切る
git checkout -b 1.6 refs/tags/v1.6

# タグ一覧
git tag

# タグの削除
git tag -d TAGNAME

# タグのpush
git push origin TAGNAME

# リモートのタグを消す
git tag -d TAGNAME
git push origin :TAGNAME

その他

# コミット間のファイル差分を出力する
# --statは編集量表示 / --name-onlyはファイル名のみ出力の意味
git diff --stat --name-only <コミットID A> <コミットID B>

# 大文字小文字の違いもファイル変更と認識させる
# Macで作業する時用
git config core.ignorecase false

# git add . で deletedが反映されない時
git add -u .

rpmでインストール&アンインストール

オプションをいつも忘れるのでメモ。

# インストール
rpm -ivh https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.1.rpm

# アンインストール
rpm -e elasticsearch

# アンインストールに問題ないか確認
# 何か問題あったらごにょごにょ出力される
rpm -e --test elasticsearch

# 詳細確認(インストールされているかどうか確認できる)
rpm -q elasticsearch

My.vimrc

随時アップデート中

"
" NeoBundle
" first setting
" curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh | sh
" vim
" :NeoBundleInstall
"
if has('vim_starting')
  set runtimepath+=~/.vim/bundle/neobundle.vim
  call neobundle#begin(expand('~/.vim/bundle/'))
  NeoBundleFetch 'Shougo/neobundle.vim'
  NeoBundle 'scrooloose/nerdtree'
  NeoBundle 'jistr/vim-nerdtree-tabs'
  NeoBundle 'Shougo/neocomplcache'
  call neobundle#end()
endif

set number
set ruler
syntax on
filetype plugin on
" filetype indent on

" 方向キー対応
" imap ^[OA <Up>
" imap ^[OB <Down>
" imap ^[OC <Right>
" imap ^[OD <Left>

" 全角記号対応
" set ambiwidth=double

" colorscheme default

"
" NERDTree
"
" nnoremap <silent><C-e> :NERDTreeToggle<CR>

"
" NEADTreeTabs
"
nnoremap <silent><C-e> :NERDTreeTabsToggle<CR>

"
" neocomplcache
"
highlight Pmenu ctermbg=4
highlight PmenuSel ctermbg=1
highlight PMenuSbar ctermbg=4

" 補完ウィンドウの設定
set completeopt=menuone

" 補完ウィンドウの設定
set completeopt=menuone

" rsenseでの自動補完機能を有効化
let g:rsenseUseOmniFunc = 1
" let g:rsenseHome = '/usr/local/lib/rsense-0.3'

" auto-ctagsを使ってファイル保存時にtagsファイルを更新
" let g:auto_ctags = 1

" 起動時に有効化
let g:neocomplcache_enable_at_startup = 1

" 大文字が入力されるまで大文字小文字の区別を無視する
let g:neocomplcache_enable_smart_case = 1

" _(アンダースコア)区切りの補完を有効化
let g:neocomplcache_enable_underbar_completion = 1

let g:neocomplcache_enable_camel_case_completion  =  1

" 最初の補完候補を選択状態にする
let g:neocomplcache_enable_auto_select = 1

" ポップアップメニューで表示される候補の数
let g:neocomplcache_max_list = 20

" シンタックスをキャッシュするときの最小文字長
let g:neocomplcache_min_syntax_length = 3

" 補完の設定
autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete
if !exists('g:neocomplete#force_omni_input_patterns')
  let g:neocomplete#force_omni_input_patterns = {}
endif
let g:neocomplete#force_omni_input_patterns.ruby = '[^.*\t]\.\w*\|\h\w*::'

if !exists('g:neocomplete#keyword_patterns')
        let g:neocomplete#keyword_patterns = {}
endif
let g:neocomplete#keyword_patterns['default'] = '\h\w*'

CSRの作成方法メモ

# genarate random text
openssl md5 * > rand.dat

# genarate private key
openssl genrsa -rand rand.dat -des3 2048 > mydomain.com.key

# generate csr
openssl req -new -key mydomain.com.key -out mydomain.com.csr

# confirm
openssl req -in mydomain.com.csr -text

# release private key
openssl rsa -in mydomain.com.key

証明書の申請なんて滅多にやらなくなったなぁ。

RubyでHTTPリクエストを送る

たまにしか使わなくてよく忘れるのでメモします。

require 'net/http'
require 'uri'

uri = URI.parse("http://kinosuke.hatenablog.jp/")

# when get request
req = Net::HTTP::Get.new("#{uri.path}?#{uri.query}")

# when post request
# req = Net::HTTP::Post.new(uri.path)
# req.set_form_data({first_name: 'taro', last_nem: 'yamada'}, ';')

# when use basic auth
# req.basic_auth('username', 'passowrd')

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = (uri.scheme == 'https') # これ無いとSSLページ接続時に「end of file reached (EOFError)」というエラー出る
res = http.request(req) # keep-alive使わない版
res = http.start {|h| h.request(req) } # keep-alive使う版。ブロックが閉じた時点でセッションを閉じる 

case res
when Net::HTTPSuccess, Net::HTTPRedirection
  # OK
  puts res.code
  puts res.body
else
  # NG
  puts res.code
  puts res.body
end