gitで間違えてmergeしてしまったので戻す

gitで間違えたブランチをmergeしてしまったので戻す方法を調べました

まずは確認

$ git log –online

3fed172 remove unused library from package.json
edfce2f use browserify-shim and reduce size of bundle.js
0aa83a2 remove debug code
84c808c fix bug. when person is changed, id remains unchageable.
fc7f27a Merge branch 'master' of xxxxx
da285cb update deploy.sh
1bff881 permit order no duplication
a21db23 update looks
fa48617 add 30 minutes selection to parts form
178127d fix deploy to use rsync

84c808c
まで戻したかったら

$ git reset –hard 84c808c

これだけでした、あぶないあぶない

gitで削除したリモートブランチが手元では残ったとき

とある開発で、gitのリモートブランチ確認したら

$ git branch -a

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/change-db-seed
  remotes/origin/change-db-seed-activerecord
  remotes/origin/change-header-login-link
  remotes/origin/change-sidebar-cart
  remotes/origin/change-top-image
  remotes/origin/change_ruby_version
  remotes/origin/dev
  remotes/origin/hide-unused-menu
  remotes/origin/install_paypal
  remotes/origin/master
  remotes/origin/set-google-analytics
  remotes/origin/upload-image-to-amazaon-s3
  remotes/origin/webmastertool

とたくさん出てきた
ブラウザでリポジトリ見てみるとそんなにない
ブラウザでブランチ消したりしても、自動で手元も消してくれないわけで

$ git fetch origin –prune
(originは環境に合わせて)

From sample.com:sample/sample
 x [deleted]         (none)     -> origin/change-db-seed
 x [deleted]         (none)     -> origin/change-db-seed-activerecord
 x [deleted]         (none)     -> origin/change-header-login-link
 x [deleted]         (none)     -> origin/change-sidebar-cart
 x [deleted]         (none)     -> origin/change-top-image
 x [deleted]         (none)     -> origin/change_ruby_version
 x [deleted]         (none)     -> origin/dev
 x [deleted]         (none)     -> origin/hide-unused-menu
 x [deleted]         (none)     -> origin/install_paypal
 x [deleted]         (none)     -> origin/set-google-analytics
 x [deleted]         (none)     -> origin/webmastertool

と消されたリモートブランチが手元で表示されなくて、すっきりしました

pruneは〔不要なもの・余分なものを〕取り除く、削るという意味があるようです
参照: pruneの意味・用例|英辞郎 on the WEB:アルク

git pushのときにsshの鍵を指定する

git pushをするとデフォルトのssh鍵が使われますが、明示的に変えたい場合..

bitbucketはbitbucket用の鍵を登録してる、とかいう場合には

$ git remote -v
origin git@bitbucket.org:sample/sample.git (fetch)
origin git@bitbucket.org:sample/sample.git (push)

となっていれば、bitbucket.orgを~/.ssh/configに指定してあげるといいです

$ vim ~/.ssh/config

Host bitbucket.org
  Hostname bitbucket.org
  User git 
  IdentityFile ~/.ssh/bitbucket

と追記(鍵が~/.ssh/bitbucketだとした場合)

これで

$ git push origin master

とgit pushできるようになりました

vim-gitgutterを使っていて大量の変更を保存するとエラー

vimでgitの差分を左端にわかりやすく出してくれるvim-gitgutterで

git-gutter

大量の行数を変更して保存しようとするとエラーが

vim-gitgutter: exceeded maximum number of signs (configured by g:gitgutter_max_signs). 

次の

let g:gitgutter_max_signs = 500

としたら保存できるようになりました

airblade/vim-gitgutter
を見ないとですね