このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

git

リポジトリのzipアーカイブの作り方

git

git archive --format=zip HEAD -o ../myrepo.zip

Magitでrename

やり方がわからない。 http://stackoverflow.com/questions/17610365/how-to-use-git-mv-from-magit http://qiita.com/skame/items/32263bd858e6703f1e4c によると、Magitにrenameはない、とな。M-x vc-rename-file てのがあるらしい。シェルから操作すると…

magit-cheatsheet

↓はチートシート。 http://daemianmack.com/magit-cheatsheet.html 完全なマニュアルは↓ http://magit.vc/manual/magit.html

デフォルトは以外の場所にあるgitリポジトリ

git

デフォルトは、ワークツリー直下の./.git/ .gitがファイルのとき、中身を見て実際のリポジトリにアクセスする(昔のRCSもそうだったと思う)。モジュールで使っている中身の例 gitdir: ../.git/modules/git-module-test3 環境変数 GIT_DIR がある。 コマンド…

gitの名前、あるいは命名・参照システム

git

gitが扱う主たるエンティティはオブジェクトだから、本質的にオブジェクトIDさえあればエンティティにアクセスできる。オブジェクトの集まりというか容器としてリポジトリがあるが、リポジトリはオブジェクトではないのでオブジェクトIDが付いてない/使えな…

MSYS2 on "Git for Windows"

Mingw-w64/MSYS2 を入れなくても Git for Windows で間に合うみたい - 檜山正幸のキマイラ飼育記 の補足。インストーラーが設定するパスはおそらく: 何も設定しない: Gitコンソールのみ使用 $Git/cmdだけ設定しない: シェルからGitだけ使用 $Git/cmd,$Git…

Git for Windowsの構造と利用

Git/bin/ には、 サイズ140,288 git.exe サイズ32,768 bash.exe サイズ32,768 sh.exe bash, shはハードリンクじゃなくて、ほんとにコピーしている。ハードリンクを調べるには、管理者権限で、fsutil hardlink list ファイル名 とする。140K, 32Kだから非常に…

基本用語の多義性と曖昧性

コミット: ラベル 参照 コミットオブジェクト(commit型オブジェクト) tree参照 tree型オブジェクト blog型オブジェクト コミットに付随するツリー 広義のコミット=コミットオブジェクト+付随するツリー ブランチ: ラベル 参照 コミットオブジェクト AO…

非コミット要求と消去変更

git

「削除」という言葉が多義的。非コミット要求と消去変更に分ける。 非コミット要求 -- インデックスに登録しない、登録解除(remove)する。 消去変更 -- ワークツリーのファイルを消す。gitから見ると、この消去(delete)は変更の一種。オブジェクトIDとし…

difftoolでWinMergeを使う

git

書いてある↓ http://tech.nitoyon.com/ja/blog/2013/07/02/git-dir-diff/ ↑の記事に間違いがあるが、~/.gitconfig は: [diff] tool = winmerge [difftool "winmerge"] path = C:/Installed/WinMerge/WinMergeU.exe cmd = \"C:/Installed/WinMerge/WinMergeU…

P4Merge

http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools ダウンロードは、http://www.perforce.com/downloads/helix に誘導される。ここで、P4MERGE: VISUAL MERGE TOOL を探してOSを選択するとダウンロード可能となる。登録した…

合理的な差分(比較)関数を作る

git

IDX -- インデックス WT -- ワークツリー 組み合わせ、cはコミットのツリー IDX IDX → 別処理 IDX WT → 空 IDX c → --cached -R c WT WT → 別処理 WT IDX → -R WT c → -R c c IDX → --chached c WT → c c c' → c c' git diffの仕様はどうかしている。

なるほど、絵の描き方の微妙な差で解釈が変わる

bookmarkの反応は、「そんな解釈もあるのか」と意外で面白かったりするが、反省と参考になるのは、 「変態グラフを4から3に逆行してaos6に3が入らない意味がわからなくて」 というようなコメント。so-called変態グラフ http://www.chimaira.org/img3/git-hen…

「ヘッド」の代替語

git

「ブランチ」の凶悪で忌まわしき多義性は、もうGitは怖くない: 自信を持って使いたいあなたへ - 檜山正幸のキマイラ飼育記 で、まーなんとか説明した。「ヘッド」が困る。HEADはラベルとして説明した。カーソル、ニードル、あるいはカレント・ポインターだ…

inspection用のコマンド

git

