はじめてのgit

とりあえず、なにかコミットしてみようと思って http://www8.atwiki.jp/git_jp/pub/Documentation.ja/tutorial.html を参考にやってみます。
まずは、チュートリアルにある通り、ユーザー名とメールアドレスを設定。

$ git config --global user.name akimatter
$ git config --global user.email "xxxxx@xxxxx.com"


んで、既存のコードのあるデリレクトリに移動して

$ git init
Initialized empty Git repository in .git/

次は

$ git add .

んで、とりあえずコミットしようと思って

$ git commit

したら、エディタが立ち上がって、コメントを入れるように促されるけど、対象になっているファイルには .rb~とかのバックアップも含まれてるじゃん!エディタを抜けて、こいつらをコミット対象から外さねば。svnみたいにignoreの設定ってどうやるんだろう?って検索したらこちらが見つかりました。
http://ogijun.g.hatena.ne.jp/secondlife/20080306/1204774860
なるほど。で、なにがリポジトリに追加されようとしているのかを確認するのはどうやるんだ?って思ったときに、bash_completionを入れてたのを思い出し、

$ git[tab]

とやったら、こんだけ出てきた。

$ git
Display all 140 possibilities? (y or n)
git                      git-cvsserver            git-init                 git-pack-redundant       git-sh-setup
git-add                  git-daemon               git-init-db              git-pack-refs            git-shell
git-add--interactive     git-describe             git-instaweb             git-parse-remote         git-shortlog
git-am                   git-diff                 git-log                  git-patch-id             git-show
git-annotate             git-diff-files           git-lost-found           git-peek-remote          git-show-branch
git-apply                git-diff-index           git-ls-files             git-prune                git-show-index
git-archimport           git-diff-tree            git-ls-remote            git-prune-packed         git-show-ref
git-archive              git-fast-export          git-ls-tree              git-pull                 git-stash
git-bisect               git-fast-import          git-mailinfo             git-push                 git-status
git-blame                git-fetch                git-mailsplit            git-quiltimport          git-stripspace
git-branch               git-fetch--tool          git-merge                git-read-tree            git-submodule
git-bundle               git-fetch-pack           git-merge-base           git-rebase               git-svn
git-cat-file             git-filter-branch        git-merge-file           git-rebase--interactive  git-symbolic-ref
git-check-attr           git-fmt-merge-msg        git-merge-index          git-receive-pack         git-tag
git-check-ref-format     git-for-each-ref         git-merge-octopus        git-reflog               git-tar-tree
git-checkout             git-format-patch         git-merge-one-file       git-relink               git-unpack-file
git-checkout-index       git-fsck                 git-merge-ours           git-remote               git-unpack-objects
git-cherry               git-fsck-objects         git-merge-recursive      git-repack               git-update-index
git-cherry-pick          git-gc                   git-merge-resolve        git-repo-config          git-update-ref
git-citool               git-get-tar-commit-id    git-merge-stupid         git-request-pull         git-update-server-info
git-clean                git-grep                 git-merge-subtree        git-rerere               git-upload-archive
git-clone                git-gui                  git-merge-tree           git-reset                git-upload-pack
git-commit               git-hash-object          git-mergetool            git-rev-list             git-var
git-commit-tree          git-help--browse         git-mktag                git-rev-parse            git-verify-pack
git-config               git-http-fetch           git-mktree               git-revert               git-verify-tag
git-count-objects        git-http-push            git-mv                   git-rm                   git-whatchanged
git-cvsexportcommit      git-imap-send            git-name-rev             git-send-email           git-write-tree
git-cvsimport            git-index-pack           git-pack-objects         git-send-pack            gitk

でもちょっと待て。git addとかハイフン入ってないよね?というわけで今度はスペースを入れてやってみた。

$ git [tab]
add                 checkout-index      diff                imap-send           mv                  revert              tag 
am                  cherry              fast-export         init                name-rev            rm                  var 
annotate            cherry-pick         fetch               instaweb            pull                send-email          verify-pack 
apply               citool              filter-branch       log                 push                shortlog            whatchanged 
archive             clean               format-patch        lost-found          rebase              show                
bisect              clone               fsck                ls-files            relink              show-branch         
blame               commit              gc                  ls-remote           remote              show-ref            
branch              config              get-tar-commit-id   ls-tree             repack              stash               
bundle              count-objects       grep                merge               request-pull        status              
checkout            describe            gui                 mergetool           reset               submodule       

とりあえず、lsだよね、っていうわけで

$ git ls-files

やっぱり~付きも入ってるねー。revertできないかなー?ってやってみたけど、コミットされてないからか、fatal: Cannot find ファイル名って怒られた。

$ git revert
usage: git-revert [options] <commit-ish>

    -n, --no-commit       don't automatically commit
    -e, --edit            edit the commit message
    -x                    append commit name when cherry-picking
    -r                    no-op (backward compatibility)
    -m, --mainline <n>    parent number

じゃあ、rmかな?と思って、rmの使い方を見てみる。

$ git rm
usage: git-rm [options] [--] <file>...

    -n, --dry-run         dry run
    -q, --quiet           be quiet
    --cached              only remove from the index
    -f                    override the up-to-date check
    -r                    allow recursive removal
    --ignore-unmatch      exit with a zero status even if nothing matched

実ファイルを消す必要はないので、--cachedを付ければいいのかな?

$ git-rm --cached *.*~

で、git ls-filesしてみたらちゃんとコミット対象から消えてました。

という訳でめでたく最初のgitのコミットをしてみる。

git commit

エディタが起動するのでコメントを入力してエディタを抜けると、めでたくコミットされたメッセージが表示されました。よかったよかった。

って、ぜんぜんチュートリアルよんでないじゃん!