hack のためのネタ帳, etc,,,

バージョン管理ツール。
Linux のバージョン管理のために作成された。

ライセンス

GPL.

Tips

リポジトリの書き換え

git filter-branch 使うと commit 時の email とか時刻の書き換えが出来る(ただしリビジョン値が変わってしまう)。
参考:

オブジェクトのSHA1値

「blob ファイルサイズ\0ファイルの内容」の sha1sum を取れば良いらしい。
例えば hoge と言うファイルが git に登録された際の SHA1 値は以下のようにして求めることが出来る。
@(){ unset -f $FUNCNAME;(echo -en "blob $(stat -c%s "$1")\0";cat "$1")|sha1sum|cut -d" " -f1;};@ hoge
参考:
基本的に .git 以下を公開すれば良いらしく、通常は --bare 付けて作業ファイルなしで .git のみの状態にしておくらしい。
ただし HTTP 経由での取得に必要なファイルを更新しとく必要があるらしいので、以下のサブコマンドを実行しておく必要があるらしい。
git update-server-info
手動でやるのは面倒なので、通常は hooks/post-update 使って自動で上記のサブコマンドを実行するようにしておくと良いらしい。

参考:
commit 時に --date オプションで author date を指定出来る。
commit date は rebase 時に --committer-date-is-author-date を指定すると、author date に揃える事が出来る。

参考:
git difftool -d -x winmerge.sh
のようにすると dirdiff になるので便利らしい。

参考:
追記: 2017-11-02
ひょっとすると、2016-01-25 時点で既にそうだったのかそれ以降そうなったかが不明だが、デフォルトだと working tree 内のファイルはシンボリックリンク作るようになってるらしく、--no-simlinks オプション付けないと Cygwin から WinMerge 呼ぶ場合、上手く diff 取れない。
$ git difftool -d --no-symlinks -x winmerge.sh
以下のコマンドラインが一番詳細かな?
git log --all --graph --color --pretty=fuller --decorate=full
commit と index と working tree の比較は以下のようになる。
commandleftright
git diffindexworking tree
git diff --cachedHEADindex
git diff HEADHEADworking tree
git diff --cached HEAD~HEAD~index
左右入れ替えたいときは -R オプション。
--staged は --cached と同義。

参考:
git add したファイルを取り消すと言うか、index に入れたファイルを index から外すと言うか、stage したファイルを unstage すると言うか、
したい場合は
git reset HEAD FILENAME
もしくは
git reset -- FILENAME
FILENAME が commit 名と衝突しないなら HEAD や -- は省略可能

参考:

memo

表記意味
<commit-ish>~<n>n代前の祖先
<commit-ish>^<n>1代前の祖先のn番目

参考:
タグ

コメントをかく


ユーザーIDでかく場合はこちら

画像に記載されている文字を下のフォームに入力してください。

「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

編集にはIDが必要です