もうGitは怖くない: 自信を持って使いたいあなたへ - 檜山正幸のキマイラ飼育記 に書いて、https://github.com/m-hiyama/git-quest-kit/blob/master/git-inspect-functions.nohelp.sh で使っているコマンド。いや、使ってないのもあるか。 git rev-parse # …

無視ファイル指定

次が詳しい。 http://maeharin.hatenablog.com/entry/20130206/gitignore 今まで、何でもワークツリートップの.gitignoreに書いてきたが、それはバカでした。 僕個人の好みは、git config --global core.excludesfile ~/hiyama-gitignore として、~/hiyama-g…

elパッケージ状況 超大物と小物

基本el-get.elとpackag.elを使っている。auto-installは、auto-install.el自体とomake.elくらい。auto-installって6年たっているんだ、まー状況は変わるよね。→ http://d.hatena.ne.jp/rubikitch/20091221/autoinstall他は ~/.emacs.d/site-lisp/ に放り込ん…

gistも問題あり

gistをメモに使うは問題がある。 グループ化できない。 単一gistに複数ファイルを入れると参照が不便。 URLが絶対に覚えられないし、見ても何も分からない 説明を付けないと管理しようがないが、付け忘れる。 これはやはり、他の場所から参照するためのURLを…

内部を調べる

git

gitのオブジェクト名(ハッシュ)は40桁 4bcfe98e640c8284511312660fb8709b0afa888e ---------1---------2---------3---------4詮索用のシェル関数: # git-test-functions.sh # function g_objects { gitdir=.git if [ "$1" != "" ]; then gitdir="$1" fi (…

sourcetreeの代わり?

sourcetreeの優れた点 gitとmercurialの両方サポート 左ペインにリポジトリ一覧 コミット家系図の視覚化(グラフ表示) このうち: 諦める、gitのみ orgモードを使う どうするか不明。 orgモードを使うには、 find ~ -name '.git' | tee ~/git-repos.list の…

削除をadd

gitと無関係に削除すると、ステージされない変更となる。この変更をgitに認識させるのが、git add path である点は分かりにくい。削除なのにadd?addはモノを追加するのではなくて、それに関する変更を認識させる(ステージする)ことだ。

sourcetreeの設定ファイル

sourcetreeは、.git/sourcetreeconfig(XMLファイル)を設定する。

ベア(bare)リポジトリとconfig

git自身は、「何か」でベアリポジトリの判断をして、ワークツリーを作らせないようにしている。「何か」は、configの[core]セクション内の bare = true らしい。git clone --bare でクローンして、bare = false にすれば、ワークツリーを作れる。configには…

packed-refs

.git/refs/ に代わって .git/packed-refsファイルが使われることがある。ベアリポジトリはpacked-refだった。その他の場面で使われるかどうかは不明。ディレクトリのrefs/とファイルのpacked-refsを同時に併用することは可能。

名前無しのHEADとcheckout

ワークツリーに紐付いたカレントコミットを指すカーソルがHEAD(実体は、.git/HEAD)だが、通常は、ref: refs/heads/master のような内容で、参照(.git/refs/の下に格納)を経由する。だが、直接オブジェクトIDが書いてあることもある。このとき、ヘッドは…

git updateはない

git submodule update はあるが、git updateはない。

空のワークツリー

空のワークツリーを(どんな方法であれ)作ると、HEADのファイルはすべて「ステージされずに削除された」ものとみなす。これをステージすれば、git管理下で削除が発生する。もちろん、ファイルが消えるわけではなくて、削除という変更後の状態が新しいコミッ…

git submoduleとmagitとgithub

magitのsubmodule addは、生コマンドより使いやすい。生コマンドの git submodule add, git submodule init, git submodule update, git submodule checkout を一度にやってくれる。だが、magit操作に慣れると、コマンドラインで慌てふためいたり途方に暮れ…

git submodule

何が起きるかを確認しながら操作した。まず、物理的に(フィイルシステム上で)入れ子リポジトリを作る。何もしなくても、gitは入れ子リポジトリを認識する。親をリモートへプッシュすると、子リポジトリの実体は送らないで、git-module-test2 → 27b35aabc6d…

magit操作

手動コマンドラインなら、 cd /path/to/my/repo git remote add origin https://m_hiyama@bitbucket.org/m_hiyama/git-module-test1.git git push -u origin --all # pushes up the repo and its refs for the first time git push -u origin --tags # pushe…