はじめての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
エディタが起動するのでコメントを入力してエディタを抜けると、めでたくコミットされたメッセージが表示されました。よかったよかった。
って、ぜんぜんチュートリアルよんでないじゃん!