git-object-trainerはgit objectを勉強するためのコマンドです。
git-object-trainer
はあなたに磁器(porcelain)コマンド(add, commit, show, diff, checkout, tag, log, diff)の利用を禁止します。それらの代わりに配管(plumbing)コマンド(hash-object, cat-file, update-index, write-tree)を使うことを強制します。
git add
などを入力するとgit-object-trainer
はどのようにgit add
を配管コマンドで実現すれば良いのかを教えてくれます。
使い方
インストール
go get -u github.com/sonatard/git-object-trainer/
設定
.bash_profile
にaliasの設定を追加してください。
.bash_profile
alias git=git-object-trainer
例
$ git add .
Error: Exec following commands instead of git add
Basic way
# 1. Create . objects
$ git hash-object -w .
[FILE-HASH-STRING]
# 3. Check created object
$ git cat-file -p [FILE-HASH-STRING]
[FILE STRINGS]
# 4. Add or update file to staging area
## 4.1 add
$ git update-index --add --cacheinfo 10644 [FILE-HASH-STRING] .
## 4.2 update
$ git update-index --cacheinfo 10644 [FILE-HASH-STRING] .
# 5. Create tree
$ git write-tree
[TREE-HASH-STRING]
Remember [TREE-HASH-STRING] for commit
# 6. Check tree object
$ git cat-file -p [TREE-HASH-STRING]
[PERMISSION] blob [HASH] .
Easy way. You need not to remember [FILE-HASH-STRING]
# 1. Create tree
$ git write-tree
[TREE-HASH-STRING]
Remember [TREE-HASH-STRING] for commit
# 2. Add or update file to staging area
## 4.1 add
$ git update-index --add .
## 4.2 update
$ git update-index .
# 6. Check tree object
$ git cat-file -p [TREE-HASH-STRING]
[PERMISSION] blob [HASH] .
ジョークソフトですが、PRお待ちしています。現在引数周りの処理が適当です。
また現在packには未対応です。
ちなみに私は配管コマンドでadd
,commit
,checkout
はできるようになりました