NeverBlog::Likk::Unexistable;

見なかったことにして下さい

Git備忘録

割とすぐ忘れてしまうのでメモ。

git reflog

git reset とか、git merge の取り消し。
取り消しというかローカルリポジトリをローカルヒストリの特定のポイントまで強制的に戻してくれる君。
割とgitが使えない他人(非エンジニア)様の環境にsshしてコミットしたりするんだけど、そこでマージ衝突したり面倒臭い状況になってかつ、人の変更だから間違って消したくないよみたいな状況で使う。
運用見なおせ。と言われればそれまでなんですが。

git reflog するとHEADの変遷リストが表示されるので、戻りたいポイントを確認したのち、
そのポイントに向かってgit-resetする

git clean

ローカルリポジトリのindexに乗っかってないファイルを綺麗にしてくれる君
Untracked files に表示されるアレ。
やっぱり、他人(非エンジニア)様の環境に上がってたゴミを綺麗にするのに使ったりする

-n をつけると dry-run になるので、何が消えるかチェックしてから実行すること。
-d ででくレクトリを含む
-x でgit ignore に含まれているものも削除する
-f はgit-config にclean.requireForce を設定していても強制的に削除してくれる。

まあつまり、git clean -n -d -x で確認した後、git clean -f -d -x すること

git-patchじゃないpatch

大人の事情で、ほぼ同じ内容のgitプロジェクトAとBがありまして、
Aの変更をBに加えたい。でもリポジトリは別。というときにパッチあてたい用

用途が限定的すぎるとか、ミドルウェア作れよって声は聞こえない。

git show [revision] --no-prefix > patchfile;
でパッチつくって
patch -p0 < patchfile;
で作ったパッチをあてる。
リポジトリの歴史が双方のプロジェクトで差異が大きくなってくると大体rejectされる