17. 2月 2011 · Write a comment · Categories: Git

gitで過去のcommitを統合する方法。
直したつもりで直ってなかった時や、やむなく作業途中でcommitしたのを消した
いときに便利。
これ使えばこないだの履歴消去は不要だった気がする…

git rebase -i HEAD~5

とするとエディタが開いて、こんな一覧が出てくる。

More »

01. 2月 2011 · Write a comment · Categories: Git

正確には「履歴を消した新しいリポジトリを作る」
滅多にやらないと思うけどメモ。
forkしたリポジトリを公開する時とか?

リモートに空のリポジトリを作る

mkdir /git/new_repository.git
cd /git/new_repository.git
git init --bare --shared=true

ローカルにcloneして内容をコピー

git clone remote://git/new_repository.git
cd ~/old_repository
git checkout-index -a -f --prefix=export/
cp -r ~/old_repository/export/* ~/new_repository/
cd ~/new_repository
git add .
git commit -m 'moved to new repository'
git push origin master

master以外のブランチも移動するには

cd ~/old_repository
git checkout my_branch
git checkout-index -a -f --prefix=export/
cd ~/new_repository
rm -rf *
git branch my_branch
cp -r ~/old_repository/export/* ~/new_repository/
git add .
git commit -m 'moved to new repository'
git push origin my_branch

xdg-open [URL]

Emacsからbrowse-urlで「規定のブラウザ」を呼び出すには

(setq browse-url-browser-function 'browse-url-generic
      browse-url-generic-program "xdg-open")

何も設定してないとfirefox-binを呼び出してるっぽい?それともどっかで設定したかな…

新年の記事Visor便利!と書いたけど、Emacs上で同じようなことをするelispがあった。
shell-pop.elを使うと、Emacsのどこからでもホットキーでshell-modeあるいはansi-termを呼び出し、もう一度ホットキーを押すと閉じることができる。
ちょっとだけコマンド実行したい時に便利。
こんな感じで設定している。

;; shell-pop with ansi-term
(require 'shell-pop)
(shell-pop-set-internal-mode "ansi-term")
(shell-pop-set-internal-mode-shell shell-file-name)

(defvar ansi-term-after-hook nil)
(add-hook 'ansi-term-after-hook
(function
(lambda ()
(define-key term-raw-map "\C-z" 'shell-pop))))
(defadvice ansi-term (after ansi-term-after-advice (arg))
"run hook as after advice"
(run-hooks 'ansi-term-after-hook))
(ad-activate 'ansi-term)

(global-set-key "\C-z" 'shell-pop)

C-tに設定する人が多いようだけど(Terminalだろう)、C-tは分割フレーム間の移動に割り当てているのでC-z(Zsh)にした。
デフォルトのC-z(Minimize)は使わない、と言うかうっかり触って最小化することが多いので無効にしてるし。ああでも-nwで起動した時はScreenとぶつかって邪魔だから何か考えないと…

なお、Cocoa Emacsだとなぜか画面半分くらいで折り返されてしまって使いにくい。
font spacingの問題っぽいんだけど、解決策は今のところ不明。