gitで異なるリポジトリをマージする

Webサイトを一からリニューアル、元のコードの履歴とマージしたかったのでやってみました

元のコードで、新しいサイトのコードのディレクトリをセットします

$ git remote add new ../newsite-code

remoteにnewという名前で、新しいサイトのコードの場所を指定しました
fetchしてmergeします

$ git fetch new
$ git merge new/master --allow-unrelated-histories

Git 2.9からは –allow-unrelated-histories が必要になりました

あとは地道にconflictを解消していけば、履歴がつながります

Git hookでctagsが作られなくなってた

Git hookでctagsを作成する – bgbgbg
でgit commitとかすると、ctagsを作り直してたはずが効かなくなってました

原因は、権限でした…

$ chmod +x ~/.git_template/hooks/*

これで次回から動作するようになります
既にgit管理されてるディレクトリ配下の .git/hooks/* の権限が足りなければ付与すると効くようになります

.gitkeepを空のディレクトリへコマンド1発セット

git管理のディレクトリで、空のディレクトリがコミットされないので、.gitkeepを入れとくと登録されていいのですが
.gitkeepを用意できるコマンド

$ find . -type d -empty -not -path './.git*' -exec touch {}/.gitkeep \;

で空のディレクトリに.gitkeepが用意されます

試す前に

$ find . -type d -empty -not -path './.git*' -exec echo {}/.gitignore \;

とechoで作られるパスを見たら確実です

gitでローカルだけ変更を無視する

gitを使っていて、無視したいファイルは.gitignoreで管理しますがこれだとリポジトリでも無視されます
ローカルだけ無視したかったので、

$ git update-index –skip-worktree ファイル名

これで無視されます
確認するときは

$ git ls-files -v
で S のマークで表示されます